...

Linux Kernel 6.x: Relevant New Features for Hosting Servers

The Linux 6.x kernel includes features and enhanced interfaces that Memory Pressure, CPU Latencies, and Process Limits can affect hosting servers. Not all of the mechanisms discussed were first introduced in version 6.x: Landlock, for example, dates back to Linux 5.13 and has been extended across subsequent ABI versions. Furthermore, the decisive factor is not solely uname -r. The distribution, kernel configuration, cgroup setup, and actual load determine what is available and appropriate. Therefore, evaluate Multi-Gen LRU, EEVDF, Landlock, and other features as tools for specific operational scenarios, not as a one-size-fits-all approach to kernel tuning.

Correctly Classify the Kernel Stage

The term “Linux 6.x” refers to a collection of major releases, not a single, uniform feature set. The “mainline” refers to the main branch maintained by Linus Torvalds: After the merge window, release candidates typically follow until the final major release. This is distinct from the Stable and LTS branches, which continue to maintain released kernels with selected fixes. Distribution kernels, in turn, follow their own package versions, support commitments, and integration decisions.

Hosting servers, in particular, are Backports Crucially: A distribution can incorporate individual features, driver improvements, or security fixes into an older, long-term-supported kernel. Conversely, it can disable features, modify patches, or restrict them through configuration. Therefore, neither the full scope of functionality nor the specific operational impact can be deduced from a version number alone.

The command uname -r Identifies the current release string and serves as a useful starting point for inventory and package verification. However, it does not prove that a function is compiled in, enabled at runtime, or accessible to an application. Even a new kernel version does not replace a review of the configuration and documentation provided by the distributor.

To make a reliable assessment, you should examine several levels: distribution and package status, kernel configuration, boot parameters, and existing runtime interfaces. In addition, there are hardware, firmware, and drivers—for example, in storage or virtualization. Finally, the application in use must actually utilize an interface; an existing kernel function does not automatically modify a web server.

This article therefore does not provide a complete release history. It focuses on features relevant to the operation of today's 6.x kernels. Not all of these features were first introduced in the 6.x series; what matters are the feature set available in the specific kernel, potential extensions, and the effects on memory behavior, CPU contention, process isolation, and maintenance.

Four Hosting Service Areas

Four operational areas are particularly relevant for hosting servers: storage pressure, CPU contention, additional process isolation, and maintenance. The goal here is not to enable as many kernel features as possible, but to use the right tools for a specific problem. PHP-FPM pools, databases, caches, batch jobs, and specialized workers all have different requirements that cannot be determined based on the kernel version alone.

cgroup v2 This is a cross-cutting issue, but not a new feature of the 6.x series. The hierarchy organizes memory and CPU resources for services, containers, or customer groups. Which controllers are available and enabled in a subhierarchy must be checked at the respective cgroup-v2 mount. A dedicated web server therefore requires a different assessment than a container or VM host.

Check kernel functions and their availability in a hosting environment
FunctionEarliest stage treatedPrerequisitesSecure ExamImportant Boundary
Multi-Gen LRULinux 6.1CONFIG_LRU_GEN; Check activation status separatelyCheck the readability and contents of /sys/kernel/mm/lru_gen/enabledA set bit does not guarantee any advantage for the specific load profile.
EEVDFMigration from Linux 6.6 according to the current kernel documentationAppropriate scheduler function state of the distribution kernelSynchronize the kernel package and distribution documentation; compare load metricsNo activation switch and no substitute for CPU weights or quotas.
LandlockLinux 5.13; expanded in 6.x to include additional ABI versionsCONFIG_SECURITY_LANDLOCK, inclusion in CONFIG_LSM or boot parameters, and support by the applicationQuery ABI using `landlock_create_ruleset` and `LANDLOCK_CREATE_RULESET_VERSION`The fact that kernel support is available does not mean that a service uses Landlock.
DAMON_RECLAIMAdvanced option in the supported 6.x kernelsCONFIG_DAMON_RECLAIM=y and the existing module parameter interfaceCheck whether /sys/module/damon_reclaim/parameters/enabled is readable without changing the valueThe existence of an interface does not constitute a recommendation to activate or adopt documented default values.

The table deliberately separates build configuration, boot activation, runtime interface, and actual usage. A feature may be included in the kernel but be disabled or irrelevant to the application. Similarly, distributions may backport features. Therefore, evaluate changes based on load history, cgroup setup, hardware, and application metrics rather than on the highest available version number.

Memory Pressure and Page Reclaim

