IceBreaker-Warming Serverless Functions Better with Heterogeneity

本文的核心是用异质化服务器来实现serverless函数的keep-warm策略。主要贡献有以下

  • Fourier Transform+一元二次多项式的请求时间预测
  • 提出了一个utility score,按照得分级warmup,分数从高到低依次在high-end warmup、在low-end warmup、不warmup

基于openwhisk,开源: https://zenodo.org/record/5748667

值得学习的是,这篇文章通过在aws上租服务器来得到异质化服务器。

background

Observation

  1. 虽然low-end的执行效率比high-end低,但是low-end上的execution+warm start可能会比high-end上的execution+cold start时间短
  2. 对low-end和high-end使用不同的keep alive策略有助于降低service time和cost

Design

IceBreaker由两部分组成:

  • Function Invocation Prediction Scheme (FIP):预测invocation到来的时间
  • Placement Decision Maker (PDM):决定策略:warm在high-end上、warm在low-end上、不warm

Function Invocation Prediction Scheme

为什么之前的不行

  • The inter-arrival time between two successive function invocations can keep varying, making probability-histogram-based inter-arrival time prediction schemes unsuitable for serverless.
  • 没有预测concurrency

key design

一元二次方程拟合+傅立叶变换

  • 一元二次方程处理没有周期的部分
  • 傅立叶变化处理周期部分

\(FFT(f(t) - a*t^2 - b*t - c)\)

Placement Decision Maker

key design

utility score \(S_u = \frac{T_n + (1 - F_p) + (1 - I_s) + (1 - M_r)}{4}\)

  • True negative:FIP预测的并发小了。增加Tn
  • False positive:FIP预测的并发大了。
  • Inter-server speedup:相比于low-end的服务器,在high-end服务器上的speedup
  • Memory Footprint:内存越大,warmup越亏

如何放置?设定两个阈值,分别代表不需要warmup、在low-end上warmup、在high-end上warmup。用算出来的utility score去比

other considerations

  • 如何避免utility score的ping-pong反复横跳?给一个窗口+阈值
  • 具有大内存需求和低服务器加速率的函数被IceBreaker给予热启动的机会(没懂)
  • 可扩展的