The Linux kernel is the backbone of Linux operating systems (OS), and is the fundamental interface between a computer's hardware and its processes.
Few days ago We share here on the blog the news of one of the changes What we can find at the launch of the Linux kernel 6.9, which is currently in development and various changes have already been made known and what we announced was that EXT2 has already passed into the category of obsolete and also that the use of the old NTFS driver will be left aside in favor of the driver developed by Paragon Software.
Now in latest news about the new features that Linux 6.9 will present to us, is that This version of the Kernel will bring a significant improvement in startup time for users managing systems with large amounts of RAM, especially those that They make use of HugeTLB pages. This results in a considerable reduction in the time it takes to initialize these pages during the system boot process.
And the change added in Linux 6.9 will allow systems with a large number of HugeTLB pages to experience a noticeable reduction at start time. For example, on 2TB systems where 1800 1GB pages are initialized, which currently they take between 1 and 2 seconds out of a total of 10 seconds, which is undoubtedly a considerable improvement in these times. Similarly, on 12TB Intel hosts where 11 776GB pages are initialized, which can take over a minute, you will see a significant reduction in these startup times.
These advances were made possible by the dedicated work of Linux developer Gang Li of Bytedance, who implemented a series of patches that went through multiple reviews to ensure efficient execution. The existing kernel infrastructure, such as padata_do_multithreaded, was used with minimal modifications to achieve these results.
Two updates in v6…
– Fixed potential bug in together_bootmem_prealloc_node
The padata_do_multithreaded implementation ensures that each
The together_bootmem_prealloc_node task handles a node. However, the API described
in the comment padata_do_multithreaded indicates that padata_do_multithreaded also
You can assign multiple nodes to a task together_bootmem_prealloc_node.To avoid possible errors from future changes to padata_do_multithreaded,
together_bootmem_prealloc_parallel is introduced to wrap the
together_bootmem_prealloc_node.
The benefits of these improvements are especially notable in environments where service availability and system uptime are critical, as in the case of hyperscalers and large organizations that manage very large servers. The reduction in startup time during reboots is of great benefit to ensure faster and more efficient uptime.
Besides that, It is also worth mentioning another change which have been included in Linux 6.9 which is a patch from an experienced Linux engineer at Intel, which introduces an improved technique for limiting memory bandwidth in x86 cache refreshes, similar to that used by Intel in RDT and AMD EPYC CPUs with the resctrl code.
The patch author mentions that:
The MBA_mbps feedback loop increases the throttling when a group is using more bandwidth than the user set in the schema file, and decreases the throttling when it is below the target.
It is worth mentioning that the new technique to limit memory bandwidth is designed to more efficiently handle workloads with non-uniform load levelss, avoiding unnecessary penalties that occurred in previous versions of the kernel.
To avoid unnecessary fluctuations in speedup in each iteration, the “delta_comp” flag is used to indicate the actual changes in bandwidth to be recorded in the next iteration in “delta_bw”. The throttling is only reduced if the current bandwidth plus delta_bw is below the user's target.
As such it is mentioned that The algorithm works well with constant bandwidth workloads, but it may fail if the workload changes just when the throttling changes. To address this, a simpler technique was implemented that calculates the potential increase in bandwidth if the throttling is reduced to the next higher level, ensuring that it remains below the user's target before throttling is reduced.
If you are interested in knowing more about it, you can consult the details in the following links:
- Hugetlb: Parallelize Hugetlb page start on startup
- Implementation of new MBA_mbps limitation technique