Floem: A Programming System for NIC-Accelerated Network Applications
Floem: A Programming System for NIC-Accelerated Network Applications
复制标题
DOI:
--
复制
发表时间:
2018-10
期刊:
影响因子:
--
通讯作者:
P. Phothilimthana;Ming Liu;Antoine Kaufmann;Simon Peter;Rastislav Bodík;T. Anderson
中科院分区:
文献类型:
--
作者:
P. Phothilimthana;Ming Liu;Antoine Kaufmann;Simon Peter;Rastislav Bodík;T. Anderson
Developing server applications that offload computation to a NIC accelerator is complex and laborious. Developers have to explore the design space, which includes semantic changes for different offloading strategies, as well as variations on parallelization, program-to-resource mapping, and communication strategies for program components across devices. We therefore design FLOEM -- a language, compiler, and runtime -- for programming NIC-accelerated applications. FLOEM enables offload design exploration by providing programming abstractions to assign computation to hardware resources; control mapping of logical queues to physical queues; access fields of a packet and its metadata without manually marshaling a packet; use a NIC to memoize expensive computation; and interface with an external application. The compiler infers which data must be transferred between the CPU and NIC and generates a complete cache implementation, while the runtime transparently optimizes DMA throughput. We use FLOEM to explore NIC-offloading designs of real-world applications, including a key-value store and a distributed real-time data analytics system; improve their throughput by 1.3-3.6× and by 75-96%, respectively, over a CPU-only implementation.