Kernel performance tweaks
The Linux kernel operates at the most fundamental (hardware) level, and it is responsible for providing the many software abstractions that modern Linux systems rely upon. Fundamentally, the job of the kernel is to provide all of these conveniences while keeping out of the way as much as possible. Time spent by the kernel is time that cannot be spent performing useful work within application code, even if that application is the latest version of Angry Birds. The kernel is also intended to run on a wide range of different hardware systems ‘out of the box’ – from the smallest embedded device, to the largest supercomputer. As such, the many algorithms it uses have been heavily optimised over the past two decades, but there are limits.
It’s a fact of life that a system used predominantly as a desktop, for example, has different needs from (say) a system used to process real-time stock trade transactions, or to serve webpages to millions of social media consumers. These different use cases have lead to various flexibility, especially in the scheduling algorithms used within the kernel to determine which task (user application process) should receive time (quantum) on the CPU(s), or which I/O blocks should be written out to disk next.
rest here