Big NUMA Servers May See Better Boot Performance With Linux 5.1 Kernel
A patch series queued into Linux's driver core infrastructure ahead of the 5.1 kernel cycle is set to enhance the boot performance particularly for larger NUMA servers/systems. This latest round of kernel work was another contribution to the core kernel code thanks to Intel.
Queued into driver-core-next is a set of patches by Intel's Alexander Duyck that have long been in the works and are for allowing NUMA-aware async_schedule calls. The goal is to ensure better locality of async_schedule calls that are used to provide deferred initialization and initially started to help out the NVDIMM subsystem.
When going through the patches:
- Driver core work for probing devices asynchronously instead of the driver and other concurrency improvements.
- A new queue_work_node function that schedules work on a random CPU of a requested NUMA node in helping to improve boot times for devices that are local to a specific node.
- Support for queuing on a specific NUMA node in order to improve the performance of memory initialization. This significantly helped the initialization time for persistent memory on a large server by about ten seconds (36 to 26 seconds) with 3TB of memory.
- Another patch to attach devices on a CPU local to the device node also helped the speed of initializing memory for NVDIMM with 39 seconds for a remote node down to 23 seconds with a local node.
- Utilizing async_schedule_dev within the power management core code also provides a "slight improvement" in boot performance.
- With libnvdimm when scheduling the device registration on the node local to the device also yielded an improvement as high as 25% for the per-node initialization of a system.
More details can be found via the patch comments on this now queued series waiting for the opening of the Linux 5.1 merge window in a few weeks.
Queued into driver-core-next is a set of patches by Intel's Alexander Duyck that have long been in the works and are for allowing NUMA-aware async_schedule calls. The goal is to ensure better locality of async_schedule calls that are used to provide deferred initialization and initially started to help out the NVDIMM subsystem.
When going through the patches:
- Driver core work for probing devices asynchronously instead of the driver and other concurrency improvements.
- A new queue_work_node function that schedules work on a random CPU of a requested NUMA node in helping to improve boot times for devices that are local to a specific node.
- Support for queuing on a specific NUMA node in order to improve the performance of memory initialization. This significantly helped the initialization time for persistent memory on a large server by about ten seconds (36 to 26 seconds) with 3TB of memory.
- Another patch to attach devices on a CPU local to the device node also helped the speed of initializing memory for NVDIMM with 39 seconds for a remote node down to 23 seconds with a local node.
- Utilizing async_schedule_dev within the power management core code also provides a "slight improvement" in boot performance.
- With libnvdimm when scheduling the device registration on the node local to the device also yielded an improvement as high as 25% for the per-node initialization of a system.
More details can be found via the patch comments on this now queued series waiting for the opening of the Linux 5.1 merge window in a few weeks.
8 Comments