Reconfiguring the network stack allows applications to specialize the implementations of communication libraries depending on where they run, the requests they serve, and the performance they need to provide. Specializing applications in this way is challenging because developers need to choose the libraries they use when writing a program and cannot easily change them at runtime. This paper introduces Bertha, which allows these choices to be changed at runtime without limiting developer flexibility in the choice of network and communication functions. Bertha allows applications to safely use optimized communication primitives (including ones with deployment limitations) without limiting deployability. Our evaluation shows cases where this results in 16x higher throughput and 63% lower latency than current portable approaches while imposing minimal overheads when compared to a hand-optimized versions that use deployment-specific communication primitives.
翻译:网络栈的可重构性使应用程序能够根据运行环境、所服务的请求以及需提供的性能,对通信库的实现进行特化。以这种方式特化应用程序具有挑战性,因为开发者在编写程序时必须选择所使用的库,且无法在运行时轻易更改。本文介绍Bertha,该系统允许在运行时更改这些选择,同时不限制开发者在网络和通信功能选择上的灵活性。Bertha使应用程序能够安全地使用优化的通信原语(包括具有部署限制的原语),同时不限制可部署性。我们的评估表明,与当前可移植方法相比,在某些情况下可带来16倍的吞吐量提升和63%的延迟降低,而与使用部署特定通信原语的手工优化版本相比,仅引入极小的开销。