Funky: Cloud-Native FPGA Virtualization and Orchestration
Atsushi Koshiba, Charalampos Mainas, Pramod Bhatotia
TL;DR
This work tackles the lack of cloud-native FPGA orchestration by introducing Funky, a full-stack solution that unifies FPGA virtualization, state management, and CRI/OCI-compatible orchestration. It leverages a unikernel-based FPGA sandbox (Funky unikernel) together with FunkyCL for OpenCL portability and a hypervisor-driven state management layer to support preemption and checkpointing, all orchestrated through extended CRI/OCI-compatible components. Implemented on a four-node AMD Vitis platform with Alveo U50 FPGAs, Funky achieves an average virtualization overhead of 7.4% relative to native execution and creates OCI images 28.7x smaller than vendor containers, while enabling porting of 23 OpenCL applications with only 3.4% source-code changes. Large-scale evaluation with Google Borg traces demonstrates Funky’s scalability, fault tolerance, and improved scheduling efficiency, indicating its potential to enable scalable, isolated FPGA sharing in cloud-native environments.
Abstract
The adoption of FPGAs in cloud-native environments is facing impediments due to FPGA limitations and CPU-oriented design of orchestrators, as they lack virtualization, isolation, and preemption support for FPGAs. Consequently, cloud providers offer no orchestration services for FPGAs, leading to low scalability, flexibility, and resiliency. This paper presents Funky, a full-stack FPGA-aware orchestration engine for cloud-native applications. Funky offers primary orchestration services for FPGA workloads to achieve high performance, utilization, scalability, and fault tolerance, accomplished by three contributions: (1) FPGA virtualization for lightweight sandboxes, (2) FPGA state management enabling task preemption and checkpointing, and (3) FPGA-aware orchestration components following the industry-standard CRI/OCI specifications. We implement and evaluate Funky using four x86 servers with Alveo U50 FPGA cards. Our evaluation highlights that Funky allows us to port 23 OpenCL applications from the Xilinx Vitis and Rosetta benchmark suites by modifying 3.4% of the source code while keeping the OCI image sizes 28.7 times smaller than AMD's FPGA-accessible Docker containers. In addition, Funky incurs only 7.4% performance overheads compared to native execution, while providing virtualization support with strong hypervisor-enforced isolation and cloud-native orchestration for a set of distributed FPGAs. Lastly, we evaluate Funky's orchestration services in a large-scale cluster using Google production traces, showing its scalability, fault tolerance, and scheduling efficiency.
