[Devel] [PATCH vz10] cgroup-v2: Optimize loop in cgroup_controllers_hidden_write
Konstantin Khorenko
khorenko at virtuozzo.com
Fri Dec 12 16:44:14 MSK 2025
Replace for_each_subsys with do_each_subsys_mask to iterate only
over subsystems in hide | show mask instead of all subsystems.
This improves performance by skipping unnecessary iterations.
https://virtuozzo.atlassian.net/browse/VSTOR-119803
Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
---
kernel/cgroup/cgroup.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
index 5ab96088eee31..4274097b65f9c 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -3962,6 +3962,7 @@ static ssize_t cgroup_controllers_hidden_write(struct kernfs_open_file *of,
u16 old_hidden_ss_mask;
u16 change_mask = 0;
u16 applied_mask = 0;
+ u16 process_mask;
int ssid, ret;
char *tok;
@@ -3997,7 +3998,9 @@ static ssize_t cgroup_controllers_hidden_write(struct kernfs_open_file *of,
if (!cgrp)
return -ENODEV;
- for_each_subsys(ss, ssid) {
+ /* Iterate only over subsystems in hide | show mask for efficiency */
+ process_mask = hide | show;
+ do_each_subsys_mask(ss, ssid, process_mask) {
if (hide & (1 << ssid)) {
if (cgrp->hidden_ss_mask & (1 << ssid)) {
hide &= ~(1 << ssid);
@@ -4019,7 +4022,7 @@ static ssize_t cgroup_controllers_hidden_write(struct kernfs_open_file *of,
goto out_unlock;
}
}
- }
+ } while_each_subsys_mask();
if (!hide && !show) {
ret = 0;
--
2.43.0
More information about the Devel
mailing list