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 根据配置的内存量
   78   79   80   81   82   83   84   85   86   87   88