From 3de61e729d26867d5f3ccbd7d67dd180d49c15ec Mon Sep 17 00:00:00 2001 From: Pzqqt <821026875@qq.com> Date: Sat, 17 Feb 2024 23:02:23 +0800 Subject: [PATCH] kernel: sched: Provide more PELT half-life options - Regenerate `kernel/sched/sched-pelt.h` by `Documentation/scheduler/sched-pelt`. - Now we can choose from 32ms (default), 16ms, 12ms, 8ms. --- .../admin-guide/kernel-parameters.txt | 2 ++ kernel/sched/pelt.c | 12 +++++++ kernel/sched/sched-pelt.h | 35 ++++++++++++++----- 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index c505b06e5..7863a9ad6 100755 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -3723,6 +3723,8 @@ pelt= [KNL] Boot-time parameter changing the PELT half life in ms Format: 32: Set the half life to 32ms + 16: Set the half life to 16ms + 12: Set the half life to 12ms 8: Set the half life to 8ms default: 32 diff --git a/kernel/sched/pelt.c b/kernel/sched/pelt.c index a83794cec..ce76514a6 100755 --- a/kernel/sched/pelt.c +++ b/kernel/sched/pelt.c @@ -64,6 +64,18 @@ static int __set_pelt_halflife(void *data) pelt_runnable_avg_yN_inv = pelt8_runnable_avg_yN_inv; pr_info("PELT half life is set to %dms\n", num); break; + case PELT12_LOAD_AVG_PERIOD: + pelt_load_avg_period = PELT12_LOAD_AVG_PERIOD; + pelt_load_avg_max = PELT12_LOAD_AVG_MAX; + pelt_runnable_avg_yN_inv = pelt12_runnable_avg_yN_inv; + pr_info("PELT half life is set to %dms\n", num); + break; + case PELT16_LOAD_AVG_PERIOD: + pelt_load_avg_period = PELT16_LOAD_AVG_PERIOD; + pelt_load_avg_max = PELT16_LOAD_AVG_MAX; + pelt_runnable_avg_yN_inv = pelt16_runnable_avg_yN_inv; + pr_info("PELT half life is set to %dms\n", num); + break; case PELT32_LOAD_AVG_PERIOD: pelt_load_avg_period = PELT32_LOAD_AVG_PERIOD; pelt_load_avg_max = PELT32_LOAD_AVG_MAX; diff --git a/kernel/sched/sched-pelt.h b/kernel/sched/sched-pelt.h index 92a6875bc..83bc033e1 100755 --- a/kernel/sched/sched-pelt.h +++ b/kernel/sched/sched-pelt.h @@ -2,24 +2,41 @@ /* Generated by Documentation/scheduler/sched-pelt; do not modify. */ static const u32 pelt32_runnable_avg_yN_inv[] __maybe_unused = { - 0xffffffff, 0xfa83b2da, 0xf5257d14, 0xefe4b99a, 0xeac0c6e6, 0xe5b906e6, - 0xe0ccdeeb, 0xdbfbb796, 0xd744fcc9, 0xd2a81d91, 0xce248c14, 0xc9b9bd85, - 0xc5672a10, 0xc12c4cc9, 0xbd08a39e, 0xb8fbaf46, 0xb504f333, 0xb123f581, - 0xad583ee9, 0xa9a15ab4, 0xa5fed6a9, 0xa2704302, 0x9ef5325f, 0x9b8d39b9, - 0x9837f050, 0x94f4efa8, 0x91c3d373, 0x8ea4398a, 0x8b95c1e3, 0x88980e80, - 0x85aac367, 0x82cd8698, + 0xffffffff, 0xfa83b2da, 0xf5257d14, 0xefe4b99a, 0xeac0c6e6, 0xe5b906e6, + 0xe0ccdeeb, 0xdbfbb796, 0xd744fcc9, 0xd2a81d91, 0xce248c14, 0xc9b9bd85, + 0xc5672a10, 0xc12c4cc9, 0xbd08a39e, 0xb8fbaf46, 0xb504f333, 0xb123f581, + 0xad583ee9, 0xa9a15ab4, 0xa5fed6a9, 0xa2704302, 0x9ef5325f, 0x9b8d39b9, + 0x9837f050, 0x94f4efa8, 0x91c3d373, 0x8ea4398a, 0x8b95c1e3, 0x88980e80, + 0x85aac367, 0x82cd8698, }; #define PELT32_LOAD_AVG_PERIOD 32 #define PELT32_LOAD_AVG_MAX 47742 +static const u32 pelt16_runnable_avg_yN_inv[] __maybe_unused = { + 0xffffffff, 0xf5257d14, 0xeac0c6e6, 0xe0ccdeeb, 0xd744fcc9, 0xce248c14, + 0xc5672a10, 0xbd08a39e, 0xb504f333, 0xad583ee9, 0xa5fed6a9, 0x9ef5325f, + 0x9837f050, 0x91c3d373, 0x8b95c1e3, 0x85aac367, +}; + +#define PELT16_LOAD_AVG_PERIOD 16 +#define PELT16_LOAD_AVG_MAX 24130 + +static const u32 pelt12_runnable_avg_yN_inv[] __maybe_unused = { + 0xffffffff, 0xf1a1bf37, 0xe411f039, 0xd744fcc9, 0xcb2ff529, 0xbfc886ba, + 0xb504f333, 0xaadc0846, 0xa14517cb, 0x9837f050, 0x8facd61d, 0x879c7c96, +}; + +#define PELT12_LOAD_AVG_PERIOD 12 +#define PELT12_LOAD_AVG_MAX 18227 + static const u32 pelt8_runnable_avg_yN_inv[] __maybe_unused = { - 0xffffffff, 0xeac0c6e6, 0xd744fcc9, 0xc5672a10, - 0xb504f333, 0xa5fed6a9, 0x9837f050, 0x8b95c1e3, + 0xffffffff, 0xeac0c6e6, 0xd744fcc9, 0xc5672a10, 0xb504f333, 0xa5fed6a9, + 0x9837f050, 0x8b95c1e3, }; #define PELT8_LOAD_AVG_PERIOD 8 -#define PELT8_LOAD_AVG_MAX 12336 +#define PELT8_LOAD_AVG_MAX 12326 extern const u32 *pelt_runnable_avg_yN_inv; extern int pelt_load_avg_period;