Linux tends to use free memory as a file cache. Therefore, a high amount of RAM usage is not, in and of itself, an error, nor is it evidence of memory waste: cached file pages can be reclaimed as needed. For diagnostic purposes, it is more important to consider the development and consequences of the load, such as response times, swap activity, error logs, and process terminations.

Under storage pressure, it determines Page Reclaim , which pages can be removed from the cache or, if necessary, swapped out. The kernel can perform this task asynchronously via kswapd handle. If a process must reclaim pages itself in response to a memory request, the kernel documentation refers to this as "direct reclaim"; this can impact the requesting process and, consequently, observed latencies.

Warning signs usually manifest as a combination of factors: persistent swapping, OOM events, increasing wait times, and application-level errors should be tracked on a shared timeline. A one-time spike, on the other hand, could be a scheduled batch job. Even a cache service using a high percentage of RAM is not automatically the cause if its cgroup and the other processes remain sufficiently responsive.

cgroup v2 extends the global view to include service or container boundaries. The storage controller provides event counters; memory.events is hierarchical, whereas memory.events.local displays only local events from the respective cgroup. This makes it possible to determine whether a problem is related to the service's own limit or to load in a parent structure.

These fundamentals do not yet support the need for tuning. Before you change limits, swap strategies, or kernel interfaces, you should analyze load sources, cgroup assignments, and temporal correlations. In particular, a strict memory limit can cause a service to fail prematurely instead of resolving the underlying peak workload. Only after diagnosis can you determine whether a change even has a suitable technical adjustment point.

Perform a Targeted Check of Multi-Gen LRU

Multi-Gen LRU is an alternative implementation for Page Reclaim and is described in the kernel documentation covered here, starting with Linux 6.1. When memory is tight, the kernel must decide which file cache or anonymous memory pages can be reclaimed. To do this, Multi-Gen LRU assigns pages to generations based on their access age and takes access patterns into account, so that pages that are frequently needed are less likely to be selected for reclamation.

This is relevant for a heavily loaded web hosting server where PHP-FPM pools, a database, and a cache service are all consuming RAM simultaneously. This feature can alter the behavior of the `reclaim` option, but it is neither a memory extension nor a guarantee of faster response times. The workload, available RAM, swap space, storage capacity, and the services’ cgroup limits continue to determine whether and to what extent any effect is noticeable.

Memory pages from different generations are specifically selected for reclaim during memory compaction.
Multi-Gen LRU changes the selection criteria for reclaim, but does not replace capacity and limit planning.

Before each evaluation, you should first check whether the runtime interface is present and readable. The current kernel documentation lists the following configuration options for this purpose: CONFIG_LRU_GEN and CONFIG_LRU_GEN_ENABLED as well as the path under /sys/kernel/mm/lru_gen/. A distribution kernel can backport feature sets or configure them differently; therefore, the version number alone is not reliable evidence.

Terminal
test -r /sys/kernel/mm/lru_gen/enabled && cat /sys/kernel/mm/lru_gen/enabled

Initially, an output simply verifies that the documented sysfs interface exists and is readable. The bit value is relevant for determining the activation status: 0x0001 This is the main switch for Multi-Gen LRU. If this bit is missing, the file may indicate that the main switch is disabled even though the interface is available; other bits relate to additional components. Even if the main bit is set, this does not generally constitute a recommendation to change the value in production.

Write accesses to sysfs are therefore not standard tuning practices. First, collect time series data on reclaim, swap, latencies, and cgroup events; if you make a justified change, document the baseline value and define a fallback strategy. This ensures that it remains clear whether the observed problem has actually changed or whether multiple control variables were simply adjusted simultaneously.

You should be especially careful when memory limits are tight and services are overbooked. A modified reclaim algorithm does not correct excessively large PHP worker pools, inappropriate database caches, or a lack of separation between competing customers. The recommended approach is: determine the cause and the affected cgroup, limit or distribute the load, and only then evaluate an available kernel function as a possible contributing factor.

How to Pinpoint Memory Issues with Confidence

Used RAM is not an error in itself: Linux specifically uses free memory as a file cache. Action is typically required when demands in Direct Reclaim run, swap activity increases, OOM events occur, or concurrent requests slow down. Asynchronous reclaim via kswapd runs in the background; direct reclaim, on the other hand, occurs in the context of the task requesting memory and can delay its execution.

