So far, we have evaluated affinity-based scheduling of protocol
processing which does not include data-touching operations (e.g.,
copying, checksumming), motivated by the fact that protocol processing
time in many real environments is dominated by “nondata-
touching’’ operations with generally fixed per-packet overheads
[lo] (see [19, 221 for discussion). Yet there are arguments
for explicitly incorporating data-copying overheads. Most implementations
copy packet data between user and kernel space.
The copy incurs cache misses in the common case, and is therefore
expensive. (The data being copied is always uncached on
the receive side, since the packet arrives in memory via device
DMA. Whether or not it is cached on the send-side depends on the
application caching behavior.) Further, the copy perturbs cache:
state-impacting the caching behavior and execution time of protocol
code