Page 84 - 《软件学报》2025年第5期
P. 84
1984 软件学报 2025 年第 36 卷第 5 期
按比例分配 CPU 处理能力. 实际的 CPU 分配量可能在不同的函数调用中略有不同, 这可能是因为平台采用了一
种灵活的资源分配方式, 根据函数的需求动态分配资源. 但大多数平台都可以根据分配的内存大小自动确定一定
CPU 分配量. 具体来说, 亚马逊 Lambda 在内存大小约为 1 769 MB 时得到一个 vCPU 的处理能力. 谷歌 Cloud
Functions 在内存大小约为 2 048 MB 时得到一个 vCPU. 阿里巴巴 Function Compute 在内存大小约为 1 024 MB 时
得到一个 vCPU. 注意, vCPU 表示虚拟机实例可用的 CPU 计算资源的一种抽象. 不同平台根据内存分配得到的
vCPU 能力不同的原因可能是各个平台采用不同的资源分配策略和性能标准. 具体来说, 不同的平台使用不同的
硬件架构和虚拟化技术, 这些性能特性可能会影响内存和 CPU 分配的方式. 因此, 每个平台可能会根据其硬件和
虚拟化技术来确定资源分配策略. 另外, 每个平台通常需要进行大量的性能测试和优化, 以确定在特定内存配置下
分配的 vCPU 大小可以提供最佳性能, 这些测试结果可能也会影响平台的资源分配策略. 不同于先前工作的描述,
谷歌 Cloud Functions 和阿里巴巴 Function Compute 已经允许开发者手动修改 CPU 大小以适应任务独特的需求,
这提高了配置的灵活性. 微软 Azure Functions 的 CPU 分配策略尚不清楚. CPU 分配策略反映了不同平台的资源
管理和性能调优策略. 开发者需要了解 CPU 配置选项, 并根据需求选择 CPU 大小.
对于 GPU 支持情况, 我们先前的工作报道 4 个平台都暂不支持 GPU. 在我们调研期间, 我们观察到亚马逊
Lambda、谷歌 Cloud Functions 和微软 Azure Functions 目前仍然不支持为函数启动 GPU 实例, 而阿里巴巴
Function Compute 目前允许开发者部署 GPU 类型的函数, 该平台默认通过按量 GPU 实例来提供实时应用场景的
执行环境. 具体来说, 阿里巴巴 Function Compute 提供了一种灵活的方式来利用 GPU 计算资源, 开发者只需根据
实际需求选择合适的 GPU 型号和计算资源规模, 即可随时启动和停止 GPU 计算, 无需事先规划资源使用情况. 该
平台提供 Ampere 以及 Turing 架构的 GPU 实例, 包括 Tesla 系列 T4 卡型和 Ampere 系列 A10 卡型的实例规格 [51] .
开发者可以根据业务需求选择不同配置的 GPU 实例. 而且, 阿里巴巴 Function Compute 上的 GPU 实例的使用仅
支持通过容器镜像方式部署的函数. 这样一个变化预示着未来的服务器无感知计算将逐渐支持 GPU 资源以用于
函数执行, 带来更强大的计算能力. GPU 对于某些工作负载 (如机器学习、图像处理、科学计算等) 可以提供显著
的性能优势. 允许函数使用 GPU 可以增强其计算能力, 使其能够更高效地处理复杂任务. 但是 GPU 资源通常比普
通的 CPU 资源更昂贵, 开发者需要权衡性能需求和成本, 以确保不会产生不必要的费用. 而且, 不是所有应用都能
够受益于 GPU 加速, 一些任务可能更适合在 CPU 上执行.
对于执行的超时时间限制, 与先前工作相同的是, 亚马逊 Lambda 允许执行时间不超过 900 s (15 min) 的任务.
谷歌 Cloud Functions 和微软 Azure Functions 执行事件驱动型函数的超时时长上限分别是为 540 s (9 min) 和 600 s
(10 min). 然而, 我们调研了解到目前阿里巴巴 Function Compute 的函数执行超时时间从 900 s (15 min) 更新为默认
为 60 s, 但最长可达 86 400 s. 限制函数的执行时间本质上有助于平台管理资源, 避免因执行时间过长而占用大量的
计算资源, 导致并发和资源竞争问题, 从而影响其他函数的执行. 然而, 增加函数超时时间也为长时任务的执行提供
了机会, 例如批处理、数据分析或大规模计算任务, 并使平台更适合这些长时间运行的应用场景.
关于平台提供的实例磁盘大小, 不同平台对本地存储空间大小有不同的限制. 亚马逊 Lambda 允许开发者配
置 512 MB 与 10 240 MB 之间的值, 以 1 MB 为递增粒度. 比较先前工作 [20] 的总结, 亚马逊 Lambda 目前支持了比
原来固定 512 MB 大小更大的存储空间. 这样可以提高函数在执行期间的本地数据存储能力. 然而, 谷歌 Cloud
Functions 和微软 Azure Functions 提供的实例磁盘大小尚不清楚. 对于阿里巴巴 Function Compute, 先前工作提到
该平台只支持 512 MB 磁盘大小, 但目前该平台对于函数实例磁盘大小有两种选择: 一种是默认的 512 MB, 不计
费; 另一种是可选择的 10 GB, 根据业务情况进行选择, 是计费的. 随着服务器无感知计算编程模式的发展, 越来越
多的任务选择在这些平台上开发和执行. 这些任务可能涉及更复杂的数据处理、临时存储需求或大规模计算, 因
此, 需要更多的磁盘容量来满足其需求. 另外, 亚马逊 Lambda 和阿里巴巴 Function Compute 增加了磁盘大小的配
置选项, 以提供更大的灵活性. 然而, 即使提供更大的磁盘容量, 仍然会受到物理存储资源的限制. 因此, 如果需要
大量本地存储, 可能需要考虑其他存储解决方案 (如云存储).
对于支持的区域, 亚马逊 Lambda 的函数可以在 22 个特定的区域进行部署, 包括美国、欧洲、亚太地区、加
拿大等. 谷歌 Cloud Functions 允许在 29 个区域部署函数, 包括欧洲、亚太地区、美国和加拿大等. 然而, 微软