Hackbench pipes regression bisected to PSI

From: Mel Gorman
Date: Mon Nov 26 2018 - 08:34:28 EST


Hi Johannes,

PSI is a great idea but it does have overhead and if enabled by Kconfig
then it incurs a hit whether the user is aware of the feature or not. I
think enabling by default is unnecessary as it should only be enabled if
the information is being consumed. While the Kconfig exists, it's all or
nothing if distributions want to have the feature available.

I've included a bisection report below showing a 6-10% regression on a
single socket skylake machine. Would you mind doing one or all of the
following to fix it please?

a) disable it by default
b) put psi_disable behind a static branch to move the overhead to zero
if it's disabled
c) optionally enable/disable at runtime (least important as at a glance,
this may be problematic)

Thanks

Bisect parameters
=================
CONFIG_AUTO=openSUSE-LEAP-15.0
BUILD_TYPE=make
MACHINE=delboy
BISECT_REVERSE=no
BISECT_MMTESTS_TEST=hackbench-process-pipes
BISECT_CONFIG=global-dhp__scheduler-unbound
BISECT_GOOD=v4.19
BISECT_BAD=92b419289cee
BISECT_LOGDIR=/srv/marvin/impera/bisections-sigma-delboy-global-dhp__scheduler-unbound-openSUSE-LEAP-15.0-openSUSE-LEAP-15.0-v4.19..92b419289cee
BISECT_COMPARE=Amean
BISECT_PREFER=Lower
BISECT_CLIENT="5"
BISECT_REBOOT_CLEAN=no
BISECT_MONITOR_CONFIG=
BISECT_NO_MITIGATIONS=no
BISECT_COMMAND="bisection-run --machine delboy --distro openSUSE-LEAP-15.0 --kernel-config openSUSE-LEAP-15.0 --tree make --config global-dhp__scheduler-unbound --mmtests-test hackbench-process-pipes --monitor no-monitor --method sigma --good v4.19 --bad 92b419289cee --walk-mainline --notify mgorman@xxxxxxxxxxxxxxxxxxx --bisect-client 5 --mmtests-limit --iterations 1 --logdir /srv/marvin/impera/bisections-sigma-delboy-global-dhp__scheduler-unbound-openSUSE-LEAP-15.0-openSUSE-LEAP-15.0-v4.19..92b419289cee --reset-trees"
BISECT_LOGDIR=/srv/marvin/impera/bisections-sigma-delboy-global-dhp__scheduler-unbound-openSUSE-LEAP-15.0-openSUSE-LEAP-15.0-v4.19..92b419289cee

Last good/First bad commit
==========================
Last good commit: eb414681d5a07d28d2ff90dc05f69ec6b232ebd2
First bad commit: 2ce7135adc9ad081aa3c49744144376ac74fea60