enable multi-gen LRU by default
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Wishlist
|
Unassigned | ||
Mantic |
Fix Released
|
Wishlist
|
Unassigned |
Bug Description
[Impact]
Kernels >= 6.1 have the option to use an alternative least-recently-used (LRU) page reclaiming mechanism, called multi-gen LRU (MGLRU) [1].
In short: the kernel used to maintain two LRU lists of "touched" pages: the "active" and "inactive" list. The former contains pages thought to be likely used in the future (working set), while the latter contains pages thought to be less likely used and therefore likely to be reclaimed when needed. Pages accessed more frequently are moved to the active list, while pages accessed less frequently are moved to the inactive list.
The MGLRU generalizes this concept into multiple generations, instead of just using two lists. Pages move from older to newer generations when they are accessed and pages from older generations are reclaimed first when memory is needed. Generations age over time with new generations being created as the oldest ones are fully reclaimed.
Fedora [2] and Archlinux [3] both have MGLRU enabled by default and there are plans to enable this also in Debian and openSUSE.
We should also consider to enable this option across the board for Mantic, considering that in the future MGLRU is likely to become the default page reclaiming policy in the kernel.
[1] https:/
[2] https:/
[3] https:/
[Test case]
Apache, MariaDB, memcached, MongoDB, PostreSQL, Redis benchmarks can all show a performance improvement in terms of operations per sec switching to MGLRU.
[Fix]
Set CONFIG_
[Regression potential]
This change is going to affect the page reclaiming policy in the kernel, so a lot of workloads can be potentially affected by this change. We may experience *performance regressions* especially in those systems that are running memory intensive workloads or doing large amount of I/O (page cache being stressed and lots of page reclaiming events are happening in the system).
However, considering the benefits of this change, especially in the cloud/server-
Moreover, this option can still be adjusted at run-time via /sys/kernel/
description: | updated |
description: | updated |
description: | updated |
description: | updated |
Changed in linux (Ubuntu Mantic): | |
status: | Incomplete → Confirmed |
importance: | Undecided → Wishlist |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
Changed in linux (Ubuntu Mantic): | |
status: | Confirmed → Fix Committed |
This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:
apport-collect 2023629
and then change the status of the bug to 'Confirmed'.
If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.
This change has been made by an automated script, maintained by the Ubuntu Kernel Team.