Making kernel objects movable: A history and the way forward
Monday 1:20 p.m.–2 p.m.
Target audience: Developer
A key technology in the kernel is the ability to move objects around. This is essential for proper object locality with NUMA and also important to ensure that the kernel can defragment memory properly so that data can be place closely together and to enable to use of huge or giant pages. Over time most Linux systems today require a reboot because performance will suffer as memory becomes more and more fragmented. Servers and devices need to be periodically rebooted. The more complex our kernels become the more different sizes of objects are needed. Growth of complexity results in more opportunities for fragmentation and thus more issues with slowdowns and sluggish behavior.
The first implementation on this level was page migration in 2004 which made pages mapped into a user process movable. Then later CMA added the ability to move larger sets of kernel pages that are not on the LRU used for user space pages. This approach may be extended and the hooks used for also making slab objects movable using some callbacks. This could enable much better defragmentation and avoid the need to have to debug Linux systems regularly.
Dr. Christoph Lameter is working as a lead in research and development for an algorithmic trading company in Chicago. He is a long term contributor to the Linux kernel and maintains the slab and the per cpu subsystems. As the Principal Engineer for kernel development at SGI he pioneered the use of Linux on Supercomputers and developed the necessary kernel capabilities for extreme high performance applications