First, classify observations based on storage pressure
ObservationPossible classificationCheck firstDon't act too hastily
The counter in `memory.events` is increasingcgroup processes were throttled after exceeding memory.high, leading to direct reclaim; the hierarchical counter may also include events from subgroups.Compare the `memory.events.local` values for the affected cgroup, along with the service load and latencies, over time.Immediately decrease or increase `memory.max`.
"oom" in `memory.events` is increasingThe cgroup's usage reached its limit, and an allocation was about to fail. The counter alone does not indicate which process was terminated.Map local and hierarchical events to `memory.max`, the journal, and the affected cgroup.Treat `oom` as equivalent to a confirmed process termination.
"oom_kill" in "memory.events" is increasingProcesses belonging to this cgroup were terminated by some type of OOM killer; the hierarchical counter may include events from subgroups.memory.events.local: Check process and journal data and distinguish between cgroup-specific and potential global OOM events.Either disable the OOM killer or disable swapping entirely.
Swap activity is on the riseAnonymous memory is under pressure; the impact also depends on I/O and load.View elapsed time, Reclaim, service metrics, and I/O wait time together.Treat the file cache as a waste of RAM.
Response times increase without OOMDirect reclaim, CPU or I/O contention, and the application itself are all possible causes.Correlate application metrics with cgroup and system data.Change all limits or sysfs values at the same time.

The Event Log memory.events counts events hierarchically, including subordinate cgroups. For a strictly local view, use memory.events.local ready. high indicates throttling and direct reclaim after exceeding memory.high, while oom counts as a failed allocation due to reaching the cgroup limit. oom_kill In contrast, it counts processes in this cgroup that were terminated by any type of OOM killer.

Start the diagnosis with a clear identification: Which service or container belongs to the suspicious cgroup, when did the events occur, and what application signals were present at the same time? Next, compare local and hierarchical counters, the system journal, swap history, HTTP latencies, database wait times, and error rates. In the case of an OOM event, you must also determine whether the data points to a cgroup-related issue or a potential global memory shortage.

The value memory.max This is a strict cgroup limit and not a first-line measure. A tighter limit can protect tenants, but it can also cause an application to enter OOM situations sooner; a higher limit can exacerbate resource crowding among neighboring services. Therefore, first check the number of workers, cache sizes, peak loads, and the cgroup structure. Then, change only one well-justified parameter, with a monitoring period and a rollback plan in place.

Understanding EEVDF and CPU Competition

The current official kernel documentation sets the start of the transition to EEVDF Linux 6.6. "Earliest Eligible Virtual Deadline First" changes the way normal, fairly scheduled tasks are selected: it takes into account virtual runtime, lag as a deviation from the ideal distribution, and virtual deadlines. Eligible tasks with the earliest virtual deadline can thus receive CPU time first.

The term „transition“ is important. EEVDF does not replace the selection decision of the Fair Scheduling class in the sense that all data structures, interfaces, and concepts historically referred to as CFS will disappear. Even the current documentation continues to compare EEVDF with CFS. For a specific distribution kernel, therefore, its integrated patch and feature status must be checked, rather than relying solely on 6.6 or higher to conclude that the behavior is completely uniform.

For hosting, this change is particularly relevant in mixed-load scenarios. Web requests, database operations, and monitoring, for example, compete with imports, compression, or backups. A different latency profile between kernel states is possible, but this does not automatically mean higher overall throughput. The scheduler does not resolve issues such as cores that are constantly at full capacity, blocked processes, I/O wait times, or unsuitable application configurations.

Operational separation continues to be based on service and platform boundaries. CPU weights influence the relative distribution in the face of competition, while quotas can limit the available compute time. If latency-critical web traffic needs to be reliably separated from large batch jobs, a dedicated VM or a separate host may also be appropriate. EEVDF replaces these Resource Planning not.

Before querying cgroup.controllers You need to determine whether and where cgroup v2 is mounted. The following read-only procedure searches for the cgroup v2 mount point instead of the usual path /sys/fs/cgroup Assume that on a pure cgroup-v1 system, the variable remains empty; in a hybrid hierarchy, it shows only the v2 mount that was found.

Terminal
uname -r
findmnt -t cgroup2 -o TARGET,FSTYPE,OPTIONS
CG2=$(findmnt -n -t cgroup2 -o TARGET | head -n 1)
if [ -n "$CG2" ] && [ -r "$CG2/cgroup.controllers" ]; then
    printf 'cgroup-v2 mount: %s\n' "$CG2"
    cat "$CG2/cgroup.controllers"
    test -r "$CG2/cgroup.subtree_control" && cat "$CG2/cgroup.subtree_control"
