91 lines
3.5 KiB
Diff
91 lines
3.5 KiB
Diff
|
From e9c6f500f4429c32f583d6da11352b2f0bcce4c8 Mon Sep 17 00:00:00 2001
|
||
|
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
|
||
|
Date: Mon, 27 Jan 2020 18:27:16 +0100
|
||
|
Subject: ZEN: INTERACTIVE: Tune ondemand governor for interactivity
|
||
|
|
||
|
4.10:
|
||
|
During some personal testing with the Dolphin emulator, MuQSS has
|
||
|
serious problems scaling its frequencies causing poor performance where
|
||
|
boosting the CPU frequencies would have fixed them. Reducing the
|
||
|
up_threshold to 45 with MuQSS appears to fix the issue, letting the
|
||
|
introduction to "Star Wars: Rogue Leader" run at 100% speed versus about
|
||
|
80% on my test system.
|
||
|
|
||
|
Also, lets refactor the definitions and include some indentation to help
|
||
|
the reader discern what the scope of all the macros are.
|
||
|
|
||
|
5.4:
|
||
|
On the last custom kernel benchmark from Phoronix with Xanmod, Michael
|
||
|
configured all the kernels to run using ondemand instead of the kernel's
|
||
|
[default selection][1]. This reminded me that another option outside of
|
||
|
the kernels control is the user's choice to change the cpufreq governor,
|
||
|
for better or for worse.
|
||
|
|
||
|
In Liquorix, performance is the default governor whether you're running
|
||
|
acpi-cpufreq or intel-pstate. I expect laptop users to install TLP or
|
||
|
LMT to control the power balance on their system, especially when
|
||
|
they're plugged in or on battery. However, it's pretty clear to me a
|
||
|
lot of people would choose ondemand over performance since it's not
|
||
|
obvious it has huge performance ramifications with MuQSS, and ondemand
|
||
|
otherwise is "good enough" for most people.
|
||
|
|
||
|
Lets codify lower up thresholds for MuQSS to more closely synergize with
|
||
|
its aggressive thread migration behavior. This way when ondemand is
|
||
|
configured, you get sort of a "performance-lite" type of result but with
|
||
|
the power savings you expect when leaving the running system idle.
|
||
|
|
||
|
[1]: https://www.phoronix.com/scan.php?page=article&item=xanmod-2020-kernel
|
||
|
|
||
|
5.14:
|
||
|
Although CFS and similar schedulers (BMQ, PDS, and CacULE), reuse a lot
|
||
|
more of mainline scheduling and do a good job of pinning single threaded
|
||
|
tasks to their respective core, there's still applications that
|
||
|
confusingly run steady near 50% and benefit from going full speed or
|
||
|
turbo when they need to run (emulators for more recent consoles come to
|
||
|
mind).
|
||
|
|
||
|
Drop the up threshold for all non-MuQSS schedulers from 80/95 to 55/60.
|
||
|
|
||
|
5.15:
|
||
|
Remove MuQSS cpufreq configuration.
|
||
|
---
|
||
|
drivers/cpufreq/cpufreq_ondemand.c | 8 +++++++-
|
||
|
init/Kconfig | 6 ++++++
|
||
|
2 files changed, 13 insertions(+), 1 deletion(-)
|
||
|
|
||
|
--- a/drivers/cpufreq/cpufreq_ondemand.c
|
||
|
+++ b/drivers/cpufreq/cpufreq_ondemand.c
|
||
|
@@ -18,10 +18,16 @@
|
||
|
#include "cpufreq_ondemand.h"
|
||
|
|
||
|
/* On-demand governor macros */
|
||
|
+#if defined(CONFIG_ZEN_INTERACTIVE)
|
||
|
+#define DEF_FREQUENCY_UP_THRESHOLD (55)
|
||
|
+#define MICRO_FREQUENCY_UP_THRESHOLD (60)
|
||
|
+#define DEF_SAMPLING_DOWN_FACTOR (5)
|
||
|
+#else
|
||
|
#define DEF_FREQUENCY_UP_THRESHOLD (63)
|
||
|
+#define MICRO_FREQUENCY_UP_THRESHOLD (70)
|
||
|
#define DEF_SAMPLING_DOWN_FACTOR (100)
|
||
|
+#endif
|
||
|
#define MAX_SAMPLING_DOWN_FACTOR (100000)
|
||
|
-#define MICRO_FREQUENCY_UP_THRESHOLD (70)
|
||
|
#define MIN_FREQUENCY_UP_THRESHOLD (1)
|
||
|
#define MAX_FREQUENCY_UP_THRESHOLD (100)
|
||
|
|
||
|
--- a/init/Kconfig
|
||
|
+++ b/init/Kconfig
|
||
|
@@ -157,6 +157,12 @@ config ZEN_INTERACTIVE
|
||
|
Bandwidth slice size...........: 5 -> 3 ms
|
||
|
Task rebalancing threshold.....: 32 -> 8
|
||
|
|
||
|
+ --- CPUFreq Settings -----------------------------------
|
||
|
+
|
||
|
+ Ondemand sampling down factor..: 100 -> 5
|
||
|
+ Ondemand default up threshold..: 63 -> 55
|
||
|
+ Ondemand micro up threshold....: 70 -> 60
|
||
|
+
|
||
|
config BROKEN
|
||
|
bool
|
||
|
|