On Wed, Jan 5, 2022 at 3:33 AM cruzzhao <cruzzhao@xxxxxxxxxxxxxxxxx> wrote: > > When we care about capacity loss, we care about all but not some of it. > The forced idle time from uncookie'd task is actually caused by the > cookie'd task in runqueue indirectly, and it's more accurate to measure > the capacity loss with the sum of cookie'd forced idle time and > uncookie'd forced idle time, as far as I'm concerned. > > Assuming cpu x and cpu y are a pair of smt siblings, consider the > following scenarios: > 1. There's a cookie'd task A running on cpu x, and there're 4 uncookie'd > tasks B~E running on cpu y. For cpu x, there will be 80% forced idle > time(from uncookie'd task); for cpu y, there will be 20% forced idle > time(from cookie'd task). > 2. There's a uncookie'd task A running on cpu x, and there're 4 cookie'd > tasks B~E running on cpu y. For cpu x, there will be 80% forced idle > time(from cookie'd task); for cpu y, there will be 20% forced idle > time(from uncookie'd task). > The scenario1 can recurrent by stress-ng(scenario2 can recurrent similary): > (cookie'd)taskset -c x stress-ng -c 1 -l 100 > (uncookie'd)taskset -c y stress-ng -c 4 -l 100 > > In the above two scenarios, the capacity loss is 1 cpu, but in > scenario1, the cookie'd forced idle time tells us 20%cpu loss, in > scenario2, the cookie'd forced idle time tells us 80% forced idle time, > which are not accurate. It'll be more accurate with the sum of cookie'd > forced idle time and uncookie'd forced idle time. Why do you need this separated out into two fields then? Could we just combine the uncookie'd and cookie'd forced idle into a single sum? IMO it is fine to account the forced idle from uncookie'd tasks, but we should then also change the task accounting to do the same, for consistency.