This commit is contained in:
ferrreo 2023-07-26 10:45:05 +01:00
parent 88eaaf7a8a
commit 6e71e0f1db
6 changed files with 3161 additions and 912 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
From d5ebb5aa8f44f2a81002becad5f85b6e70801575 Mon Sep 17 00:00:00 2001 From 5c15cb285591295dbbe5da9d7d957fa36e49db0b Mon Sep 17 00:00:00 2001
From: Peter Jung <admin@ptr1337.dev> From: Peter Jung <admin@ptr1337.dev>
Date: Tue, 11 Jul 2023 19:27:06 +0200 Date: Wed, 19 Jul 2023 18:55:28 +0200
Subject: [PATCH] EEVDF Subject: [PATCH] EEVDF
Signed-off-by: Peter Jung <admin@ptr1337.dev> Signed-off-by: Peter Jung <admin@ptr1337.dev>
@ -20,7 +20,7 @@ Signed-off-by: Peter Jung <admin@ptr1337.dev>
12 files changed, 733 insertions(+), 658 deletions(-) 12 files changed, 733 insertions(+), 658 deletions(-)
diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-guide/cgroup-v2.rst diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-guide/cgroup-v2.rst
index e592a9364473..c826ab4e2e1a 100644 index e592a93644739..c826ab4e2e1a1 100644
--- a/Documentation/admin-guide/cgroup-v2.rst --- a/Documentation/admin-guide/cgroup-v2.rst
+++ b/Documentation/admin-guide/cgroup-v2.rst +++ b/Documentation/admin-guide/cgroup-v2.rst
@@ -1121,6 +1121,16 @@ All time durations are in microseconds. @@ -1121,6 +1121,16 @@ All time durations are in microseconds.
@ -41,7 +41,7 @@ index e592a9364473..c826ab4e2e1a 100644
Memory Memory
diff --git a/include/linux/rbtree_augmented.h b/include/linux/rbtree_augmented.h diff --git a/include/linux/rbtree_augmented.h b/include/linux/rbtree_augmented.h
index 7ee7ed5de722..6dbc5a1bf6a8 100644 index 7ee7ed5de7227..6dbc5a1bf6a8c 100644
--- a/include/linux/rbtree_augmented.h --- a/include/linux/rbtree_augmented.h
+++ b/include/linux/rbtree_augmented.h +++ b/include/linux/rbtree_augmented.h
@@ -60,6 +60,32 @@ rb_insert_augmented_cached(struct rb_node *node, @@ -60,6 +60,32 @@ rb_insert_augmented_cached(struct rb_node *node,
@ -78,7 +78,7 @@ index 7ee7ed5de722..6dbc5a1bf6a8 100644
* Template for declaring augmented rbtree callbacks (generic case) * Template for declaring augmented rbtree callbacks (generic case)
* *
diff --git a/include/linux/sched.h b/include/linux/sched.h diff --git a/include/linux/sched.h b/include/linux/sched.h
index 8473324705ca..88c3e7ba8992 100644 index 8473324705caa..88c3e7ba8992e 100644
--- a/include/linux/sched.h --- a/include/linux/sched.h
+++ b/include/linux/sched.h +++ b/include/linux/sched.h
@@ -550,13 +550,18 @@ struct sched_entity { @@ -550,13 +550,18 @@ struct sched_entity {
@ -110,7 +110,7 @@ index 8473324705ca..88c3e7ba8992 100644
struct sched_entity se; struct sched_entity se;
struct sched_rt_entity rt; struct sched_rt_entity rt;
diff --git a/include/uapi/linux/sched.h b/include/uapi/linux/sched.h diff --git a/include/uapi/linux/sched.h b/include/uapi/linux/sched.h
index 3bac0a8ceab2..b2e932c25be6 100644 index 3bac0a8ceab26..b2e932c25be62 100644
--- a/include/uapi/linux/sched.h --- a/include/uapi/linux/sched.h
+++ b/include/uapi/linux/sched.h +++ b/include/uapi/linux/sched.h
@@ -132,6 +132,7 @@ struct clone_args { @@ -132,6 +132,7 @@ struct clone_args {
@ -131,7 +131,7 @@ index 3bac0a8ceab2..b2e932c25be6 100644
#endif /* _UAPI_LINUX_SCHED_H */ #endif /* _UAPI_LINUX_SCHED_H */
diff --git a/include/uapi/linux/sched/types.h b/include/uapi/linux/sched/types.h diff --git a/include/uapi/linux/sched/types.h b/include/uapi/linux/sched/types.h
index f2c4589d4dbf..db1e8199e8c8 100644 index f2c4589d4dbfe..db1e8199e8c80 100644
--- a/include/uapi/linux/sched/types.h --- a/include/uapi/linux/sched/types.h
+++ b/include/uapi/linux/sched/types.h +++ b/include/uapi/linux/sched/types.h
@@ -10,6 +10,7 @@ struct sched_param { @@ -10,6 +10,7 @@ struct sched_param {
@ -175,7 +175,7 @@ index f2c4589d4dbf..db1e8199e8c8 100644
#endif /* _UAPI_LINUX_SCHED_TYPES_H */ #endif /* _UAPI_LINUX_SCHED_TYPES_H */
diff --git a/init/init_task.c b/init/init_task.c diff --git a/init/init_task.c b/init/init_task.c
index ff6c4b9bfe6b..511cbcf3510d 100644 index ff6c4b9bfe6b1..511cbcf3510dc 100644
--- a/init/init_task.c --- a/init/init_task.c
+++ b/init/init_task.c +++ b/init/init_task.c
@@ -78,6 +78,7 @@ struct task_struct init_task @@ -78,6 +78,7 @@ struct task_struct init_task
@ -196,7 +196,7 @@ index ff6c4b9bfe6b..511cbcf3510d 100644
.rt = { .rt = {
.run_list = LIST_HEAD_INIT(init_task.rt.run_list), .run_list = LIST_HEAD_INIT(init_task.rt.run_list),
diff --git a/kernel/sched/core.c b/kernel/sched/core.c diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 1b971c69d3a2..df2f22a9729c 100644 index 1b971c69d3a2a..df2f22a9729cb 100644
--- a/kernel/sched/core.c --- a/kernel/sched/core.c
+++ b/kernel/sched/core.c +++ b/kernel/sched/core.c
@@ -1305,6 +1305,12 @@ static void set_load_weight(struct task_struct *p, bool update_load) @@ -1305,6 +1305,12 @@ static void set_load_weight(struct task_struct *p, bool update_load)
@ -358,7 +358,7 @@ index 1b971c69d3a2..df2f22a9729c 100644
#ifdef CONFIG_CFS_BANDWIDTH #ifdef CONFIG_CFS_BANDWIDTH
{ {
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index aeeba46a096b..5c743bcb340d 100644 index aeeba46a096b9..5c743bcb340d2 100644
--- a/kernel/sched/debug.c --- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c +++ b/kernel/sched/debug.c
@@ -347,10 +347,7 @@ static __init int sched_init_debug(void) @@ -347,10 +347,7 @@ static __init int sched_init_debug(void)
@ -462,7 +462,7 @@ index aeeba46a096b..5c743bcb340d 100644
P(dl.runtime); P(dl.runtime);
P(dl.deadline); P(dl.deadline);
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 64cbea29b007..36dcf4770830 100644 index a6205f9e6cb59..15167f12b9cf3 100644
--- a/kernel/sched/fair.c --- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c +++ b/kernel/sched/fair.c
@@ -47,6 +47,7 @@ @@ -47,6 +47,7 @@
@ -1663,7 +1663,7 @@ index 64cbea29b007..36dcf4770830 100644
} }
@@ -6241,13 +6335,12 @@ static inline void unthrottle_offline_cfs_rqs(struct rq *rq) {} @@ -6259,13 +6353,12 @@ static inline void unthrottle_offline_cfs_rqs(struct rq *rq) {}
static void hrtick_start_fair(struct rq *rq, struct task_struct *p) static void hrtick_start_fair(struct rq *rq, struct task_struct *p)
{ {
struct sched_entity *se = &p->se; struct sched_entity *se = &p->se;
@ -1678,7 +1678,7 @@ index 64cbea29b007..36dcf4770830 100644
s64 delta = slice - ran; s64 delta = slice - ran;
if (delta < 0) { if (delta < 0) {
@@ -6271,8 +6364,7 @@ static void hrtick_update(struct rq *rq) @@ -6289,8 +6382,7 @@ static void hrtick_update(struct rq *rq)
if (!hrtick_enabled_fair(rq) || curr->sched_class != &fair_sched_class) if (!hrtick_enabled_fair(rq) || curr->sched_class != &fair_sched_class)
return; return;
@ -1688,7 +1688,7 @@ index 64cbea29b007..36dcf4770830 100644
} }
#else /* !CONFIG_SCHED_HRTICK */ #else /* !CONFIG_SCHED_HRTICK */
static inline void static inline void
@@ -6313,17 +6405,6 @@ static int sched_idle_rq(struct rq *rq) @@ -6331,17 +6423,6 @@ static int sched_idle_rq(struct rq *rq)
rq->nr_running); rq->nr_running);
} }
@ -1706,7 +1706,7 @@ index 64cbea29b007..36dcf4770830 100644
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
static int sched_idle_cpu(int cpu) static int sched_idle_cpu(int cpu)
{ {
@@ -7809,18 +7890,6 @@ static void migrate_task_rq_fair(struct task_struct *p, int new_cpu) @@ -7827,18 +7908,6 @@ static void migrate_task_rq_fair(struct task_struct *p, int new_cpu)
{ {
struct sched_entity *se = &p->se; struct sched_entity *se = &p->se;
@ -1725,7 +1725,7 @@ index 64cbea29b007..36dcf4770830 100644
if (!task_on_rq_migrating(p)) { if (!task_on_rq_migrating(p)) {
remove_entity_load_avg(se); remove_entity_load_avg(se);
@@ -7858,66 +7927,6 @@ balance_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) @@ -7876,66 +7945,6 @@ balance_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
} }
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
@ -1792,7 +1792,7 @@ index 64cbea29b007..36dcf4770830 100644
static void set_next_buddy(struct sched_entity *se) static void set_next_buddy(struct sched_entity *se)
{ {
for_each_sched_entity(se) { for_each_sched_entity(se) {
@@ -7929,12 +7938,6 @@ static void set_next_buddy(struct sched_entity *se) @@ -7947,12 +7956,6 @@ static void set_next_buddy(struct sched_entity *se)
} }
} }
@ -1805,7 +1805,7 @@ index 64cbea29b007..36dcf4770830 100644
/* /*
* Preempt the current task with a newly woken task if needed: * Preempt the current task with a newly woken task if needed:
*/ */
@@ -7943,7 +7946,6 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ @@ -7961,7 +7964,6 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_
struct task_struct *curr = rq->curr; struct task_struct *curr = rq->curr;
struct sched_entity *se = &curr->se, *pse = &p->se; struct sched_entity *se = &curr->se, *pse = &p->se;
struct cfs_rq *cfs_rq = task_cfs_rq(curr); struct cfs_rq *cfs_rq = task_cfs_rq(curr);
@ -1813,7 +1813,7 @@ index 64cbea29b007..36dcf4770830 100644
int next_buddy_marked = 0; int next_buddy_marked = 0;
int cse_is_idle, pse_is_idle; int cse_is_idle, pse_is_idle;
@@ -7959,7 +7961,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ @@ -7977,7 +7979,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_
if (unlikely(throttled_hierarchy(cfs_rq_of(pse)))) if (unlikely(throttled_hierarchy(cfs_rq_of(pse))))
return; return;
@ -1822,7 +1822,7 @@ index 64cbea29b007..36dcf4770830 100644
set_next_buddy(pse); set_next_buddy(pse);
next_buddy_marked = 1; next_buddy_marked = 1;
} }
@@ -8004,35 +8006,19 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ @@ -8022,35 +8024,19 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_
if (cse_is_idle != pse_is_idle) if (cse_is_idle != pse_is_idle)
return; return;
@ -1865,7 +1865,7 @@ index 64cbea29b007..36dcf4770830 100644
} }
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
@@ -8233,8 +8219,6 @@ static void put_prev_task_fair(struct rq *rq, struct task_struct *prev) @@ -8251,8 +8237,6 @@ static void put_prev_task_fair(struct rq *rq, struct task_struct *prev)
/* /*
* sched_yield() is very simple * sched_yield() is very simple
@ -1874,7 +1874,7 @@ index 64cbea29b007..36dcf4770830 100644
*/ */
static void yield_task_fair(struct rq *rq) static void yield_task_fair(struct rq *rq)
{ {
@@ -8250,21 +8234,19 @@ static void yield_task_fair(struct rq *rq) @@ -8268,21 +8252,19 @@ static void yield_task_fair(struct rq *rq)
clear_buddies(cfs_rq, se); clear_buddies(cfs_rq, se);
@ -1908,7 +1908,7 @@ index 64cbea29b007..36dcf4770830 100644
} }
static bool yield_to_task_fair(struct rq *rq, struct task_struct *p) static bool yield_to_task_fair(struct rq *rq, struct task_struct *p)
@@ -8512,8 +8494,7 @@ static int task_hot(struct task_struct *p, struct lb_env *env) @@ -8530,8 +8512,7 @@ static int task_hot(struct task_struct *p, struct lb_env *env)
* Buddy candidates are cache hot: * Buddy candidates are cache hot:
*/ */
if (sched_feat(CACHE_HOT_BUDDY) && env->dst_rq->nr_running && if (sched_feat(CACHE_HOT_BUDDY) && env->dst_rq->nr_running &&
@ -1918,7 +1918,7 @@ index 64cbea29b007..36dcf4770830 100644
return 1; return 1;
if (sysctl_sched_migration_cost == -1) if (sysctl_sched_migration_cost == -1)
@@ -12139,8 +12120,8 @@ static void rq_offline_fair(struct rq *rq) @@ -12157,8 +12138,8 @@ static void rq_offline_fair(struct rq *rq)
static inline bool static inline bool
__entity_slice_used(struct sched_entity *se, int min_nr_tasks) __entity_slice_used(struct sched_entity *se, int min_nr_tasks)
{ {
@ -1928,7 +1928,7 @@ index 64cbea29b007..36dcf4770830 100644
return (rtime * min_nr_tasks > slice); return (rtime * min_nr_tasks > slice);
} }
@@ -12296,8 +12277,8 @@ static void task_tick_fair(struct rq *rq, struct task_struct *curr, int queued) @@ -12314,8 +12295,8 @@ static void task_tick_fair(struct rq *rq, struct task_struct *curr, int queued)
*/ */
static void task_fork_fair(struct task_struct *p) static void task_fork_fair(struct task_struct *p)
{ {
@ -1938,7 +1938,7 @@ index 64cbea29b007..36dcf4770830 100644
struct rq *rq = this_rq(); struct rq *rq = this_rq();
struct rq_flags rf; struct rq_flags rf;
@@ -12306,22 +12287,9 @@ static void task_fork_fair(struct task_struct *p) @@ -12324,22 +12305,9 @@ static void task_fork_fair(struct task_struct *p)
cfs_rq = task_cfs_rq(current); cfs_rq = task_cfs_rq(current);
curr = cfs_rq->curr; curr = cfs_rq->curr;
@ -1963,7 +1963,7 @@ index 64cbea29b007..36dcf4770830 100644
rq_unlock(rq, &rf); rq_unlock(rq, &rf);
} }
@@ -12350,34 +12318,6 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) @@ -12368,34 +12336,6 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio)
check_preempt_curr(rq, p, 0); check_preempt_curr(rq, p, 0);
} }
@ -1998,7 +1998,7 @@ index 64cbea29b007..36dcf4770830 100644
#ifdef CONFIG_FAIR_GROUP_SCHED #ifdef CONFIG_FAIR_GROUP_SCHED
/* /*
* Propagate the changes of the sched_entity across the tg tree to make it * Propagate the changes of the sched_entity across the tg tree to make it
@@ -12448,16 +12388,6 @@ static void attach_entity_cfs_rq(struct sched_entity *se) @@ -12466,16 +12406,6 @@ static void attach_entity_cfs_rq(struct sched_entity *se)
static void detach_task_cfs_rq(struct task_struct *p) static void detach_task_cfs_rq(struct task_struct *p)
{ {
struct sched_entity *se = &p->se; struct sched_entity *se = &p->se;
@ -2015,7 +2015,7 @@ index 64cbea29b007..36dcf4770830 100644
detach_entity_cfs_rq(se); detach_entity_cfs_rq(se);
} }
@@ -12465,12 +12395,8 @@ static void detach_task_cfs_rq(struct task_struct *p) @@ -12483,12 +12413,8 @@ static void detach_task_cfs_rq(struct task_struct *p)
static void attach_task_cfs_rq(struct task_struct *p) static void attach_task_cfs_rq(struct task_struct *p)
{ {
struct sched_entity *se = &p->se; struct sched_entity *se = &p->se;
@ -2028,7 +2028,7 @@ index 64cbea29b007..36dcf4770830 100644
} }
static void switched_from_fair(struct rq *rq, struct task_struct *p) static void switched_from_fair(struct rq *rq, struct task_struct *p)
@@ -12581,6 +12507,7 @@ int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent) @@ -12599,6 +12525,7 @@ int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent)
goto err; goto err;
tg->shares = NICE_0_LOAD; tg->shares = NICE_0_LOAD;
@ -2036,7 +2036,7 @@ index 64cbea29b007..36dcf4770830 100644
init_cfs_bandwidth(tg_cfs_bandwidth(tg)); init_cfs_bandwidth(tg_cfs_bandwidth(tg));
@@ -12679,6 +12606,9 @@ void init_tg_cfs_entry(struct task_group *tg, struct cfs_rq *cfs_rq, @@ -12697,6 +12624,9 @@ void init_tg_cfs_entry(struct task_group *tg, struct cfs_rq *cfs_rq,
} }
se->my_q = cfs_rq; se->my_q = cfs_rq;
@ -2046,7 +2046,7 @@ index 64cbea29b007..36dcf4770830 100644
/* guarantee group entities always have weight */ /* guarantee group entities always have weight */
update_load_set(&se->load, NICE_0_LOAD); update_load_set(&se->load, NICE_0_LOAD);
se->parent = parent; se->parent = parent;
@@ -12809,6 +12739,29 @@ int sched_group_set_idle(struct task_group *tg, long idle) @@ -12827,6 +12757,29 @@ int sched_group_set_idle(struct task_group *tg, long idle)
return 0; return 0;
} }
@ -2076,7 +2076,7 @@ index 64cbea29b007..36dcf4770830 100644
#else /* CONFIG_FAIR_GROUP_SCHED */ #else /* CONFIG_FAIR_GROUP_SCHED */
void free_fair_sched_group(struct task_group *tg) { } void free_fair_sched_group(struct task_group *tg) { }
@@ -12835,7 +12788,7 @@ static unsigned int get_rr_interval_fair(struct rq *rq, struct task_struct *task @@ -12853,7 +12806,7 @@ static unsigned int get_rr_interval_fair(struct rq *rq, struct task_struct *task
* idle runqueue: * idle runqueue:
*/ */
if (rq->cfs.load.weight) if (rq->cfs.load.weight)
@ -2086,7 +2086,7 @@ index 64cbea29b007..36dcf4770830 100644
return rr_interval; return rr_interval;
} }
diff --git a/kernel/sched/features.h b/kernel/sched/features.h diff --git a/kernel/sched/features.h b/kernel/sched/features.h
index 9e390eb82e38..ca95044a7479 100644 index 9e390eb82e384..ca95044a74791 100644
--- a/kernel/sched/features.h --- a/kernel/sched/features.h
+++ b/kernel/sched/features.h +++ b/kernel/sched/features.h
@@ -1,16 +1,12 @@ @@ -1,16 +1,12 @@
@ -2133,7 +2133,7 @@ index 9e390eb82e38..ca95044a7479 100644
-SCHED_FEAT(ALT_PERIOD, true) -SCHED_FEAT(ALT_PERIOD, true)
-SCHED_FEAT(BASE_SLICE, true) -SCHED_FEAT(BASE_SLICE, true)
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 0605fb53816d..96b1ae519f20 100644 index a6e814eb84cd8..abf5a48b509c6 100644
--- a/kernel/sched/sched.h --- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h +++ b/kernel/sched/sched.h
@@ -372,6 +372,8 @@ struct task_group { @@ -372,6 +372,8 @@ struct task_group {
@ -2174,7 +2174,7 @@ index 0605fb53816d..96b1ae519f20 100644
#ifdef CONFIG_SCHED_DEBUG #ifdef CONFIG_SCHED_DEBUG
unsigned int nr_spread_over; unsigned int nr_spread_over;
@@ -2170,6 +2176,7 @@ extern const u32 sched_prio_to_wmult[40]; @@ -2192,6 +2198,7 @@ extern const u32 sched_prio_to_wmult[40];
#else #else
#define ENQUEUE_MIGRATED 0x00 #define ENQUEUE_MIGRATED 0x00
#endif #endif
@ -2182,7 +2182,7 @@ index 0605fb53816d..96b1ae519f20 100644
#define RETRY_TASK ((void *)-1UL) #define RETRY_TASK ((void *)-1UL)
@@ -2474,11 +2481,9 @@ extern void check_preempt_curr(struct rq *rq, struct task_struct *p, int flags); @@ -2496,11 +2503,9 @@ extern void check_preempt_curr(struct rq *rq, struct task_struct *p, int flags);
extern const_debug unsigned int sysctl_sched_nr_migrate; extern const_debug unsigned int sysctl_sched_nr_migrate;
extern const_debug unsigned int sysctl_sched_migration_cost; extern const_debug unsigned int sysctl_sched_migration_cost;
@ -2196,7 +2196,7 @@ index 0605fb53816d..96b1ae519f20 100644
extern int sysctl_resched_latency_warn_ms; extern int sysctl_resched_latency_warn_ms;
extern int sysctl_resched_latency_warn_once; extern int sysctl_resched_latency_warn_once;
@@ -2491,6 +2496,8 @@ extern unsigned int sysctl_numa_balancing_scan_size; @@ -2513,6 +2518,8 @@ extern unsigned int sysctl_numa_balancing_scan_size;
extern unsigned int sysctl_numa_balancing_hot_threshold; extern unsigned int sysctl_numa_balancing_hot_threshold;
#endif #endif
@ -2205,7 +2205,7 @@ index 0605fb53816d..96b1ae519f20 100644
#ifdef CONFIG_SCHED_HRTICK #ifdef CONFIG_SCHED_HRTICK
/* /*
@@ -3499,4 +3506,7 @@ static inline void task_tick_mm_cid(struct rq *rq, struct task_struct *curr) { } @@ -3521,4 +3528,7 @@ static inline void task_tick_mm_cid(struct rq *rq, struct task_struct *curr) { }
static inline void init_sched_mm_cid(struct task_struct *t) { } static inline void init_sched_mm_cid(struct task_struct *t) { }
#endif #endif
@ -2214,7 +2214,7 @@ index 0605fb53816d..96b1ae519f20 100644
+ +
#endif /* _KERNEL_SCHED_SCHED_H */ #endif /* _KERNEL_SCHED_SCHED_H */
diff --git a/tools/include/uapi/linux/sched.h b/tools/include/uapi/linux/sched.h diff --git a/tools/include/uapi/linux/sched.h b/tools/include/uapi/linux/sched.h
index 3bac0a8ceab2..b2e932c25be6 100644 index 3bac0a8ceab26..b2e932c25be62 100644
--- a/tools/include/uapi/linux/sched.h --- a/tools/include/uapi/linux/sched.h
+++ b/tools/include/uapi/linux/sched.h +++ b/tools/include/uapi/linux/sched.h
@@ -132,6 +132,7 @@ struct clone_args { @@ -132,6 +132,7 @@ struct clone_args {

View File

@ -1,21 +1,21 @@
From 4a346951e2b3c7de65511c95f74fdd7197e3d2e5 Mon Sep 17 00:00:00 2001 From 06140f2f7a609e07d9fc7d1c79343772ead98dbd Mon Sep 17 00:00:00 2001
From: Peter Jung <admin@ptr1337.dev> From: Piotr Gorski <lucjan.lucjanov@gmail.com>
Date: Tue, 11 Jul 2023 19:31:15 +0200 Date: Sun, 23 Jul 2023 09:44:46 +0200
Subject: [PATCH] bore-eevdf Subject: [PATCH] bore-eevdf
Signed-off-by: Peter Jung <admin@ptr1337.dev> Signed-off-by: Piotr Gorski <lucjan.lucjanov@gmail.com>
--- ---
include/linux/sched.h | 10 +++ include/linux/sched.h | 10 ++
init/Kconfig | 20 +++++ init/Kconfig | 20 ++++
kernel/sched/core.c | 62 +++++++++++++ kernel/sched/core.c | 117 +++++++++++++++++++++++
kernel/sched/debug.c | 4 + kernel/sched/debug.c | 4 +
kernel/sched/fair.c | 193 ++++++++++++++++++++++++++++++++++++++-- kernel/sched/fair.c | 203 ++++++++++++++++++++++++++++++++++++++--
kernel/sched/features.h | 4 + kernel/sched/features.h | 4 +
kernel/sched/sched.h | 1 + kernel/sched/sched.h | 1 +
7 files changed, 286 insertions(+), 8 deletions(-) 7 files changed, 351 insertions(+), 8 deletions(-)
diff --git a/include/linux/sched.h b/include/linux/sched.h diff --git a/include/linux/sched.h b/include/linux/sched.h
index 88c3e7ba8992..6b4c553aea75 100644 index 88c3e7ba8..6b4c553ae 100644
--- a/include/linux/sched.h --- a/include/linux/sched.h
+++ b/include/linux/sched.h +++ b/include/linux/sched.h
@@ -560,6 +560,12 @@ struct sched_entity { @@ -560,6 +560,12 @@ struct sched_entity {
@ -43,7 +43,7 @@ index 88c3e7ba8992..6b4c553aea75 100644
/* /*
* 'ptraced' is the list of tasks this task is using ptrace() on. * 'ptraced' is the list of tasks this task is using ptrace() on.
diff --git a/init/Kconfig b/init/Kconfig diff --git a/init/Kconfig b/init/Kconfig
index b6d38eccca10..e90546df3182 100644 index b6d38eccc..e90546df3 100644
--- a/init/Kconfig --- a/init/Kconfig
+++ b/init/Kconfig +++ b/init/Kconfig
@@ -1277,6 +1277,26 @@ config CHECKPOINT_RESTORE @@ -1277,6 +1277,26 @@ config CHECKPOINT_RESTORE
@ -74,16 +74,17 @@ index b6d38eccca10..e90546df3182 100644
bool "Automatic process group scheduling" bool "Automatic process group scheduling"
select CGROUPS select CGROUPS
diff --git a/kernel/sched/core.c b/kernel/sched/core.c diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index df2f22a9729c..4995243a2ba4 100644 index df2f22a97..df8b76e2c 100644
--- a/kernel/sched/core.c --- a/kernel/sched/core.c
+++ b/kernel/sched/core.c +++ b/kernel/sched/core.c
@@ -4490,6 +4490,57 @@ int wake_up_state(struct task_struct *p, unsigned int state) @@ -4490,6 +4490,112 @@ int wake_up_state(struct task_struct *p, unsigned int state)
return try_to_wake_up(p, state, 0); return try_to_wake_up(p, state, 0);
} }
+#ifdef CONFIG_SCHED_BORE +#ifdef CONFIG_SCHED_BORE
+#define CHILD_BURST_CUTOFF_BITS 9 +#define CHILD_BURST_CUTOFF_BITS 9
+extern unsigned int sched_burst_cache_lifetime; +extern unsigned int sched_burst_cache_lifetime;
+extern unsigned int sched_burst_fork_atavistic;
+ +
+void __init sched_init_bore(void) { +void __init sched_init_bore(void) {
+ init_task.child_burst_cache = 0; + init_task.child_burst_cache = 0;
@ -93,82 +94,136 @@ index df2f22a9729c..4995243a2ba4 100644
+ init_task.se.max_burst_time = 0; + init_task.se.max_burst_time = 0;
+} +}
+ +
+void inline __sched_fork_bore(struct task_struct *p) { +void inline sched_fork_bore(struct task_struct *p) {
+ p->child_burst_cache = 0; + p->child_burst_cache = 0;
+ p->child_burst_last_cached = 0; + p->child_burst_last_cached = 0;
+ p->se.burst_time = 0; + p->se.burst_time = 0;
+} +}
+ +
+static inline void update_task_child_burst_time_cache(struct task_struct *p) { +static u32 count_child_tasks(struct task_struct *p) {
+ u64 sum = 0, avg_burst_time = 0;
+ u32 cnt = 0;
+ struct task_struct *child; + struct task_struct *child;
+ u32 cnt = 0;
+ list_for_each_entry(child, &p->children, sibling) {cnt++;}
+ return cnt;
+}
+
+static inline bool child_burst_cache_expired(struct task_struct *p, u64 now) {
+ return (p->child_burst_last_cached + sched_burst_cache_lifetime < now);
+}
+
+static void __update_child_burst_cache(
+ struct task_struct *p, u32 cnt, u64 sum, u64 now) {
+ u64 avg = 0;
+ if (cnt) avg = div_u64(sum, cnt) << CHILD_BURST_CUTOFF_BITS;
+ p->child_burst_cache = max(avg, p->se.max_burst_time);
+ p->child_burst_last_cached = now;
+}
+
+static void update_child_burst_cache(struct task_struct *p, u64 now) {
+ struct task_struct *child;
+ u32 cnt = 0;
+ u64 sum = 0;
+ +
+ read_lock(&tasklist_lock);
+ list_for_each_entry(child, &p->children, sibling) { + list_for_each_entry(child, &p->children, sibling) {
+ cnt++; + cnt++;
+ sum += child->se.max_burst_time >> CHILD_BURST_CUTOFF_BITS; + sum += child->se.max_burst_time >> CHILD_BURST_CUTOFF_BITS;
+ } + }
+ read_unlock(&tasklist_lock);
+ +
+ if (cnt) avg_burst_time = div_u64(sum, cnt) << CHILD_BURST_CUTOFF_BITS; + __update_child_burst_cache(p, cnt, sum, now);
+ p->child_burst_cache = max(avg_burst_time, p->se.max_burst_time);
+} +}
+ +
+static void update_task_initial_burst_time(struct task_struct *task) { +static void update_child_burst_cache_atavistic(
+ struct sched_entity *se = &task->se; + struct task_struct *p, u64 now, u32 depth, u32 *acnt, u64 *asum) {
+ struct task_struct *par = task->real_parent; + struct task_struct *child, *dec;
+ u64 now = ktime_get_ns(); + u32 cnt = 0, dcnt = 0;
+ u64 sum = 0;
+ +
+ if (likely(par)) { + list_for_each_entry(child, &p->children, sibling) {
+ if (par->child_burst_last_cached + sched_burst_cache_lifetime < now) { + dec = child;
+ par->child_burst_last_cached = now; + while ((dcnt = count_child_tasks(dec)) == 1)
+ update_task_child_burst_time_cache(par); + dec = list_first_entry(&dec->children, struct task_struct, sibling);
+
+ if (!dcnt || !depth) {
+ cnt++;
+ sum += dec->se.max_burst_time >> CHILD_BURST_CUTOFF_BITS;
+ } else {
+ if (child_burst_cache_expired(dec, now))
+ update_child_burst_cache_atavistic(dec, now, depth - 1, &cnt, &sum);
+ else {
+ cnt += dcnt;
+ sum += (dec->child_burst_cache >> CHILD_BURST_CUTOFF_BITS) * dcnt;
+ }
+ } + }
+ se->prev_burst_time = max(se->prev_burst_time, par->child_burst_cache);
+ } + }
+ +
+ se->max_burst_time = se->prev_burst_time; + __update_child_burst_cache(p, cnt, sum, now);
+ *acnt += cnt;
+ *asum += sum;
+}
+
+static void update_task_initial_burst_time(struct task_struct *p) {
+ struct sched_entity *se = &p->se;
+ struct task_struct *anc = p->real_parent;
+ u64 now = ktime_get_ns();
+ u32 cnt = 0;
+ u64 sum = 0;
+
+ read_lock(&tasklist_lock);
+
+ if (sched_burst_fork_atavistic) {
+ while ((anc->real_parent != anc) && (count_child_tasks(anc) == 1))
+ anc = anc->real_parent;
+ if (child_burst_cache_expired(anc, now))
+ update_child_burst_cache_atavistic(
+ anc, now, sched_burst_fork_atavistic - 1, &cnt, &sum);
+ } else
+ if (child_burst_cache_expired(anc, now))
+ update_child_burst_cache(anc, now);
+
+ read_unlock(&tasklist_lock);
+
+ se->max_burst_time = se->prev_burst_time =
+ max(se->prev_burst_time, anc->child_burst_cache);
+} +}
+#endif // CONFIG_SCHED_BORE +#endif // CONFIG_SCHED_BORE
+ +
/* /*
* Perform scheduler related setup for a newly forked process p. * Perform scheduler related setup for a newly forked process p.
* p is forked by current. * p is forked by current.
@@ -4506,6 +4557,9 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p) @@ -4506,6 +4612,9 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p)
p->se.prev_sum_exec_runtime = 0; p->se.prev_sum_exec_runtime = 0;
p->se.nr_migrations = 0; p->se.nr_migrations = 0;
p->se.vruntime = 0; p->se.vruntime = 0;
+#ifdef CONFIG_SCHED_BORE +#ifdef CONFIG_SCHED_BORE
+ __sched_fork_bore(p); + sched_fork_bore(p);
+#endif // CONFIG_SCHED_BORE +#endif // CONFIG_SCHED_BORE
p->se.vlag = 0; p->se.vlag = 0;
INIT_LIST_HEAD(&p->se.group_node); INIT_LIST_HEAD(&p->se.group_node);
@@ -4735,6 +4789,9 @@ late_initcall(sched_core_sysctl_init); @@ -4827,6 +4936,9 @@ void sched_cgroup_fork(struct task_struct *p, struct kernel_clone_args *kargs)
int sched_fork(unsigned long clone_flags, struct task_struct *p)
void sched_post_fork(struct task_struct *p)
{ {
__sched_fork(clone_flags, p);
+#ifdef CONFIG_SCHED_BORE +#ifdef CONFIG_SCHED_BORE
+ update_task_initial_burst_time(p); + update_task_initial_burst_time(p);
+#endif // CONFIG_SCHED_BORE +#endif // CONFIG_SCHED_BORE
/* uclamp_post_fork(p);
* We mark the process as NEW here. This guarantees that }
* nobody will actually run it, and a signal or other external
@@ -9968,6 +10025,11 @@ void __init sched_init(void) @@ -9968,6 +10080,11 @@ void __init sched_init(void)
BUG_ON(&dl_sched_class != &stop_sched_class + 1); BUG_ON(&dl_sched_class != &stop_sched_class + 1);
#endif #endif
+#ifdef CONFIG_SCHED_BORE +#ifdef CONFIG_SCHED_BORE
+ sched_init_bore(); + sched_init_bore();
+ printk(KERN_INFO "BORE (Burst-Oriented Response Enhancer) CPU Scheduler modification 2.4.2 by Masahito Suzuki"); + printk(KERN_INFO "BORE (Burst-Oriented Response Enhancer) CPU Scheduler modification 2.5.3 by Masahito Suzuki");
+#endif // CONFIG_SCHED_BORE +#endif // CONFIG_SCHED_BORE
+ +
wait_bit_init(); wait_bit_init();
#ifdef CONFIG_FAIR_GROUP_SCHED #ifdef CONFIG_FAIR_GROUP_SCHED
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 5c743bcb340d..755ef4c8d34b 100644 index 5c743bcb3..755ef4c8d 100644
--- a/kernel/sched/debug.c --- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c +++ b/kernel/sched/debug.c
@@ -348,6 +348,7 @@ static __init int sched_init_debug(void) @@ -348,6 +348,7 @@ static __init int sched_init_debug(void)
@ -190,7 +245,7 @@ index 5c743bcb340d..755ef4c8d34b 100644
SEQ_printf(m, " %d %d", task_node(p), task_numa_group_id(p)); SEQ_printf(m, " %d %d", task_node(p), task_numa_group_id(p));
#endif #endif
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 36dcf4770830..30080b227866 100644 index 15167f12b..51f1b7a67 100644
--- a/kernel/sched/fair.c --- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c +++ b/kernel/sched/fair.c
@@ -19,6 +19,9 @@ @@ -19,6 +19,9 @@
@ -226,7 +281,7 @@ index 36dcf4770830..30080b227866 100644
/* /*
* After fork, child runs first. If set to 0 (default) then * After fork, child runs first. If set to 0 (default) then
@@ -84,8 +87,75 @@ static unsigned int normalized_sysctl_sched_base_slice = 750000ULL; @@ -84,8 +87,76 @@ static unsigned int normalized_sysctl_sched_base_slice = 750000ULL;
*/ */
unsigned int sysctl_sched_child_runs_first __read_mostly; unsigned int sysctl_sched_child_runs_first __read_mostly;
@ -246,10 +301,11 @@ index 36dcf4770830..30080b227866 100644
+#ifdef CONFIG_SCHED_BORE +#ifdef CONFIG_SCHED_BORE
+unsigned int __read_mostly sched_bore = 1; +unsigned int __read_mostly sched_bore = 1;
+unsigned int __read_mostly sched_burst_cache_lifetime = 15000000; +unsigned int __read_mostly sched_burst_cache_lifetime = 60000000;
+unsigned int __read_mostly sched_burst_penalty_offset = 18; +unsigned int __read_mostly sched_burst_penalty_offset = 12;
+unsigned int __read_mostly sched_burst_penalty_scale = 1292; +unsigned int __read_mostly sched_burst_penalty_scale = 1292;
+unsigned int __read_mostly sched_burst_smoothness = 1; +unsigned int __read_mostly sched_burst_smoothness = 2;
+unsigned int __read_mostly sched_burst_fork_atavistic = 2;
+static int three = 3; +static int three = 3;
+static int sixty_four = 64; +static int sixty_four = 64;
+static int maxval_12_bits = 4095; +static int maxval_12_bits = 4095;
@ -279,7 +335,7 @@ index 36dcf4770830..30080b227866 100644
+} +}
+ +
+static inline u64 __binary_smooth(u64 new, u64 old, unsigned int smoothness) { +static inline u64 __binary_smooth(u64 new, u64 old, unsigned int smoothness) {
+ return (new + old * ((1 << smoothness) - 1)) >> smoothness; + return (new <= old)? new: (new + old * ((1 << smoothness) - 1)) >> smoothness;
+} +}
+ +
+void restart_burst(struct sched_entity *se) { +void restart_burst(struct sched_entity *se) {
@ -302,7 +358,7 @@ index 36dcf4770830..30080b227866 100644
int sched_thermal_decay_shift; int sched_thermal_decay_shift;
static int __init setup_sched_thermal_decay_shift(char *str) static int __init setup_sched_thermal_decay_shift(char *str)
{ {
@@ -145,6 +215,51 @@ static unsigned int sysctl_numa_balancing_promote_rate_limit = 65536; @@ -145,6 +216,60 @@ static unsigned int sysctl_numa_balancing_promote_rate_limit = 65536;
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
static struct ctl_table sched_fair_sysctls[] = { static struct ctl_table sched_fair_sysctls[] = {
@ -324,6 +380,15 @@ index 36dcf4770830..30080b227866 100644
+ .proc_handler = proc_dointvec, + .proc_handler = proc_dointvec,
+ }, + },
+ { + {
+ .procname = "sched_burst_fork_atavistic",
+ .data = &sched_burst_fork_atavistic,
+ .maxlen = sizeof(unsigned int),
+ .mode = 0644,
+ .proc_handler = &proc_dointvec_minmax,
+ .extra1 = SYSCTL_ZERO,
+ .extra2 = &three,
+ },
+ {
+ .procname = "sched_burst_penalty_offset", + .procname = "sched_burst_penalty_offset",
+ .data = &sched_burst_penalty_offset, + .data = &sched_burst_penalty_offset,
+ .maxlen = sizeof(unsigned int), + .maxlen = sizeof(unsigned int),
@ -354,7 +419,7 @@ index 36dcf4770830..30080b227866 100644
{ {
.procname = "sched_child_runs_first", .procname = "sched_child_runs_first",
.data = &sysctl_sched_child_runs_first, .data = &sysctl_sched_child_runs_first,
@@ -238,6 +353,7 @@ static void update_sysctl(void) @@ -238,6 +363,7 @@ static void update_sysctl(void)
#define SET_SYSCTL(name) \ #define SET_SYSCTL(name) \
(sysctl_##name = (factor) * normalized_sysctl_##name) (sysctl_##name = (factor) * normalized_sysctl_##name)
SET_SYSCTL(sched_base_slice); SET_SYSCTL(sched_base_slice);
@ -362,7 +427,7 @@ index 36dcf4770830..30080b227866 100644
#undef SET_SYSCTL #undef SET_SYSCTL
} }
@@ -308,11 +424,19 @@ static u64 __calc_delta(u64 delta_exec, unsigned long weight, struct load_weight @@ -308,11 +434,19 @@ static u64 __calc_delta(u64 delta_exec, unsigned long weight, struct load_weight
/* /*
* delta /= w * delta /= w
*/ */
@ -382,7 +447,7 @@ index 36dcf4770830..30080b227866 100644
return delta; return delta;
} }
@@ -708,7 +832,11 @@ void update_entity_lag(struct cfs_rq *cfs_rq, struct sched_entity *se) @@ -708,7 +842,11 @@ void update_entity_lag(struct cfs_rq *cfs_rq, struct sched_entity *se)
SCHED_WARN_ON(!se->on_rq); SCHED_WARN_ON(!se->on_rq);
lag = avg_vruntime(cfs_rq) - se->vruntime; lag = avg_vruntime(cfs_rq) - se->vruntime;
@ -394,7 +459,7 @@ index 36dcf4770830..30080b227866 100644
se->vlag = clamp(lag, -limit, limit); se->vlag = clamp(lag, -limit, limit);
} }
@@ -946,6 +1074,7 @@ int sched_update_scaling(void) @@ -946,6 +1084,7 @@ int sched_update_scaling(void)
#define WRT_SYSCTL(name) \ #define WRT_SYSCTL(name) \
(normalized_sysctl_##name = sysctl_##name / (factor)) (normalized_sysctl_##name = sysctl_##name / (factor))
WRT_SYSCTL(sched_base_slice); WRT_SYSCTL(sched_base_slice);
@ -402,7 +467,7 @@ index 36dcf4770830..30080b227866 100644
#undef WRT_SYSCTL #undef WRT_SYSCTL
return 0; return 0;
@@ -1123,6 +1252,11 @@ static void update_curr(struct cfs_rq *cfs_rq) @@ -1123,6 +1262,11 @@ static void update_curr(struct cfs_rq *cfs_rq)
curr->sum_exec_runtime += delta_exec; curr->sum_exec_runtime += delta_exec;
schedstat_add(cfs_rq->exec_clock, delta_exec); schedstat_add(cfs_rq->exec_clock, delta_exec);
@ -414,7 +479,7 @@ index 36dcf4770830..30080b227866 100644
curr->vruntime += calc_delta_fair(delta_exec, curr); curr->vruntime += calc_delta_fair(delta_exec, curr);
update_deadline(cfs_rq, curr); update_deadline(cfs_rq, curr);
update_min_vruntime(cfs_rq); update_min_vruntime(cfs_rq);
@@ -5237,6 +5371,9 @@ set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se) @@ -5237,6 +5381,9 @@ set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
se->prev_sum_exec_runtime = se->sum_exec_runtime; se->prev_sum_exec_runtime = se->sum_exec_runtime;
} }
@ -424,7 +489,7 @@ index 36dcf4770830..30080b227866 100644
/* /*
* Pick the next process, keeping these things in mind, in this order: * Pick the next process, keeping these things in mind, in this order:
* 1) keep things fair between processes/task groups * 1) keep things fair between processes/task groups
@@ -5247,14 +5384,16 @@ set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se) @@ -5247,14 +5394,16 @@ set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se)
static struct sched_entity * static struct sched_entity *
pick_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *curr) pick_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *curr)
{ {
@ -443,7 +508,7 @@ index 36dcf4770830..30080b227866 100644
} }
static bool check_cfs_rq_runtime(struct cfs_rq *cfs_rq); static bool check_cfs_rq_runtime(struct cfs_rq *cfs_rq);
@@ -6504,6 +6643,38 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags) @@ -6522,6 +6671,38 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
hrtick_update(rq); hrtick_update(rq);
} }
@ -482,7 +547,7 @@ index 36dcf4770830..30080b227866 100644
static void set_next_buddy(struct sched_entity *se); static void set_next_buddy(struct sched_entity *se);
/* /*
@@ -6522,6 +6693,9 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags) @@ -6540,6 +6721,9 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags)
util_est_dequeue(&rq->cfs, p); util_est_dequeue(&rq->cfs, p);
for_each_sched_entity(se) { for_each_sched_entity(se) {
@ -492,7 +557,7 @@ index 36dcf4770830..30080b227866 100644
cfs_rq = cfs_rq_of(se); cfs_rq = cfs_rq_of(se);
dequeue_entity(cfs_rq, se, flags); dequeue_entity(cfs_rq, se, flags);
@@ -8012,7 +8186,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ @@ -8030,7 +8214,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_
/* /*
* XXX pick_eevdf(cfs_rq) != se ? * XXX pick_eevdf(cfs_rq) != se ?
*/ */
@ -501,7 +566,7 @@ index 36dcf4770830..30080b227866 100644
goto preempt; goto preempt;
return; return;
@@ -8225,6 +8399,9 @@ static void yield_task_fair(struct rq *rq) @@ -8243,6 +8427,9 @@ static void yield_task_fair(struct rq *rq)
struct task_struct *curr = rq->curr; struct task_struct *curr = rq->curr;
struct cfs_rq *cfs_rq = task_cfs_rq(curr); struct cfs_rq *cfs_rq = task_cfs_rq(curr);
struct sched_entity *se = &curr->se; struct sched_entity *se = &curr->se;
@ -512,7 +577,7 @@ index 36dcf4770830..30080b227866 100644
/* /*
* Are we the only task in the tree? * Are we the only task in the tree?
diff --git a/kernel/sched/features.h b/kernel/sched/features.h diff --git a/kernel/sched/features.h b/kernel/sched/features.h
index ca95044a7479..a7d34d1b28c5 100644 index ca95044a7..a7d34d1b2 100644
--- a/kernel/sched/features.h --- a/kernel/sched/features.h
+++ b/kernel/sched/features.h +++ b/kernel/sched/features.h
@@ -13,7 +13,11 @@ SCHED_FEAT(PLACE_DEADLINE_INITIAL, true) @@ -13,7 +13,11 @@ SCHED_FEAT(PLACE_DEADLINE_INITIAL, true)
@ -528,10 +593,10 @@ index ca95044a7479..a7d34d1b28c5 100644
/* /*
* Consider buddies to be cache hot, decreases the likeliness of a * Consider buddies to be cache hot, decreases the likeliness of a
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 96b1ae519f20..cc0a17fb23c2 100644 index abf5a48b5..a9f9e80a1 100644
--- a/kernel/sched/sched.h --- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h +++ b/kernel/sched/sched.h
@@ -2482,6 +2482,7 @@ extern const_debug unsigned int sysctl_sched_nr_migrate; @@ -2504,6 +2504,7 @@ extern const_debug unsigned int sysctl_sched_nr_migrate;
extern const_debug unsigned int sysctl_sched_migration_cost; extern const_debug unsigned int sysctl_sched_migration_cost;
extern unsigned int sysctl_sched_base_slice; extern unsigned int sysctl_sched_base_slice;
@ -540,4 +605,4 @@ index 96b1ae519f20..cc0a17fb23c2 100644
#ifdef CONFIG_SCHED_DEBUG #ifdef CONFIG_SCHED_DEBUG
extern int sysctl_resched_latency_warn_ms; extern int sysctl_resched_latency_warn_ms;
-- --
2.41.0 2.41.0.159.g0bfa463d37

File diff suppressed because it is too large Load Diff

View File

@ -2,4 +2,4 @@
echo "Pika Kernel - Building" echo "Pika Kernel - Building"
make -j`nproc` bindeb-pkg LOCALVERSION=-pikaos KDEB_PKGVERSION=$(make kernelversion)-24 make -j`nproc` bindeb-pkg LOCALVERSION=-pikaos KDEB_PKGVERSION=$(make kernelversion)-1

View File

@ -2,7 +2,7 @@
echo "Pika Kernel - Getting source" echo "Pika Kernel - Getting source"
wget -nv https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.4.3.tar.gz wget -nv https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.4.6.tar.gz
tar -xf ./linux-6.4.3.tar.gz tar -xf ./linux-6.4.6.tar.gz
cd linux-6.4.3 cd linux-6.4.6