Sequoia: enabling quality-of-service in serverless computing

论文提出了一个针对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

后面的这个设计才是重点,但是不多,就两三页。