Lower than expected CPU pressure in PSI

Ivan Babrou
2020-01-08T19:47:33Z

We added reporting for PSI in cgroups and results are somewhat surprising.

My test setup consists of 3 services:

* stress-cpu1-no-contention.service : taskset -c 1 stress --cpu 1
* stress-cpu2-first-half.service : taskset -c 2 stress --cpu 1
* stress-cpu2-second-half.service : taskset -c 2 stress --cpu 1

First service runs unconstrained, the other two compete for CPU.

As expected, I can see 500ms/s sched delay for the latter two and
aggregated 1000ms/s delay for /system.slice, no surprises here.

However, CPU pressure reported by PSI says that none of my services
have any pressure on them. I can see around 434ms/s pressure on
/unified/system.slice and 425ms/s pressure on /unified cgroup, which
is surprising for three reasons:

* Pressure is absent for my services (I expect it to match scheed delay)
* Pressure on /unified/system.slice is lower than both 500ms/s and 1000ms/s
* Pressure on root cgroup is lower than on system.slice

I'm running Linux 5.4.8 with hybrid cgroup hierarchy under systemd.

P.S.: ./scripts/get_maintainer.pl kernel/sched/psi.c does not say
Johannes Weiner is a maintainer