Messages in this thread Patch in this message |  | | From | Changwoo Min <> | | Subject | [PATCH v2 1/5] sched_ext: Implement scx_rq_clock_update/stale() | | Date | Mon, 2 Dec 2024 13:38:45 +0900 |
| |
scx_rq_clock_update() and scx_rq_clock_stale() manage the status of an rq clock. scx_rq_clock_update() keeps the rq clock in memory and its status valid. scx_rq_clock_stale() invalidates the current rq clock not to use the cached rq clock.
Signed-off-by: Changwoo Min <changwoo@igalia.com> --- kernel/sched/sched.h | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 76f5f53a645f..09d5a64f78ce 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -754,6 +754,7 @@ enum scx_rq_flags { SCX_RQ_BAL_PENDING = 1 << 2, /* balance hasn't run yet */ SCX_RQ_BAL_KEEP = 1 << 3, /* balance decided to keep current */ SCX_RQ_BYPASSING = 1 << 4, + SCX_RQ_CLK_VALID = 1 << 5, /* RQ clock is fresh and valid */ SCX_RQ_IN_WAKEUP = 1 << 16, SCX_RQ_IN_BALANCE = 1 << 17, @@ -766,8 +767,9 @@ struct scx_rq { unsigned long ops_qseq; u64 extra_enq_flags; /* see move_task_to_local_dsq() */ u32 nr_running; - u32 flags; u32 cpuperf_target; /* [0, SCHED_CAPACITY_SCALE] */ + u64 clock; /* cached per-rq clock -- see scx_bpf_clock_get_ns() */ + u32 flags; bool cpu_released; cpumask_var_t cpus_to_kick; cpumask_var_t cpus_to_kick_if_idle; @@ -1353,6 +1355,24 @@ static inline void rq_set_donor(struct rq *rq, struct task_struct *t) /* Do nothing */ } +#ifdef CONFIG_SCHED_CLASS_EXT +static inline void scx_rq_clock_update(struct rq *rq, u64 clock) +{ + rq->scx.clock = clock; + rq->scx.flags |= SCX_RQ_CLK_VALID; +} + +static inline void scx_rq_clock_stale(struct rq *rq) +{ + rq->scx.flags &= ~SCX_RQ_CLK_VALID; +} + +#else +static inline void scx_rq_clock_update(struct rq *rq, u64 clock) {} +static inline void scx_rq_clock_stale(struct rq *rq) {} + +#endif /* CONFIG_SCHED_CLASS_EXT */ + #ifdef CONFIG_SCHED_CORE static inline struct cpumask *sched_group_span(struct sched_group *sg); -- 2.47.1
|  |