SPRIGHT: extracting the server from serverless computing! high-performance eBPF-based event-driven, shared-memory processing
SPRIGHT: extracting the server from serverless computing! high-performance eBPF-based event-driven, shared-memory processing
复制标题
DOI:
10.1145/3544216.3544259
复制
发表时间:
2022-08
期刊:
影响因子:
--
通讯作者:
Shixiong Qi;Leslie Monis;Ziteng Zeng;Ian Wang;K. Ramakrishnan
中科院分区:
文献类型:
--
作者:
Shixiong Qi;Leslie Monis;Ziteng Zeng;Ian Wang;K. Ramakrishnan
Serverless computing promises an efficient, low-cost compute capability in cloud environments. However, existing solutions, epitomized by open-source platforms such as Knative, include heavyweight components that undermine this goal of serverless computing. Additionally, such serverless platforms lack dataplane optimizations to achieve efficient, high-performance function chains that facilitate the popular microservices development paradigm. Their use of unnecessarily complex and duplicate capabilities for building function chains severely degrades performance. 'Cold-start' latency is another deterrent. We describe SPRIGHT, a lightweight, high-performance, responsive serverless framework. SPRIGHT exploits shared memory processing and dramatically improves the scalability of the dataplane by avoiding unnecessary protocol processing and serialization-deserialization overheads. SPRIGHT extensively leverages event-driven processing with the extended Berkeley Packet Filter (eBPF). We creatively use eBPF's socket message mechanism to support shared memory processing, with overheads being strictly load-proportional. Compared to constantly-running, polling-based DPDK, SPRIGHT achieves the same dataplane performance with 10× less CPU usage under realistic workloads. Additionally, eBPF benefits SPRIGHT, by replacing heavyweight serverless components, allowing us to keep functions 'warm' with negligible penalty. Our preliminary experimental results show that SPRIGHT achieves an order of magnitude improvement in throughput and latency compared to Knative, while substantially reducing CPU usage, and obviates the need for 'cold-start'.