sched: Improve latencies under load by decreasing minimum scheduling granularity
Mathieu reported bad latencies with make -j10 kind of kbuild workloads - which is mostly caused by us scheduling with a too coarse granularity. Reduce the minimum granularity some more, to make sure we can meet the latency target. I got the following results (make -j10 kbuild load, average of 3 runs): vanilla: maximum latency: 38278.9 µs average latency: 7730.1 µs patched: maximum latency: 22702.1 µs average latency: 6684.8 µs Mathieu also measured it: | | * wakeup-latency.c (SIGEV_THREAD) with make -j10 | | - Mainline 2.6.35.2 kernel | | maximum latency: 45762.1 µs | average latency: 7348.6 µs | | - With only Peter's smaller min_gran (shown below): | | maximum latency: 29100.6 µs | average latency: 6684.1 µs | Reported-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Reported-by: Linus Torvalds <torvalds@linux-foundation.org> Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Suggested-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl> LKML-Reference: <AANLkTi=8m4g01wZPacySoF7U0PevTNVgJoZZrHiUD-pN@mail.gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
49553c2ef8
commit
0bf377bbb0
|
@ -54,13 +54,13 @@ enum sched_tunable_scaling sysctl_sched_tunable_scaling
|
||||||
* Minimal preemption granularity for CPU-bound tasks:
|
* Minimal preemption granularity for CPU-bound tasks:
|
||||||
* (default: 2 msec * (1 + ilog(ncpus)), units: nanoseconds)
|
* (default: 2 msec * (1 + ilog(ncpus)), units: nanoseconds)
|
||||||
*/
|
*/
|
||||||
unsigned int sysctl_sched_min_granularity = 2000000ULL;
|
unsigned int sysctl_sched_min_granularity = 750000ULL;
|
||||||
unsigned int normalized_sysctl_sched_min_granularity = 2000000ULL;
|
unsigned int normalized_sysctl_sched_min_granularity = 750000ULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* is kept at sysctl_sched_latency / sysctl_sched_min_granularity
|
* is kept at sysctl_sched_latency / sysctl_sched_min_granularity
|
||||||
*/
|
*/
|
||||||
static unsigned int sched_nr_latency = 3;
|
static unsigned int sched_nr_latency = 8;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* After fork, child runs first. If set to 0 (default) then
|
* After fork, child runs first. If set to 0 (default) then
|
||||||
|
|
Loading…
Reference in New Issue