Re: [RESEND PATCH RFC] cgroup: support numabalancing disable in cgroup level

From: Tejun Heo
Date: Mon Dec 13 2021 - 14:23:54 EST


Hello,

On Mon, Dec 13, 2021 at 11:05:06PM +0800, Honglei Wang wrote:
> +#ifdef CONFIG_NUMA_BALANCING
> +static void __cgroup_numabalancing_disable_set(struct cgroup *cgrp, bool nb_disable)
> +{
> + struct css_task_iter it;
> + struct task_struct *task;
> +
> + lockdep_assert_held(&cgroup_mutex);
> +
> + spin_lock_irq(&css_set_lock);
> + if (nb_disable)
> + set_bit(CGRP_NUMABALANCING_DISABLE, &cgrp->flags);
> + else
> + clear_bit(CGRP_NUMABALANCING_DISABLE, &cgrp->flags);
> + spin_unlock_irq(&css_set_lock);
> +
> + css_task_iter_start(&cgrp->self, 0, &it);
> + while ((task = css_task_iter_next(&it))) {
> + /*
> + * We don't care about NUMA placement if the task is exiting.
> + * And we don't NUMA balance for kthreads.
> + */
> + if (task->flags & (PF_EXITING | PF_KTHREAD))
> + continue;
> + task->numa_cgrp_disable = nb_disable;
> + }
> + css_task_iter_end(&it);
> +}

All it's doing is setting some property recursively and I don't think it
makes sense to keep expanding cgroup interface for this sort of usage. It's
not distributing any resource in hierarchical way and the whole feature can
be replaced by inheritable per-process interface with some scripting. Unless
there are some other compelling reasons, this is gonna be a strong nack from
cgroup side.

Thanks.

--
tejun