论文提出了一个针对serverless functions和chains的、以QoS为优化目标的调度器
开源 https://github.com/CU-BISON-LAB/sequoia
论文的主要贡献
- 对现在cloud providers进行QoS相关调度的测量
- 一个drop-in QoS function chain scheduler
Background and motivation
主要针对五个平台
- AWS Lambda
- IBM Cloud Functions
- Apache OpenWhisk
- Google Cloud Functions
- Azure Function Apps
发现了以下问题
- Inconsistent and incorrect concurrency limits
- Mid-chain drops:对于那些有hard concurrency limit的平台,某些情况下会出现链中间调包的情况。比如fan-in
- Burst intolerance
- HTTP prioritization:在实现上,发现AWS和Azure存在HTTP invocations的优先级比background invocations更高的情况
- inefficient resource allocation:起的VM相比于理想状况下多了太多
- concurrency collapse:并发到达limit之后下降,并且不能马上恢复。这是发生在AWS上的。
Design
整体包括三个部分
- QoS Scheduler
- producer:负责将新的function chain invocation排入QoS调度器的待定队列(PQ),并为政策框架测量进入的流量
- Queue Infrastructure
- Resource Manager:在基础设施中充当消费者,从队列中提取功能请求,在服务器池中安排function。
- Logging Framework:日志框架从实时指标流中获取状态信息
- Policy Framework:政策框架作为一个入口点来添加、删除或改变系统中的政策。
Implementation
后面的这个设计才是重点,但是不多,就两三页。