diff options
author | Vincent Guittot <vincent.guittot@linaro.org> | 2018-06-28 17:45:04 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2018-07-15 23:51:20 +0200 |
commit | c079629862b20c101e8336362a8b042ec7d942fe (patch) | |
tree | be0246940ddfb4c82c01af1332e2aa4fd3bb8e74 /kernel/sched/sched.h | |
parent | 8fe5c5a937d0f4e84221631833a2718afde52285 (diff) | |
download | lwn-c079629862b20c101e8336362a8b042ec7d942fe.tar.gz lwn-c079629862b20c101e8336362a8b042ec7d942fe.zip |
sched/pelt: Move PELT related code in a dedicated file
We want to track rt_rq's utilization as a part of the estimation of the
whole rq's utilization. This is necessary because rt tasks can steal
utilization to cfs tasks and make them lighter than they are.
As we want to use the same load tracking mecanism for both and prevent
useless dependency between cfs and rt code, PELT code is moved in a
dedicated file.
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Morten.Rasmussen@arm.com
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: claudio@evidence.eu.com
Cc: daniel.lezcano@linaro.org
Cc: dietmar.eggemann@arm.com
Cc: joel@joelfernandes.org
Cc: juri.lelli@redhat.com
Cc: luca.abeni@santannapisa.it
Cc: patrick.bellasi@arm.com
Cc: quentin.perret@arm.com
Cc: rjw@rjwysocki.net
Cc: valentin.schneider@arm.com
Cc: viresh.kumar@linaro.org
Link: http://lkml.kernel.org/r/1530200714-4504-2-git-send-email-vincent.guittot@linaro.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/sched/sched.h')
-rw-r--r-- | kernel/sched/sched.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index c7742dcc136c..00d6f2594c4e 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -673,7 +673,26 @@ struct dl_rq { u64 bw_ratio; }; +#ifdef CONFIG_FAIR_GROUP_SCHED +/* An entity is a task if it doesn't "own" a runqueue */ +#define entity_is_task(se) (!se->my_q) +#else +#define entity_is_task(se) 1 +#endif + #ifdef CONFIG_SMP +/* + * XXX we want to get rid of these helpers and use the full load resolution. + */ +static inline long se_weight(struct sched_entity *se) +{ + return scale_load_down(se->load.weight); +} + +static inline long se_runnable(struct sched_entity *se) +{ + return scale_load_down(se->runnable_weight); +} static inline bool sched_asym_prefer(int a, int b) { |