Page 100 - 《软件学报》2025年第5期
P. 100
2000 软件学报 2025 年第 36 卷第 5 期
的函数在有限的执行时间内完成特定任务, 且不容易违反超时时间限制. 此外, 这些独立的函数可以并行执行, 而
不必等待前一个操作完成, 这样可以显著缩短总体处理时间以提高性能. 另一种方法是在长时间任务的功能中插
入检查点, 以便在特定时间间隔或达到一定条件时进行检查并分解任务. 检查点用来保存任务的状态和进度, 以便
在函数执行时恢复并继续执行. 在设计长时应用时, 开发者还应考虑任务分解的合理性和性能的影响. 合理的任务
分解事根据任务的特性和依赖关系进行, 以确保拆分后子任务可以并行执行在最短时间内. 对于需要跨函数协作
的长时任务, 还需设计适当的通信和数据传递机制, 以确保子任务之间的信息交换和协调.
(2) 单独配置和学习 CPU 和内存大小: 大多数平台根据分配的内存大小等比例分配 CPU 能力, 然而不同任务
对资源需求是不同的, 而不同平台的处理能力也不尽相同. 以 CPU 密集型任务为例, 亚马逊 Lambda 能够提供更
快的执行性能, 而在内存密集型任务方面, 阿里巴巴 Function Compute 则能够获得更快的执行性能. 这表明 CPU
能力不应仅仅根据内存分配大小进行硬性配置. 如果仍然按照传统的方式分配 CPU, 就会导致一些内存密集型任
务浪费计算资源, 而在 CPU 密集型任务中则会浪费内存资源. 因此, 最好的方式是所有平台都提供单独配置 CPU
和内存大小的选项. 根据本文对部署特点的总结, 目前只有谷歌 Cloud Functions 和阿里巴巴 Function Compute 实
现了这种方式. 我们以阿里巴巴 Function Compute 为例, 使用微基准测试程序的 CPU 密集型任务, 评估了单独配
置 CPU 大小对应用性能优化的影响. 具体来说, 我们增大该任务的输入 (矩阵大小设置为 2 000), 以增加任务计算
量来更好地比较性能结果的变化. 在测试不同配置下的应用性能时, 输入大小保持不变. 在这个例子中, 该任务的
内存分配大小保持在 512 MB, 而 vCPU 大小分别设置为 0.15 核、0.25 核、0.35 核和 0.45 核. 表 9 中列出了 CPU
密集型任务在不同 vCPU 配置下的执行性能结果.
表 9 CPU 密集型任务在阿里巴巴 Function Compute 不同 vCPU 配置下的执行性能结果
vCPU (核) 0.15 0.25 0.35 0.45
执行性能 (ms) 2 186.67 1 260.82 890.29 721.05
从结果中观察到, 在保持分配内存大小不变的情况下, 提高 vCPU 的计算能力时, 该 CPU 密集型任务的执行
延迟从 2 186.67 ms 优化到 721.05 ms. 因此, 可以得出通过单独配置 CPU 大小可以有效地优化应用的性能的结论.
然而, 这些平台要求开发者自行考虑配置多大的 CPU 值, 这可能会导致资源利用率不够优化. 因此, 一个研究机会
是探究如何在最大化资源利用率、性能和成本的前提下, 为应用提供细粒度的内存和 CPU 配置选项. 一个可能的
方法是设计一个目标优化问题, 利用细粒度的内存和 CPU 配置等来构建一个优化函数. 这样的优化函数可以考虑
应用的特定需求以及平台的处理能力和资源分配策略, 从而推到处最佳的 CPU 和内存配置方案. 这样一来, 开发
者就可以在充分利用资源、提高性能的同时, 最大限度地降低成本. 此外, 该研究还可以帮助平台提供商更好地理
解用户需求, 改进其服务, 并为开发者提供更多的灵活性和可定制性.
(3) 支持 GPU 实例环境: 随着深度学习任务的迅速增长, 对 GPU 底层硬件支持的需求变得越来越迫切. 然而,
在所调研的 4 个主流商业服务器无感知平台中, 有 3 个平台都不支持部署 GPU 资源需求的函数. 这说明目前云计
算厂商在支持 GPU 函数实例方面可能存在一定的技术难题. 尽管如此, 这也是对研究者的一个研究机会. 将 GPU
设计为按需使用的服务方式将对准实时推理应用等场景的实际需求和前景. 首先, 研究者可以着眼于改进云服务
平台的基础架构, 以适应 GPU 计算的需求. 这可能涉及对硬件设施进行升级或优化, 以支持更高性能的 GPU 实
例. 其次, 研究者可以考虑设计和实施针对 GPU 实例的调度和资源管理算法. 这些算法帮助平台有效地分配和管
理 GPU 资源, 以满足不同用户和应用的需求. 例如, 可以研究智能调度策略, 根据任务的性能和优先级动态分配
GPU 实例, 以最大化资源利用率和系统性能. 此外, 研究者可以研究如何优化 GPU 函数实例的部署和运行. 这包
括研究高效的容器化解决方案, 以提供快速的函数实例启动和执行环境. 另外, 还可以研究 GPU 函数实例的资源
利用率和计算效率优化, 以提高整体性能并降低成本. 此外, 随着边缘计算的兴起, 研究者还可以探究将 GPU 实例
环境扩展到边缘设备上的可能性. 这有助于在边缘环境中进行实时的深度学习推理和处理, 提供更快速的响应和
更高的隐私保护. 在研究支持 GPU 实例环境的过程中, 还应该考虑如何解决安全性和隐私保护的问题. 因为 GPU
实例环境通常会包含敏感数据和模型, 确保数据的安全传输和处理是至关重要的.