Yeah per packet processing at 40Gbps and higher is problematic on regular kernels, OS stack and CPUs. A lot of really can be cache hits -- hundreds of nanoseconds.  Article mentions that too:<p>---
To put these numbers in context, acquiring a single uncontested lock on today&#x27;s systems takes approximately 20ns, while a non-blocking cache invalidation can cost up to 100ns, only 25x less than an I&#x2F;O operation.
---<p>It also depends if workload is throughput sensitive or latency sensitive. If it is latency, can do things like tie processes and interrupts to cores, isolate those cores, etc. For throughput can processes more than one packet at a time perhaps.<p>Then there is dpdk and even unikernels.<p>&gt;  CPU has responsibilities beyond simply servicing a device—at the very least, it must process a request and act as either a source or a sink for the data linked to it. In the case of data parallel frameworks such as Hadoop and Spark,7,17 the CPU<p>That&#x27;s why you get more CPUs and explicitly isolate them if you can. But now depending on how they share data with other CPUs there will be invalidated cache lines so will pay that way as well.<p>In general if you run on RHEL &#x2F; CentOS ( a lot banks, military and enterprise deployments do ), there is this helpful guide as an overview:<p><a href="https:&#x2F;&#x2F;access.redhat.com&#x2F;documentation&#x2F;en-US&#x2F;Red_Hat_Enterprise_Linux&#x2F;7&#x2F;html&#x2F;Performance_Tuning_Guide&#x2F;sect-Red_Hat_Enterprise_Linux-Performance_Tuning_Guide-CPU-Configuration_suggestions.html" rel="nofollow">https:&#x2F;&#x2F;access.redhat.com&#x2F;documentation&#x2F;en-US&#x2F;Red_Hat_Enterp...</a>