Re: Re: Re: Re: Re: [PATCH v1] sched/numa: add per-process numa_balancing

From: Gang Li
Date: Tue Nov 09 2021 - 08:58:46 EST


On 11/9/21 8:12 PM, Mel Gorman wrote:

That would be a policy decision on how existing tasks should be tuned
if NUMA balancing is enabled at runtime after being disabled at boot
(or some arbitrary time in the past). Introducing the prctl does mean
that there is a semantic change for the runtime enabling/disabling
of NUMA balancing because previously, enabling global balancing affects
existing tasks and with prctl, it affects only future tasks. It could
be handled in the sysctl to some exist

0. Disable for all but prctl specifications
1. Enable for all tasks unless disabled by prctl
2. Ignore all existing tasks, enable for future tasks

While this is more legwork, it makes more sense as an interface than
prctl(PR_NUMA_BALANCING,PR_SET_NUMA_BALANCING,1) failing if global
NUMA balancing is disabled.


Why prctl(PR_NUMA_BALANCING,PR_SET_NUMA_BALANCING,1) must work while global numa_balancing is disabled? No offense, I think that is a bit redundant. And it's complicated to implement.

It's hard for me to understand the whole vision of your idea. I'm very sorry. Can you explain your full thoughts more specifically?

----------------------------------------------------

Also in case of misunderstanding, let me re-explain my patch using circuit diagram.

Before my patch, there is only one switch to control numa_balancing.

______process1_
...____/ __|______process2_|__...
|______process3_|

|
global numa_balancing

After my patch, we can selectively disable numa_balancing for processes.
And global switch has a high priority.

__/ __process1_
...____/ __|__/ __process2_|__...
|__/ __process3_|

| |
global per-process

Why global numa_balancing has high priority? There are two reasons:
1. numa_balancing is useful to most processes, so there is no need to consider how to enable numa_balancing for a few processes while disabling it globally.
2. It is easy to implement. The more we think, the more complex the code becomes.