  The increasing performance requirements of modern applications place a
significant burden on software-based packet processing. Most of today's
software input/output accelerations achieve high performance at the expense of
reserving CPU resources dedicated to continuously poll the Network Interface
Card. This is specifically the case with DPDK (Data Plane Development Kit),
probably the most widely used framework for software-based packet processing
today. The approach presented in this paper, descriptively called Metronome,
has the dual goals of providing CPU utilization proportional to the load, and
allowing flexible sharing of CPU resources between I/O tasks and applications.
Metronome replaces DPDK's continuous polling with an intermittent sleep&wake
mode, and revolves around a new multi-threaded operation, which improves
service continuity. Since the proposed operation trades CPU usage with
buffering delay, we propose an analytical model devised to dynamically adapt
the sleep&wake parameters to the actual traffic load, meanwhile providing a
target average latency. Our experimental results show a significant reduction
of the CPU cycles, improvements in power usage, and robustness to CPU sharing
even when challenged with CPU-intensive applications.
