• Yafang Shao's avatar
    sched: Make schedstats helpers independent of fair sched class · 60f2415e
    Yafang Shao authored
    The original prototype of the schedstats helpers are
    
      update_stats_wait_*(struct cfs_rq *cfs_rq, struct sched_entity *se)
    
    The cfs_rq in these helpers is used to get the rq_clock, and the se is
    used to get the struct sched_statistics and the struct task_struct. In
    order to make these helpers available by all sched classes, we can pass
    the rq, sched_statistics and task_struct directly.
    
    Then the new helpers are
    
      update_stats_wait_*(struct rq *rq, struct task_struct *p,
                          struct sched_statistics *stats)
    
    which are independent of fair sched class.
    
    To avoid vmlinux growing too large or introducing ovehead when
    !schedstat_enabled(), some new helpers after schedstat_enabled() are also
    introduced, Suggested by Mel. These helpers are in sched/stats.c,
    
      __update_stats_wait_*(struct rq *rq, struct task_struct *p,
                            struct sched_statistics *stats)
    
    The size of vmlinux as follows,
                          Before          After
      Size of vmlinux     826308552       826304640
    The size is a litte smaller as some functions are not inlined again after
    the change.
    
    I also compared the sched performance with 'perf bench sched pipe',
    suggested by Mel. The result as followsi (in usecs/op),
                                 Before                After
      kernel.sched_schedstats=0  5.2~5.4               5.2~5.4
      kernel.sched_schedstats=1  5.3~5.5               5.3~5.5
    
    [These data is a little difference with the prev version, that is
    because my old test machine is destroyed so I have to use a new
    different test machine.]
    Almost no difference.
    
    No functional change.
    
    [lkp@intel.com: reported build failure in prev version]
    Signed-off-by: default avatarYafang Shao <laoar.shao@gmail.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: default avatarMel Gorman <mgorman@suse.de>
    Link: https://lore.kernel.org/r/20210905143547.4668-4-laoar.shao@gmail.com
    60f2415e
stats.h 8.81 KB