On Tue, Jan 11, 2022 at 1:56 AM Cruz Zhao <CruzZhao@xxxxxxxxxxxxxxxxx> wrote: > > There are two types of forced idle time: forced idle time from cookie'd > task and forced idle time form uncookie'd task. 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 both. > > Assuming cpu x and cpu y are a pair of SMT siblings, consider the > following scenarios: > 1.There's a cookie'd task running on cpu x, and there're 4 uncookie'd > tasks 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 running on cpu x, and there're 4 cookie'd > tasks 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 total capacity loss is 1 cpu, but in > scenario1, the cookie'd forced idle time tells us 20% cpu capacity loss, in > scenario2, the cookie'd forced idle time tells us 80% cpu capacity loss, > which are not accurate. It'll be more accurate to measure with cookie'd > forced idle time and uncookie'd forced idle time. > > Signed-off-by: Cruz Zhao <CruzZhao@xxxxxxxxxxxxxxxxx> > --- Thanks, Reviewed-by: Josh Don <joshdon@xxxxxxxxxx>