APPLIED: [SRU][N:hwe-6.14][PATCH v2 0/1] enable MEMCG_V1 and CPUSETS_V1 on Noble HWE
Stefan Bader
stefan.bader at canonical.com
Wed Oct 15 12:43:45 UTC 2025
On 19/09/2025 21:14, Krister Johansen wrote:
> BugLink: https://bugs.launchpad.net/bugs/2122368
>
> [Impact]
>
> Although v1 cgroups are deprecated in Noble, it was still possible for
> users on 6.8 kernels to utilize them. This was especially helpful in
> the Noble migration process. It allowed users to pick up the new OS and
> then separately upgrade their remaining v1 cgroups applications. This
> unblocked the migration path for v1 cgroups users, because v1 support
> could be provisionally enabled until the necessary support was available
> in the applications that still lack v2 support.
>
> Starting in 6.12, CONFIG_MEMCG_V1 and CONFIG_CPUSETS_V1 were added and
> defaulted to false. Noble 6.8 users that were unlucky enough to still
> need these V1 cgroups found that they could no longer use them in the
> 6.14 kernel.
>
> Some of the specific failures that were encountered include older JVMs
> that fail to correctly handle missing controllers from /proc/cgroups.
> If memory or cpuset are absent, the container limit detection is turned
> off and the JVM uses the host's limits. JVMs configured in containers
> with specific memory usage percentages then end up consuming too much
> memory and often crash.
>
> Apache Yarn is still completing their v1 -> v2 migration, which leaves
> some Hadoop use cases without proper support.
>
> The request here is to enable these V1 controllers on Noble, but not
> newer releases, for as long as the Noble HWE kernel train still has
> kernels with upstream cgroup v1 support. This gives users a little bit
> longer to complete their migration while still using newer hardware, but
> with the understanding that this really is the end of the line for v1
> cgroups.
>
> [Fix]
>
> Re-enable the missing v1 controllers in the 6.14 Noble config.
>
> In 6.8 there were 14 controllers. In the current 6.14 config there are
> also 14 controllers. However, the difference is that the current 6.14
> build the dmem controller was added, and the cpuset and memory
> controllers were removed.
>
> Diffing both the /proc/cgroups and configs between the 6.14 and 6.8
> releases gives:
>
> -CPUSETS_V1 n
> -MEMCG_V1 n
>
> These differences were also corroborated via source inspection. Changes
> in 6.12 moved these controllers to be guarded by ifdefs that default to
> being disabled via make olddefconfig.
>
> In order to ensure that 6.14 has the same v1 cgroup controllers enabled
> as 6.8, enable both CONFIG_CPUSETS_V1 and CONFIG_MEMCG_V1 for Noble.
>
> [Test]
>
> Booted a kernel with this change and validated that the missing v1
> memcgs were present again.
>
> Before:
>
> $ grep memory /proc/cgroups
> $ grep cpuset /proc/cgroups
>
> with v1 cgroups enabled:
>
> $ mount | grep cgroup | grep memory
> $ mount | grep cgroup | grep cpuset
>
> $ ls /sys/fs/cgroup | grep memory
> $ ls /sys/fs/cgroup | grep cpuset
>
> After:
>
> $ grep memory /proc/cgroups
> memory 0 88 1
> $ grep cpuset /proc/cgroups
> cpuset 0 88 1
>
> with v1 cgroups enabled:
>
> $ mount | grep cgroup | grep memory
> cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
> $ mount | grep cgroup | grep cpuset
> cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
>
> $ ls /sys/fs/cgroup | grep memory
> memory
> $ ls /sys/fs/cgroup | grep cpuset
> cpuset
>
> A config diff of the previous build versus a build cranked from these
> patches:
>
> CPUSETS_V1 n -> y
> MEMCG_V1 n -> y
>
> [Where problems can occur]
>
> Since these changes re-introduce code that was disabled via ifdef,
> there's a possible increase in the binary size. After comparing the
> results from an identical build with these config flags disabled, the
> difference in compressed artifact size for an x86 vmlinuz is an increase
> of 16k.
>
> The difference in uncompressed memory usage after boot is an increase of
> 40k, broken down as 21k code, 19k rwdata, 12k rodata, 8k init, -28k
> bss, and 8k reserved.
>
> The primary remaining risk is around future breakage of these interfaces
> since they are no longer part of the default configuration. If this is
> not part of upstream's test matrix, then there is additional potential
> breakage possible. However, the author has no knowledge of actual v1
> cgroups breakage at the time this patch is being submitted.
>
> Krister Johansen (1):
> UBUNTU: [Config] enable MEMCG_V1 and CPUSETS_V1 on Noble HWE
>
> debian.hwe-6.14/config/annotations | 6 ++++++
> 1 file changed, 6 insertions(+)
>
Applied to noble:linux-hwe-6.14 for 2025.10.13-1. Thanks.
-Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xE8675DEECBEECEA3.asc
Type: application/pgp-keys
Size: 48643 bytes
Desc: OpenPGP public key
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20251015/3ee3f1a7/attachment-0001.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20251015/3ee3f1a7/attachment-0001.sig>
More information about the kernel-team
mailing list