• Cruz Zhao's avatar
    sched/core: Accounting forceidle time for all tasks except idle task · b171501f
    Cruz Zhao authored
    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: default avatarCruz Zhao <CruzZhao@linux.alibaba.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: default avatarJosh Don <joshdon@google.com>
    Link: https://lore.kernel.org/r/1641894961-9241-2-git-send-email-CruzZhao@linux.alibaba.com
    b171501f
core_sched.c 6.66 KB