fi
systemd-cgtop

uname -r refers only to the current release string. cgroup.controllers lists the controllers that are available for activation in this specific cgroup; it does not confirm that they have been enabled in the relevant subhierarchies. For that, use, among other things, cgroup.subtree_control at the respective hierarchy levels. Controllers are approved top-down, so a child cgroup can only pass on controllers provided by its parent node.

systemd-cgtop This also provides only a snapshot and does not constitute a root-cause analysis. Collect CPU utilization by service group, request latencies, batch job runtimes, and, if applicable, I/O wait times over several comparable load phases. If delays occur only during a backup, adjusting its time window, CPU weight, or quota is usually a more concrete first step than presumed scheduler tuning.

Landlock for Specialized Workers

Landlock was first introduced in Linux 5.13 and is therefore not a new feature specific to the 6.x series. In 6.x kernels, different, extended ABI levels are available depending on the release and distribution kernel. This feature is a supplementary security mechanism that allows a process to further restrict itself.

As a stackable Linux Security Module, Landlock operates in addition to existing access control policies; it does not replace Unix file permissions, SELinux, AppArmor, namespaces, or containers. Rules can, among other things, restrict file system access and are passed on to child processes launched subsequently. The actual functionality depends on the available ABI and the kernel configuration.

A standalone file converter may only read input files and write output files to a designated folder.
Landlock can also restrict specialized workers' access to only the paths that are actually needed.

It makes sense to Landlock especially for in-house developed or specifically selected individual processes. A converter for customer uploads could read files only from an input folder and write results exclusively to an output folder. Even if the service is processed incorrectly, it should not be able to read SSH keys, application secrets, or general system paths. This restriction complements careful permission assignment; it does not make it unnecessary.

A productive rule must not rely solely on a current kernel. Landlock has ABI versions; an application should query the available ABI at runtime and request only those access rights or functions that this ABI supports. This allows it to operate in a degraded mode on older systems, rather than failing completely due to an unavailable interface.

Separate from that is handled_access_fs Explicitly specifies which file system accesses a ruleset handles and which are denied by default if no corresponding rule exists. This explicit agreement between the application and the kernel prevents a sandbox from becoming stricter unnoticed—simply due to a system update—and thereby causing applications to fail. ABI queries and explicitly handled permissions therefore go hand in hand, but address different compatibility issues.

For the file converter, this results in a step-by-step implementation: Derive the required read, write, and working directories from the actual workflow, take error paths into account, and test them first in the staging environment. A brief example policy would not be a robust production recipe, since temporary files, external libraries, and launched utilities may require additional access. Further measures for service isolation are also covered in the article on Kernel Hardening for Hosting Servers.

Special caution is required when OverlayFS. Rules for an overlay layer do not automatically restrict the merged mount hierarchy, and vice versa. Container and build environments that use overlays therefore require a separate review of the specific mounts and access paths. Landlock is a possible additional layer in this context, but it does not provide blanket tenant isolation and is not a substitute for a robust container or authorization strategy.

DAMON only for special cases

DAMON and the Reclaim mechanisms based on it cannot be categorically classified as features first introduced in Linux 6.x. For administrators, what matters is the feature set of the specific 6.x kernel or distribution kernel in use. DAMON monitors memory accesses with the goal of classifying memory regions based on their usage patterns.

Building on that, we are trying to DAMON_RECLAIM, to proactively reclaim memory that has not been used for a long time by applying light pressure. This method complements the standard LRU-based reclamation; it is not intended to replace it. The kernel documentation classifies it as applicable to general overbooked memory systems and cites Free-Pages-Reporting-based virtualization as an example.

In this virtualization scenario, the layer is crucial: guests report free memory pages to the host, which the host can then allocate to other guests. If a guest reports only a small amount of free memory even though it is holding pages that have not been used for a long time, proactive reclaim can as a guest help report more free pages to the host. DAMON_RECLAIM is therefore not, without further examination, a host-side solution for unused guest memory.

For a single web or database server, this is therefore not a standard procedure. Even in virtualized environments, it must first be clear at what level the pressure is arising and whether areas that have been unused for a long time are actually the cause. CPU bottlenecks, slow storage, inappropriate cgroup limits, or active application caches can explain the same symptoms, without proactive reclaim being the appropriate solution.

