Skip to content

Support for cgroupv2 #77

@gmarkey

Description

@gmarkey

Hoping that this project isn't abandoned; so here goes :)

Is your feature request related to a problem? Please describe.
Currently, only cgroupv1 appears to be supported by CPU-Pooler. Most operating systems are moving to CGv2, which appears to break CPU-Pooler functionality. Additionally, after the deprecation of the Intel CPU manager, CPU-Pooler appears to now be the canonical way of achieving effective core isolation for low latency applications.

Describe the solution you'd like
CPU-Pooler should be able to:

  • Determine the underlying cgroupfs version.
  • Adjust the shared/exclusive thread allocations identically to how it behaves currently, across both versions.

Describe alternatives you've considered
Intel CPU manager, which is now deprecated. The embedded CPU scheduling of K8s is insufficient for certain workloads.

Additional context
tasks path in CGv2 has changed, for example:

  • CGv1: /sys/fs/cgroup/cpuset/cgroup-name/tasks
  • CGv2: /sys/fs/cgroup/cgroup-name/cgroup.procs

exclusive path in CGv2 has changed, for example:

  • CGv1: /sys/fs/cgroup/cpuset/cgroup-name/cpuset.cpu_exclusive (integer)
  • CGv2: /sys/fs/cgroup/cgroup-name/cpuset.cpus.partition (enum; root, member)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions