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.
This commit is contained in:
Pzqqt 2024-02-17 23:02:23 +08:00 committed by Ksawlii
parent 648fb626ad
commit 3de61e729d
3 changed files with 40 additions and 9 deletions
Documentation/admin-guide
kernel/sched

View file

@ -3723,6 +3723,8 @@
pelt= [KNL] Boot-time parameter changing the PELT half life in ms
Format: <int>
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

View file

@ -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;

View file

@ -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;