  This paper studies three fundamental aspects of an OS that impact the
performance and energy efficiency of network processing: 1) batching, 2)
processor energy settings, and 3) the logic and instructions of the OS
networking paths. A network device's interrupt delay feature is used to induce
batching and processor frequency is manipulated to control the speed of
instruction execution. A baremetal library OS is used to explore OS path
specialization. This study shows how careful use of batching and interrupt
delay results in 2X energy and performance improvements across different
workloads. Surprisingly, we find polling can be made energy efficient and can
result in gains up to 11X over baseline Linux. We developed a methodology and a
set of tools to collect system data in order to understand how energy is
impacted at a fine-grained granularity. This paper identifies a number of other
novel findings that have implications in OS design for networked applications
and suggests a path forward to consider energy as a focal point of systems
research.
