Re: [PATCH 1/1] sched: Make schedstats a runtime tunable that is disabled by default v3

From: Matt Fleming
Date: Mon Feb 01 2016 - 09:18:06 EST


On Mon, 01 Feb, at 09:37:06AM, Mel Gorman wrote:
> Changelog since V2
> o Print stats that are not related to schedstat
> o Reintroduce a static inline for update_stats_dequeue
>
> Changelog since V1
> o Introduce schedstat_enabled and address Ingo's feedback
> o More schedstat-only paths eliminated, particularly ttwu_stat
>
> schedstats is very useful during debugging and performance tuning but it
> incurs overhead. As such, even though it can be disabled at build time,
> it is often enabled as the information is useful. This patch adds a
> kernel command-line and sysctl tunable to enable or disable schedstats on
> demand. It is disabled by default as someone who knows they need it can
> also learn to enable it when necessary.
>
> The benefits are workload-dependent but when it gets down to it, the
> difference will be whether cache misses are incurred updating the shared
> stats or not. These measurements were taken from a 48-core 2-socket machine
> with Xeon(R) E5-2670 v3 cpus although they were also tested on a single
> socket machine 8-core machine with Intel i7-3770 processors.

[...]

> The gain is small but it'll depend on the CPU and the workload whether
> this patch makes a different. However, it stands to reason that doing
> less work in the scheduler is a good thing. The downside is that the
> lack of schedstats and tracepoints will be surprising to experts doing
> performance analysis until they find the existance of the schedstats=
> parameter or schedstats sysctl.
>
> Signed-off-by: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx>
> ---
> Documentation/kernel-parameters.txt | 5 ++
> Documentation/sysctl/kernel.txt | 8 +++
> include/linux/sched/sysctl.h | 4 ++
> kernel/sched/core.c | 62 +++++++++++++++++++++-
> kernel/sched/debug.c | 102 +++++++++++++++++++-----------------
> kernel/sched/fair.c | 90 +++++++++++++++++++------------
> kernel/sched/sched.h | 1 +
> kernel/sched/stats.h | 8 +--
> kernel/sysctl.c | 11 ++++
> 9 files changed, 204 insertions(+), 87 deletions(-)

Reviewed-by: Matt Fleming <matt@xxxxxxxxxxxxxxxxxxx>