[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