While Windows fans and Linux fans love to engage in some fiery keyboard wars often, the makers of the OS themselves understand the strengths and weaknesses of each other. There is no doubt that Microsoft too gets it and in fact, it even encourages users to try Linux, albeit using its Windows Subsystem of Linux (WSL).
Not just that, the company also often pushes upgrades that are meant to improve Linux performance or increase its functionality. For example, back in November 2022, Microsoft pushed nested virtualization or nested Hyper-V support. And in September last year, Linux boss Linus Torvalds accepted Hyper-V improvements related to AMD SEV-SNP guests and Intel TDX guests which were sent in by Microsoft"s Principal Architect at Azure Machine Learning, Wei Liu.
Torvalds has once again accepted new Hyper-V upgrades from Liu for Linux 6.12 and one of them in particular is of more interest from the performance point of view which was presented by Microsoft"s Saurabh Singh Sengar:
Pull Hyper-V updates from Wei Liu:
- Optimize boot time by concurrent execution of hv_synic_init() (Saurabh Sengar)
- Use helpers to read control registers in hv_snp_boot_ap() (Yosry Ahmed)
- Add memory allocation check in hv_fcopy_start (Zhu Jun)
The patch description explains how the parallelization of the hv_synic_init() function can improve the boot time on processors with many cores and NUMA (non-uniform memory access) nodes:
Optimize boot time by concurrent execution of hv_synic_init()
Currently on a very large system with 1780 CPUs, hv_acpi_init() takes around 3 seconds to complete. This is because of sequential synic initialization for each CPU performed by hv_synic_init().
Schedule these tasks parallelly so that each CPU executes hv_synic_init() in parallel to take full advantage of multiple CPUs.
This solution saves around 2 seconds of boot time on a 1780 CPU system, which is around 66% improvement in the existing logic.
Sengar also did a recent presentation about his findings titled "Accelerating Linux Kernel Boot-Up for Large Multi-Core Systems" which delves into the details of this patch and other optimizations that are being made. You can find it here on the Linux Plumbers Conference (LPC) website.