State-of-the-art approaches to design, develop and optimize software packet-processing programs are based on static compilation: the compiler's input is a description of the forwarding plane semantics and the output is a binary that can accommodate any control plane configuration or input traffic. In this paper, we demonstrate that tracking control plane actions and packet-level traffic dynamics at run time opens up new opportunities for code specialization. We present Morpheus, a system working alongside static compilers that continuously optimizes the targeted networking code. We introduce a number of new techniques, from static code analysis to adaptive code instrumentation, and we implement a toolbox of domain specific optimizations that are not restricted to a specific data plane framework or programming language. We apply Morpheus to several eBPF and DPDK programs including Katran, Facebook's production-grade load balancer. We compare Morpheus against state-of-the-art optimization frameworks and show that it can bring up to 2x throughput improvement, while halving the 99th percentile latency.
翻译:设计、开发和优化软件包处理程序的最先进方法基于静态汇编: 汇编器的投入是对转发平面语义的描述, 输出是一个可以容纳任何控制平面配置或输入流量的二进制。 在本文中, 我们证明跟踪控制平面动作和连续运行的包级交通动态为代码专业化开辟了新的机会 。 我们展示了Morpheus, 这个系统与静态编译器一起工作, 不断优化目标网络代码。 我们引入了一些新技术, 从静态代码分析到适应性代码仪表, 并且我们实施了一个不受特定数据平面框架或编程语言限制的具体域优化工具箱 。 我们把 Morpheus 应用到几个 eBPF 和 DPDK 程序, 包括 Facebook 的生产级负载平衡器 Katran 。 我们比较了 Morpheus 和 最先进的优化框架, 并显示它能够带来2x 吞吐量改进, 同时将第99 百分拉特。