In the Linux 5.15 merge window, a set of Kernfs performance improvement patches are merged through the driver core PR, which can solve the problem of slow booting of the Linux kernel for large IBM servers.
In the Linux kernel, kernfs is a set of functions that contains functions required to create pseudo file systems used internally by various kernel subsystems. It provides a set of virtual files by exporting the information of hardware devices and related device drivers from the device model of the kernel to the user space, which becomes an independent and reusable function, so other kernel subsystems can be implemented your own pseudo-file system more consistently.
Previously, a large IBM Power system with “hundreds of CPUs and 64TB RAM” took more than 30 minutes to start the Linux kernel, and additional kernel parameters were required to avoid the kernel from timing out at startup. The reason for this problem lies in multiple paths searches for non-existent files and lock competition in the VFS code. IBM Power divides 64TB of system memory into 256MB local blocks, resulting in a large number of sysfs node creation.
This change in the Linux 5.15 involves switching the Kernfs mutexes to use read-write semaphores to allow parallel node searches, improve path resolution, and use VFS caching. Through these optimizations, the startup time of large IBM systems can be shortened to less than 5 minutes.