linux/arch
Giovanni Gherdovich 298c6f99bf x86, sched: Add support for frequency invariance on ATOM
The scheduler needs the ratio freq_curr/freq_max for frequency-invariant
accounting. On all ATOM CPUs prior to Goldmont, set freq_max to the 1-core
turbo ratio.

We intended to perform tests validating that this patch doesn't regress in
terms of energy efficiency, given that this is the primary concern on Atom
processors. Alas, we found out that turbostat doesn't support reading RAPL
interfaces on our test machine (Airmont), and we don't have external equipment
to measure power consumption; all we have is the performance results of the
benchmarks we ran.

Test machine:

Platform    : Dell Wyse 3040 Thin Client[1]
CPU Model   : Intel Atom x5-Z8350 (aka Cherry Trail, aka Airmont)
Fam/Mod/Ste : 6:76:4
Topology    : 1 socket, 4 cores / 4 threads
Memory      : 2G
Storage     : onboard flash, XFS filesystem

[1] https://www.dell.com/en-us/work/shop/wyse-endpoints-and-software/wyse-3040-thin-client/spd/wyse-3040-thin-client

Base frequency and available turbo levels (MHz):

    Min Operating Freq   266 |***
    Low Freq Mode        800 |********
    Base Freq           2400 |************************
    4 Cores             2800 |****************************
    3 Cores             2800 |****************************
    2 Cores             3200 |********************************
    1 Core              3200 |********************************

Tested kernels:

Baseline      : v5.4-rc1,              intel_pstate passive,  schedutil
Comparison #1 : v5.4-rc1,              intel_pstate active ,  powersave
Comparison #2 : v5.4-rc1, this patch,  intel_pstate passive,  schedutil

tbench, hackbench and kernbench performed the same under all three kernels;
dbench ran faster with intel_pstate/powersave and the git unit tests were a
lot faster with intel_pstate/powersave and invariant schedutil wrt the
baseline. Not that any of this is terrbily interesting anyway, one doesn't buy
an Atom system to go fast. Power consumption regressions aren't expected but
we lack the equipment to make that measurement. Turbostat seems to think that
reading RAPL on this machine isn't a good idea and we're trusting that
decision.

comparison ratio of performance with baseline; 1.00 means neutral,
lower is better:

                      I_PSTATE      FREQ-INV
    ----------------------------------------
    dbench                0.90             ~
    kernbench             0.98          0.97
    gitsource             0.63          0.43

Signed-off-by: Giovanni Gherdovich <ggherdovich@suse.cz>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://lkml.kernel.org/r/20200122151617.531-6-ggherdovich@suse.cz
2020-01-28 21:37:05 +01:00
..
alpha alpha: use pgtable-nopud instead of 4level-fixup 2019-12-04 19:44:14 -08:00
arc Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
arm Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
arm64 Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
c6x Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
csky sched/rt, csky: Use CONFIG_PREEMPTION 2019-12-08 14:37:33 +01:00
h8300 sched/rt, h8300: Use CONFIG_PREEMPTION 2019-12-08 14:37:33 +01:00
hexagon sched/rt, hexagon: Use CONFIG_PREEMPTION 2019-12-08 14:37:33 +01:00
ia64 Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
m68k Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu 2019-12-05 12:20:42 -08:00
microblaze Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
mips Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
nds32 Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
nios2 Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
openrisc OpenRISC updates for 5.5 2019-12-02 17:18:43 -08:00
parisc Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
powerpc Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
riscv Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
s390 Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
sh Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
sparc Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
um um: add support for folded p4d page tables 2019-12-04 19:44:15 -08:00
unicore32 generic ioremap support 2019-11-28 10:57:12 -08:00
x86 x86, sched: Add support for frequency invariance on ATOM 2020-01-28 21:37:05 +01:00
xtensa Linux 5.5-rc3 2019-12-25 10:41:37 +01:00
.gitignore
Kconfig arch/Kconfig: fix indentation 2019-12-04 19:44:12 -08:00