Re: [PATCH 2/2] sched/fair: Always propagate runnable_load_avg

From: Tejun Heo
Date: Tue Apr 25 2017 - 16:49:23 EST


On Tue, Apr 25, 2017 at 11:49:41AM -0700, Tejun Heo wrote:
> Will try that too. I can't see why HT would change it because I see
> single CPU queues misevaluated. Just in case, you need to tune the
> test params so that it doesn't load the machine too much and that
> there are some non-CPU intensive workloads going on to purturb things
> a bit. Anyways, I'm gonna try disabling HT.

It's finickier but after changing the duty cycle a bit, it reproduces
w/ HT off. I think the trick is setting the number of threads to the
number of logical CPUs and tune -s/-c so that p99 starts climbing up.
The following is from the root cgroup.

~/schbench -m 2 -t 8 -s 15000 -c 10000 -r 30
Latency percentiles (usec)
50.0000th: 51
75.0000th: 62
90.0000th: 67
95.0000th: 70
*99.0000th: 1482
99.5000th: 5048
99.9000th: 9008
min=0, max=10066

And the following is from a first-level cgroup with maximum CPU
weight.

# ~/schbench -m 2 -t 8 -s 15000 -c 10000 -r 30
Latency percentiles (usec)
50.0000th: 51
75.0000th: 62
90.0000th: 71
95.0000th: 84
*99.0000th: 10064
99.5000th: 10064
99.9000th: 10064
min=0, max=10089

It's interesting that p99 ends up aligned on the CPU burn duration.
It looks like some threads end up wating for full durations.

The following is with the patches applied in the same cgroup setup.

# ~/schbench -m 2 -t 8 -s 15000 -c 10000 -r 30
Latency percentiles (usec)
50.0000th: 64
75.0000th: 73
90.0000th: 102
95.0000th: 111
*99.0000th: 1954
99.5000th: 5432
99.9000th: 9520
min=0, max=10012

The numbers fluctuate quite a bit between runs but the pattern is
still very clear - e.g. 10ms p99 never shows up in the root cgroup or
on the patched kernel.

Thanks.

--
tejun