Hi, Ridong, On Mon, 24 Nov 2025 19:33:54, Chen Ridong wrote: >On 2025/11/24 18:20, Sun Shaojie wrote: >> I'm sorry, I didn't quite understand the point you were trying to make with >> this example. >> >> If that's the case >> >> root cgroup >> | >> A1 >> / / \ \ >> A2 A3 A4 A5 >> >> #1> echo "0-1" > A1/cpuset.cpus >> #2> echo "root" > A1/cpuset.cpus.partition >> #3> echo "0-1" > A2/cpuset.cpus >> #4> echo "root" > A2/cpuset.cpus.partition >> mkdir A4 >> mkdir A5 >> echo "0" > A4/cpuset.cpus > >If we don't apply your patch, A2 will be invalidated. > >> echo $$ > A4/cgroup.procs ->This will return an error because A4's >> effective CPUs are empty. >> echo "1" > A5/cpuset.cpus >> echo $$ > A5/cgroup.procs ->This will return an error because A5's >> effective CPUs are empty. >> >> Even with this patch applied, this result will not change. >> > >You can have a try, the result I got: > ># mkdir A1 ># echo "0-1" > A1/cpuset.cpus ># echo "root" > A1/cpuset.cpus.partition ># cd A1/ ># mkdir A2 ># mkdir A4 ># mkdir A5 ># echo "0-1" > A2/cpuset.cpus ># echo "root" > A2/cpuset.cpus.partition ># ># echo "0" > A4/cpuset.cpus ># cat A2/cpuset.cpus >0-1 ># cat A2/cpuset.cpus.partition >root invalid ># cat A4/cpuset.cpus.effective >0
A4's cpuset.cpus.effective is 0 because A2 changed from root to root invalid. However, the purpose of this patch is precisely to keep A2 as "root". Before 'echo "0" > A4/cpuset.cpus', A4 is aware that its cpuset.cpus.effective is empty and that its parent's cpuset.cpus.effective is also empty. Therefore, after executing 'echo "0" > A4/cpuset.cpus', A4 should anticipate the possibility that it may not be allocated any available CPUs. Thanks, Sun Shaojie

