Thanks for digging through this. On Fri, May 24, 2019 at 11:33:55AM -0400, Joel Savitz <jsavitz@xxxxxxxxxx> wrote: > It is a bit ambiguous, but I performed no action on the task's cpuset > nor did I offline any cpus at point (a). So did you do any operation that left you with cpu_active_mask & 0xf0 == 0 ? (If so, I think the demo code should be made without it to avoid the confusion.) Regardless, the demo code should also specify in what cpuset it happens (for the v2 case). > I think the /proc/$$/status value is intended to simply reflect the > user-specified policy stating which cpus the task is allowed to run on > without consideration for hardware state, whereas the taskset value is > representative of the cpus that the task can actually be run on given > the restriction policy specified by the user via the cpuset mechanism. Yes, it seems to me to be somewhat analogous to effective_cpus vs cpus_allowed in the v2 cpuset. > By the way, I posted a v2 of this patch that correctly handles cgroup > v2 behavior. I see the original version made the state = cpuset in select_fallback_rq mostly redundant. The split on v2 (hierarchy) in v2 (patch) makes some sense. Although, on v1 we will lose the "no longer affine to..." message (which is what happens in your demo IIUC). Michal