Page 90 - 《软件学报》2025年第5期
P. 90
1990 软件学报 2025 年第 36 卷第 5 期
阿里巴巴 阿里巴巴 阿里巴巴
20 000 128 MB 20 000 256 MB 20 000 512 MB
冷启动性能 (ms) 15 000 15 000 15 000
10 000
10 000
10 000
5 000
0 5 000 0 5 000 0
Python JavaScript Java Python JavaScript Java Python JavaScript Java
阿里巴巴 阿里巴巴
20 000 1 024 MB 20 000 2 048 MB
冷启动性能 (ms) 15 000 15 000
10 000
10 000
5 000
0 5 000 0
Python JavaScript Java Python JavaScript Java
图 6 阿里巴巴 Function Compute 在不同内存分配下执行不同编程语言编写的应用产生的冷启动延迟
发现: 每个服务器无感知平台在执行不同编程语言的应用时, 冷启动性能表现不一致. 亚马逊 Lambda 和谷歌
Cloud Functions 在执行 Python 和 JavaScript 应用时的冷启动延迟低于执行 Java 应用时的冷启动延迟, 而且这两
个平台的内存分配大小对冷启动延迟没有明显影响. 与此不同, 微软 Azure Functions 执行 Java 应用时会产生更低
的冷启动延迟, 而阿里巴巴 Function Compute 在执行 JavaScript 应用时产生更低的冷启动延迟, 执行 Python 应用
时产生最高的冷启动延迟, 且该延迟受内存分配大小的影响.
(2) 平台间冷启动延迟比较: 为了直观地比较不同平台对于特定编程语言应用的冷启动延迟大小, 本文进行跨
平台的冷启动延迟比较. 探究了每种编程语言在 4 个平台上在特定内存下的冷启动延迟. 考虑到微软 Azure
Functions 不需要提前进行内存分配, 因此在进行特定内存大的比较时, 我们使用对应编程语言应用在微软 Azure
Functions 上产生的冷启动延迟与其他平台进行比较.
对于 Python 应用, 根据图 7 的结果, 亚马逊 Lambda 在所有测试的内存大小下都表现出比其他平台更低的冷
启动延迟. 具体来说, 在表 6 中, Python 应用在内存 128 MB 下的中位数性能为 373.32 ms, 在内存 256 MB 下为
380.33 ms, 在内存 512 MB 下为 377.87 ms, 在 1 024 MB 下为 373.78 ms, 以及在内存 2 048 MB 下为 379.51 ms. 进
一步观察图 7 的性能分布, 可以看出亚马逊 Lambda 所产生的所有性能数据比其他平台更为集中. 对于其他 3 个
平台, 可以观察到在不同内存大小下, 阿里巴巴 Function Compute 的性能表现整体上优于谷歌 Cloud Functions 和
微软 Azure Functions 的结果. 因此, 如果开发者希望为 Python 应用提供较低的冷启动延迟和稳定的性能分布, 他
们可以优先考虑使用亚马逊 Lambda 和阿里巴巴 Function Compute 这两个平台.
对于 JavaScript 应用, 根据图 8 的结果可以得出结论, 亚马逊 Lambda 和阿里巴巴 Function Compute 在所测
试的内存大小下, 产生的冷启动延迟都比谷歌 Cloud Functions 和微软 Azure Functions 要低, 而且它们产生的延
迟分布也相对集中. 具体来说, 表 6 展示亚马逊 Lambda 在不同内存下执行 JavaScript 应用产生的性能中位数
介于 424.96–432.01 ms 之间, 而阿里巴巴 Function Compute 产生的性能中位数介于 1 147.31–1 165.28 ms 之间.
与此相比, 微软 Azure Functions 的性能结果中位数是 2 385.69 ms, 谷歌 Cloud Functions 的中位数结果在
2 581.95–2 733.99 ms 之间. 这些结果表明亚马逊 Lambda 的冷启动延迟比阿里巴巴 Function Compute 更小, 而
谷歌 Cloud Functions 的冷启动延迟比微软 Azure Functions 更大. 因此, 如果开发者希望为 JavaScript 应用提供
较低的冷启动延迟和稳定的性能结果, 他们可以优先选择亚马逊 Lambda 和阿里巴巴 Function Compute 这两
个平台.