作者:吴森梵(仰森)
在刚刚结束的 2022 杭州 · 云栖大会上,阿里云宣布函数计算 FC 开启全面降价,vCPU 单价降幅 11% ,其他的各个独立计费项最高降幅达 37.5% 。函数计算 FC 全面降价,让 Serverless 更加普惠,用户可随用随取,按量计费,用更低成本采用 Serverless 架构,但是函数计算 FC 究竟在技术上作出怎样的升级才促成本次降价发生呢?本文将全面揭秘幕后关键技术——函数规格自主选配功能。
痛点:规格灵活度低,成本浪费
随着越来越多用户逐步将更多样化的负载部署至函数计算,比如 CPU 密集型,IO 密集型等,这些负载中有的需要更大的磁盘,但函数计算却只提供了按照内存大小等比例分配算力的能力,此时为了满足需求最大的一项,用户需要设置比实际所需更大的规格,这并不利于更精确的控制成本。但由于可选的规格方案数量较少,加上较大的梯度,进一步削弱了灵活性。
为解决以上痛点,函数计算提供了规格自主选配功能,不仅放开了 CPU 和内存固定比例的限制,同时提供极小的梯度,精确地设置函数规格,让函数需要多少用多少,提升资源利用率的同时,降低用户成本。
规格自选功能如何帮助降低用户成本?
接下来以具体案例进行展示,让大家直观地了解函数规则自主选配功能的优势。
贴合实际资源用量的函数规格
下图展示了函数运行期间 vCPU 和内存的使用情况,该函数的 vCPU 用量一直低于1.5核,内存用量低于 6GB,资源浪费明显,用户需要为没使用到的资源付费。
在推出自主选配功能前,函数计算提供的内存规格有 4GB、8GB、16GB、32GB。由于该函数内存最大使用量超过 5GB,为确保函数正常执行,只能配置内存为 8GB,该内存对应的 vCPU 规格为 4 核。
现在,我们可以将函数规格调整为 1.5核 vCPU 和 6GB 内存,显著提升资源利用率的同时,成本也降低到了原来的 44%。
- 调整前:4核 8GB规格的函数,每秒费用是 4核0.000127元/(核秒) + 8GB0.0000127元/(GB秒) = 0.0006096元
- 调整后:1.5核 6GB规格的函数,每秒费用是1.5核0.000127元/(核秒)+6GB0.0000127元/(GB秒)=0.0002662元
tips:观察监控指标页面的实例指标,如果函数不能充分利用vCPU或内存资源,考虑调整函数规格以降低成本。
更细粒度 GPU 算力
在一些算法场景下,我们将模型部署到云上提供在线推理服务,假设模型需要使用 1.8GB 的显存,如果采用传统方案,购买配备 GPU 资源的云服务器,最低显存是 8GB,运行单个在线推理服务时,GPU 利用率低于 25%,存在巨大的浪费。即使通过单机运行多个在线推理服务来提高利用率,但需要额外开发请求调度功能、平衡其他类型资源的分配,增加开发和运维的复杂性,并且弹性能力几乎为 0。
相比于持有整张 GPU 卡,使用函数计算可以仅为函数分配 2GB 的显存,实现对资源利用率极致压榨的同时,也收获了强大的弹性能力,节省资源成本和运维成本。
立即体验
规格自主选配功能现已对所有用户开放,您可以在函数计算控制台的函数配置页面修改 CPU、内存、磁盘和 GPU资源的规格,但需满足如下具体规则如下:
- vCPU:在 0.05 核到 16 核的范围内,且是 0.05 核的倍数
- 内存:在 128MB 到 32GB 的范围内,且是 64MB 的倍数
- GPU:在 2GB 到 16GB 的范围内,且是 1GB 的倍数
- 磁盘:提供了 512 MB 和 10GB 两种规格,函数计算为每个实例提供 512 MB 的免费磁盘空间
如果您使用 Serverless Devs 工具,可以通过配置 function 字段的 memorySize、cpu 和 diskSize 属性实现相同的效果,其中 memorySize 和 diskSize 的单位为 MB,cpu 单位为核数。
实现技术揭秘
从上文介绍的案例,可以感受到该功能的实用性和价值,而且这并不是一个复杂的功能,但为什么现在才推出呢?
要回答这个问题,我们需要了解函数计算资源管理系统的工作原理。
高密部署
过去,函数计算使用 Docker 创建容器作为函数的运行环境,为了保证多租环境下的安全,为每个用户分配独立的虚拟机,即使只需要运行 1 个 128MB 的小函数,也需要分配一台 2 核 4G 的虚拟机,平台承担了资源浪费。由于虚拟机的规格都是固定的,为了提高平台的资源利用率,在设置函数规格时,只允许设置内存大小,并且 CPU 与内存的比例与虚拟机规格相近。
现在,函数计算在弹性裸金属服务器上通过安全容器运行用户的函数,单机运行 2000+函数实例,实现高密部署,降低平台成本。
调度优化
实现了高密部署后,还不能直接提供自主选配功能,因为这个功能会导致函数的规格种类呈现多样化,各种可能的配比会增加函数计算的调度复杂性,降低平台资源利用率。例如一台裸金属服务器上运行了少数函数实例后,就将 CPU 打满,而内存利用率仍在较低水位,但此时已经无法在该机器上创建新的函数实例。
对于这个问题,函数计算对函数进行资源画像,统计函数对每种资源的使用情况,在调度函数实例时,选择最有利于资源互补的机器创建实例。
基于多年来的技术沉淀和高效的调度策略,函数计算不断提高资源池利用率,这也让我们敢于提供自主选配功能,为用户提供更灵活的体验,更轻松地享受 Serverless 技术的红利。
点击此处,直达函数计算!