It makes our interface different to mainstream cgroup_subtree_control_write() 
interface. Switching to do_each_subsys_mask saves 16 empty loop iterations 
maximum, I'd prefer been close to mainstream to been a bit faster here.

On 12/12/25 21:44, Konstantin Khorenko wrote:
> 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 <[email protected]>
> ---
>  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;

-- 
Best regards, Pavel Tikhomirov
Senior Software Developer, Virtuozzo.

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to