-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Fix io limiting with cgroup v2 #9457
Conversation
/werft run 👍 started the job as gitpod-build-fo-fix-v2-io-limit.1 |
@Furisto please refactor v1 and this plugin to share the logic of the devices? |
Also, the |
@csweichel Good point. Actually even if we would hide that within another delegated cgroup namespace you could always create another child cgroup and move your io intensive process in that cgroup 🤔 |
Aren't cgroups hierarchical? I.e. you can only act within the context/limits of your parent cgroup? |
I would have expected that but that is not what it looks like in regards to io.max limits. |
kernel bug? :P |
😭 |
Worst case, why not check the tree structure of all cgroupfs and apply it? In cgroup v2 the process belongs only to the terminal cgroup. However, we will need to check if the search can be realistically terminated in a finite time. Or, monitor the cgroup notifications. Wecan use |
|
@Furisto can we close this for now, and reopen we decide to resume the work? I ask to remove it from our list of active PRs. 🙏 |
@Furisto another thing we need to test is the switch to systems instead cgroupfs for cgroups v2. Not sure if the behavior is the same. |
If we want to upgrade to k8s 1.24, we need to switch to systemd k3s-io/k3s#5462 |
The most significant change will be that the location of the cgroup for the container will change. As the cgroup is created by systemd it will be located in the systemd managed subtree of the cgroup fs. Considering that we can get the cgroup path from containerd the change will probably transparent to us though and no code will need to be adapted. From a resource control standpoint nothing will change as runc will connect to systemd via dbus to instruct it to write the resource limits into the cgroup fs. So this is just an indirection, everything will still end up in the cgroup fs, just in a different location. We would still write to the cgroup fs directly in order to control resources. |
Description
Fix io limiting with cgroup v2.
Related Issue(s)
n.a.
How to test
https://www.loom.com/share/3fc4a931fe3c4541b673650f86d56430
Release Notes
Documentation