Page 83 - 《软件学报》2025年第5期
P. 83
温金凤 等: 服务器无感知平台性能度量研究 1983
3.2 部署特点
对于应用部署特点, 我们在表 4 中总结部署包大小、内存分配大小、CPU 分配、GPU 支持性、超时时间、
实例磁盘大小和支持的区域数量.
表 4 不同服务器无感知平台的部署特点
特点 亚马逊Lambda 谷歌Cloud Functions 微软Azure Functions 阿里巴巴Function Compute
50 MB (已压缩) 100 MB (已压缩)
部署包大小 1 GB (已压缩) 500 MB (已压缩)
250 MB (未压缩) 500 MB (未压缩)
128 MB、256 MB、512 MB、
128–10 240 MB, 以 不需要分配, 内存消耗范围 128–32 768 MB, 以64 MB
内存分配大小 1 024 MB、2 048 MB、
每1 MB为增量 128–1 536 MB之间 的倍数进行递增
4 096 MB、8 192 MB
根据配置的内存量 根据配置的内存量 根据配置的内存量
CPU分配 未知
按比例自动分配 按比例自动或手动分配 按比例自动或手动分配
GPU支持性 不支持 不支持 不支持 支持
超时时间 (s) 900 540 600 86 400
实例磁盘大小 512–10 240 MB之间 未知 未知 512 MB或10 GB
支持区域数量 (个) 22 29 11 20
在应用部署包大小方面, 亚马逊 Lambda 允许部署压缩包大小在 50 MB 以内的应用, 或者未压缩包大小为
250 MB 以内的应用. 相比之下, 谷歌 Cloud Functions 允许更大的部署包大小, 支持 100 MB 以内的压缩包应用和
500 MB 以内的未压缩包应用. 对于微软 Azure Functions, 先前工作 [20,50] 提到该平台没有部署包大小限制. 然而, 根
据现在的调研结果, 该平台上明确提到开发者需要使用.zip 格式的压缩包文件进行部署, 且支持的最大大小为 1 GB.
可能的原因是, 限制部署包的大小可以提供一种可靠的方式, 使平台能够确定资源分配策略和自动伸缩能力, 以满
足需求的变化. 对于阿里巴巴 Function Compute, 先前工作 [20] 提到该平台最高支持 100 MB 的压缩部署包大小. 然
而, 目前阿里巴巴 Function Compute 允许使用压缩为.zip 或.jar 格式的部署包, 大小上限为 500 MB. 总结来说, 对
部署包大小进行限制可能帮助服务器无感知平台更好地管理资源、分配计算资源和维持可靠性能, 甚至可以帮助
平台预测和处理不同应用的资源需求. 另外, 不同平台制定部署包大小的约束可能也是为了促进平台的自动伸缩
策略. 然而, 限制部署包大小可能要求开发者在部署时严格管理依赖项. 如果依赖项太大, 可能会导致部署包大小
超出允许的范围. 目前, 各个平台在保证维持正常功能的同时尽量提高可部署的代码大小, 让更多的任务类型能够
成功部署并执行在服务器无感知平台上.
关于应用可使用的内存大小, 亚马逊 Lambda 允许配置 128–10 240 MB 之间的数字, 并且是以 1 MB 粒度进行
递增和修改. 然而, 在对运行时性能进行探究的实验中, 我们发现实际内存配置大小不能超过 3 008 MB, 这说明官
方文档与实际开发可能存在不一致, 令开发者感到困惑. 谷歌 Cloud Functions 允许开发者配置固定大小的内存, 包
括 128 MB、256 MB、512 MB、1 024 MB、2 048 MB、4 096 MB 和 8 192 MB. 然而, 之前工作报道该平台允许
的内存配置大小不包括 8 192 MB. 阿里巴巴 Function Compute 允许开发者配置 128 MB 到 32 GB 的内存大小, 但
递增的粒度是以 64 的倍数进行. 然而, 我们先前的工作总结阿里巴巴函数计算的配置上限是 3 072 MB. 提高可分
配的内存大小可以帮助开发者完成更多的任务类型, 同时加快任务执行速度. 与这 3 个平台不同, 微软 Azure
Functions 根据实际内存消耗来执行函数, 不支持开发者自定义配置内存大小, 但运行在该平台的函数最多能消耗
1 536 MB. 不同平台对内存大小的限制和配置方式反映了它们在资源分配和控制方面的策略, 但这些都是为了更
好地管理资源以满足不同应用的需求. 谷歌 Cloud Functions 选择使用特定的内存大小选项简化了配置选择的复杂
性. 亚马逊 Lambda 或阿里巴巴 Function Compute 提供了递增粒度, 如 1 MB 或 64 MB 的倍数, 这也给开发者在内
存大小选择方面提供了灵活性. 微软 Azure Functions 采用根据实际内存消耗来执行函数策略, 不支持手动配置内
存大小, 这可能也对需求更多内存控制的开发者构成限制.
在 CPU 分配方面, 亚马逊的 Lambda、谷歌 Cloud Functions 和阿里巴巴 Function Compute 根据配置的内存量