01.
目前已有众多工作致力于优化函数沙盒本身的启动延迟,通常可控制在 10-100 毫秒的范围内。但在实际的 FaaS 环境中,启动一个函数实例不仅涉及沙盒的创建,同时还需经过 FaaS 平台的控制平面进行实例的调度,再由调度的目标节点启动沙盒。当集控制平面需要同时调度多个实例时,调度延迟会成为主要瓶颈,使得启动函数实例的端到端延迟高出一个或多个数量级。其原因在于现有 FaaS 平台是基于 Kubernetes 这样的通用集群管理器进行构建的,后者引入了对 FaaS 而言非必要的抽象和机制,从而限制了 FaaS 平台面对大规模函数负载的可扩展性。
图 1: Knative 系统架构
图 2: Kubernetes 在创建函数实例时的控制平面延迟分析
图 3: 服务器无感知计算负载的高波动性和突发性
02.
图 5: 函数实例启动的端到端延迟
图 6: 在 Azure 数据集上的端到端性能
03.