Quotas, age limits, and watermarks control when and to what extent DAMON_RECLAIM operates. These are not standard values that can be applied across the board: An overly aggressive selection may prematurely displace useful file cache or memory pages that are needed repeatedly. This can trigger additional I/O operations and consume CPU time for rework, even though the amount of nominally free memory increases.

A sound decision therefore requires measurements with clear benchmarks, such as free memory as reported by the guest, reclaim activity, swap behavior, storage latency, and application response times. First test changes in a comparable staging environment, define a fallback plan, and monitor them during representative load phases. If these prerequisites are missing or if the cause of the storage pressure is unclear, DAMON remains intentionally disabled.

Updates, Live Patching, and Restarts

Kernel maintenance begins by verifying that the security advisory, the installed package, and the kernel currently running all match. Next, check the instructions for your specific distribution to determine which fix is intended for this exact kernel branch and whether a reboot is required. A higher 6.x version number alone does not indicate either the inclusion of the patch or the availability of a suitable live patch; security fixes can also be backported to older distribution kernels.

Also Live patching was not first introduced as a concept with Linux 6.x. The infrastructure relevant to 6.x kernels allows certain kernel changes to be applied at runtime. Cumulative live patches can replace an older patch atomically with a newer one. The documented limitations include, among other things, state changes, callbacks, and switching back between patches.

Whether a suitable live patch is available for a specific distribution kernel must be verified based on the provider’s offerings and approvals. The general kernel infrastructure does not imply that every security fix is available as a live patch, nor does it imply that an applied patch permanently replaces a full kernel update. Therefore, continue to schedule regular maintenance windows.

First, assess the urgency and impact of an update, then verify the package status and current kernel, and review the specific Livepatch offering. After a regular kernel update followed by a reboot, verify that the expected kernel is active and that critical services, network paths, backups, and monitoring are functioning correctly. This check is part of the maintenance procedure and should not be based solely on the server’s availability.

A planned relaunch may still be necessary despite live patching. Changes to kernel boot parameters typically do not take effect until the next boot. For drivers, device firmware, and hardware, however, the procedure depends on the component, how it is integrated, and the manufacturer’s specifications: In some cases, restarting a module, device, or service is sufficient; in others, a full host reboot is required.

The supplementary article on Live Patching on AlmaLinux Servers This section discusses a specific distribution-dependent implementation. Do not apply such procedures to other kernel branches or vendors without first verifying them. The packages, supported kernel versions, and operating instructions for the platform actually in use are authoritative.

  • Deliberately make no changes if the observed malfunction does not yet have a clear cause.
  • Do not plan any live patches or kernel changes without appropriate staging testing and a documented rollback procedure.
  • Do not enable a feature if the affected application or platform does not use its interface.
  • Do not assume that live patching covers every kernel update just because there is no maintenance window.

Sources and Current State of Knowledge

Status of the research:

Research and Functionality Status: September 24, 2026. This section covers documented kernel functions from various 6.x versions; availability, configuration, and backports vary by distribution kernel.

https://docs.kernel.org/6.14/admin-guide/mm/multigen_lru.html

https://docs.kernel.org/scheduler/sched-eevdf.html

https://docs.kernel.org/6.6/userspace-api/landlock.html

https://docs.kernel.org/6.0/admin-guide/cgroup-v2.html

https://docs.kernel.org/6.1/mm/multigen_lru.html

https://docs.kernel.org/6.9/admin-guide/mm/damon/reclaim.html

https://docs.kernel.org/admin-guide/mm/concepts.html

https://docs.kernel.org/6.0/livepatch/cumulative-patches.html

Current articles

An abstract representation of a hosting server showing data flows for storage, CPU, isolation, and maintenance.
Technology

Linux Kernel 6.x: Relevant New Features for Hosting Servers

Which features of the Linux 6.x kernel may be relevant in terms of memory pressure, CPU contention, process isolation, and maintenance—and how administrators can thoroughly assess availability and limitations.

Centralized patch distribution with staggered groups for different hosting servers
Security

KernelCare ePortal for Larger Hosting Infrastructures

KernelCare ePortal centralizes the distribution and deployment of live patches across large Linux fleets. This article explains when the additional platform is worthwhile and how to manage patch rings, mirroring, replication, and security controls effectively.

Conceptual representation of an isolated Redis Lua script flow between multiple clients and a consistent key-value pair.
Databases

Using Redis Lua Scripts Correctly for Atomic Operations

Redis Lua scripts combine reading, checking, and writing into a single, isolated server operation. This article explains KEYS and ARGV, EVAL and functions, cluster limits, error handling, and safe patterns for limits and reservations.