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 这两
                 个平台.
   85   86   87   88   89   90   91   92   93   94   95