* [PATCH 0/2] sched/rt: Move sched_rt_entity::back to CONFIG_RT_GROUP_SCHED
@ 2024-06-03 12:50 Yajun Deng
2024-06-03 12:50 ` [PATCH 1/2] sched/rt: Use 'back' only if CONFIG_RT_GROUP_SCHED is enabled Yajun Deng
2024-06-03 12:50 ` [PATCH 2/2] sched/headers: Move sched_rt_entity::back to under the CONFIG_RT_GROUP_SCHED block Yajun Deng
0 siblings, 2 replies; 5+ messages in thread
From: Yajun Deng @ 2024-06-03 12:50 UTC (permalink / raw)
To: mingo, peterz, juri.lelli, vincent.guittot, dietmar.eggemann,
rostedt, bsegall, mgorman, bristot, vschneid
Cc: linux-kernel, Yajun Deng
The member back in struct sched_rt_entity only related to RT_GROUP_SCHED,
it should not place out of RT_GROUP_SCHED, move back to RT_GROUP_SCHED.
It will save a few bytes.
Yajun Deng (2):
sched/rt: Use 'back' only if CONFIG_RT_GROUP_SCHED is enabled
sched/headers: Move sched_rt_entity::back to under the
CONFIG_RT_GROUP_SCHED block
include/linux/sched.h | 2 +-
kernel/sched/rt.c | 15 ++++++++++-----
2 files changed, 11 insertions(+), 6 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] sched/rt: Use 'back' only if CONFIG_RT_GROUP_SCHED is enabled
2024-06-03 12:50 [PATCH 0/2] sched/rt: Move sched_rt_entity::back to CONFIG_RT_GROUP_SCHED Yajun Deng
@ 2024-06-03 12:50 ` Yajun Deng
2024-06-04 13:22 ` Steven Rostedt
2024-06-03 12:50 ` [PATCH 2/2] sched/headers: Move sched_rt_entity::back to under the CONFIG_RT_GROUP_SCHED block Yajun Deng
1 sibling, 1 reply; 5+ messages in thread
From: Yajun Deng @ 2024-06-03 12:50 UTC (permalink / raw)
To: mingo, peterz, juri.lelli, vincent.guittot, dietmar.eggemann,
rostedt, bsegall, mgorman, bristot, vschneid
Cc: linux-kernel, Yajun Deng
The 'back' member in struct sched_rt_entity only related to
CONFIG_RT_GROUP_SCHED, so there is no need to init it in dequeue_rt_stack.
Init the 'back' member in init_tg_rt_entry and use it only if
CONFIG_RT_GROUP_SCHED is enabled.
Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
---
kernel/sched/rt.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 63e49c8ffc4d..44bb9087cfe5 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -232,8 +232,10 @@ void init_tg_rt_entry(struct task_group *tg, struct rt_rq *rt_rq,
if (!parent)
rt_se->rt_rq = &rq->rt;
- else
+ else {
rt_se->rt_rq = parent->my_q;
+ parent->back = rt_se;
+ }
rt_se->my_q = rt_rq;
rt_se->parent = parent;
@@ -1428,16 +1430,19 @@ static void dequeue_rt_stack(struct sched_rt_entity *rt_se, unsigned int flags)
struct sched_rt_entity *back = NULL;
unsigned int rt_nr_running;
- for_each_sched_rt_entity(rt_se) {
- rt_se->back = back;
+ for_each_sched_rt_entity(rt_se)
back = rt_se;
- }
rt_nr_running = rt_rq_of_se(back)->rt_nr_running;
- for (rt_se = back; rt_se; rt_se = rt_se->back) {
+ for (rt_se = back; rt_se; ) {
if (on_rt_rq(rt_se))
__dequeue_rt_entity(rt_se, flags);
+#ifdef CONFIG_RT_GROUP_SCHED
+ rt_se = rt_se->back;
+#else
+ rt_se = NULL;
+#endif
}
dequeue_top_rt_rq(rt_rq_of_se(back), rt_nr_running);
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] sched/headers: Move sched_rt_entity::back to under the CONFIG_RT_GROUP_SCHED block
2024-06-03 12:50 [PATCH 0/2] sched/rt: Move sched_rt_entity::back to CONFIG_RT_GROUP_SCHED Yajun Deng
2024-06-03 12:50 ` [PATCH 1/2] sched/rt: Use 'back' only if CONFIG_RT_GROUP_SCHED is enabled Yajun Deng
@ 2024-06-03 12:50 ` Yajun Deng
1 sibling, 0 replies; 5+ messages in thread
From: Yajun Deng @ 2024-06-03 12:50 UTC (permalink / raw)
To: mingo, peterz, juri.lelli, vincent.guittot, dietmar.eggemann,
rostedt, bsegall, mgorman, bristot, vschneid
Cc: linux-kernel, Yajun Deng
We already remove the call to the 'back' member when CONFIG_RT_GROUP_SCHED
is disabled.
It's safe to move sched_rt_entity::back to under the
CONFIG_RT_GROUP_SCHED block, it would save a few bytes.
Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
---
include/linux/sched.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 61591ac6eab6..3af89a67fb61 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -582,8 +582,8 @@ struct sched_rt_entity {
unsigned short on_rq;
unsigned short on_list;
- struct sched_rt_entity *back;
#ifdef CONFIG_RT_GROUP_SCHED
+ struct sched_rt_entity *back;
struct sched_rt_entity *parent;
/* rq on which this entity is (to be) queued: */
struct rt_rq *rt_rq;
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] sched/rt: Use 'back' only if CONFIG_RT_GROUP_SCHED is enabled
2024-06-03 12:50 ` [PATCH 1/2] sched/rt: Use 'back' only if CONFIG_RT_GROUP_SCHED is enabled Yajun Deng
@ 2024-06-04 13:22 ` Steven Rostedt
2024-06-05 1:51 ` Yajun Deng
0 siblings, 1 reply; 5+ messages in thread
From: Steven Rostedt @ 2024-06-04 13:22 UTC (permalink / raw)
To: Yajun Deng
Cc: mingo, peterz, juri.lelli, vincent.guittot, dietmar.eggemann,
bsegall, mgorman, bristot, vschneid, linux-kernel
On Mon, 3 Jun 2024 20:50:01 +0800
Yajun Deng <yajun.deng@linux.dev> wrote:
> The 'back' member in struct sched_rt_entity only related to
> CONFIG_RT_GROUP_SCHED, so there is no need to init it in dequeue_rt_stack.
>
> Init the 'back' member in init_tg_rt_entry and use it only if
> CONFIG_RT_GROUP_SCHED is enabled.
>
> Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
> ---
> kernel/sched/rt.c | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
> index 63e49c8ffc4d..44bb9087cfe5 100644
> --- a/kernel/sched/rt.c
> +++ b/kernel/sched/rt.c
> @@ -232,8 +232,10 @@ void init_tg_rt_entry(struct task_group *tg, struct rt_rq *rt_rq,
>
> if (!parent)
> rt_se->rt_rq = &rq->rt;
> - else
> + else {
> rt_se->rt_rq = parent->my_q;
> + parent->back = rt_se;
> + }
If one block of an if/else requires brackets, then both do.
>
> rt_se->my_q = rt_rq;
> rt_se->parent = parent;
> @@ -1428,16 +1430,19 @@ static void dequeue_rt_stack(struct sched_rt_entity *rt_se, unsigned int flags)
> struct sched_rt_entity *back = NULL;
> unsigned int rt_nr_running;
>
> - for_each_sched_rt_entity(rt_se) {
> - rt_se->back = back;
> + for_each_sched_rt_entity(rt_se)
> back = rt_se;
> - }
>
> rt_nr_running = rt_rq_of_se(back)->rt_nr_running;
>
> - for (rt_se = back; rt_se; rt_se = rt_se->back) {
> + for (rt_se = back; rt_se; ) {
> if (on_rt_rq(rt_se))
> __dequeue_rt_entity(rt_se, flags);
> +#ifdef CONFIG_RT_GROUP_SCHED
> + rt_se = rt_se->back;
> +#else
> + rt_se = NULL;
> +#endif
Perhaps make a helper function to get rid of the #ifdef in the code here.
for (rt_se = back, rt_se; rt_se = rt_se_back(rt_se)) {
Where rt_se_back() above can be defined in the #ifdef blocks for
CONFIG_RT_GROUP_SCHED as either:
static struct sched_rt_entity *rt_se_back(struct sched_rt_entity *se)
{
return se->back;
}
Or
static inline struct sched_rt_entity *rt_se_back(struct sched_rt_entity *se)
{
return NULL;
}
-- Steve
> }
>
> dequeue_top_rt_rq(rt_rq_of_se(back), rt_nr_running);
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] sched/rt: Use 'back' only if CONFIG_RT_GROUP_SCHED is enabled
2024-06-04 13:22 ` Steven Rostedt
@ 2024-06-05 1:51 ` Yajun Deng
0 siblings, 0 replies; 5+ messages in thread
From: Yajun Deng @ 2024-06-05 1:51 UTC (permalink / raw)
To: Steven Rostedt
Cc: mingo, peterz, juri.lelli, vincent.guittot, dietmar.eggemann,
bsegall, mgorman, bristot, vschneid, linux-kernel
June 4, 2024 at 9:22 PM, "Steven Rostedt" <rostedt@goodmis.org> wrote:
>
> On Mon, 3 Jun 2024 20:50:01 +0800
>
> Yajun Deng <yajun.deng@linux.dev> wrote:
>
> >
> > The 'back' member in struct sched_rt_entity only related to
> >
> > CONFIG_RT_GROUP_SCHED, so there is no need to init it in dequeue_rt_stack.
> >
> >
> >
> > Init the 'back' member in init_tg_rt_entry and use it only if
> >
> > CONFIG_RT_GROUP_SCHED is enabled.
> >
> >
> >
> > Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
> >
> > ---
> >
> > kernel/sched/rt.c | 15 ++++++++++-----
> >
> > 1 file changed, 10 insertions(+), 5 deletions(-)
> >
> >
> >
> > diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
> >
> > index 63e49c8ffc4d..44bb9087cfe5 100644
> >
> > --- a/kernel/sched/rt.c
> >
> > +++ b/kernel/sched/rt.c
> >
> > @@ -232,8 +232,10 @@ void init_tg_rt_entry(struct task_group *tg, struct rt_rq *rt_rq,
> >
> >
> >
> > if (!parent)
> >
> > rt_se->rt_rq = &rq->rt;
> >
> > - else
> >
> > + else {
> >
> > rt_se->rt_rq = parent->my_q;
> >
> > + parent->back = rt_se;
> >
> > + }
> >
>
> If one block of an if/else requires brackets, then both do.
>
Got it.
> >
> > rt_se->my_q = rt_rq;
> >
> > rt_se->parent = parent;
> >
> > @@ -1428,16 +1430,19 @@ static void dequeue_rt_stack(struct sched_rt_entity *rt_se, unsigned int flags)
> >
> > struct sched_rt_entity *back = NULL;
> >
> > unsigned int rt_nr_running;
> >
> >
> >
> > - for_each_sched_rt_entity(rt_se) {
> >
> > - rt_se->back = back;
> >
> > + for_each_sched_rt_entity(rt_se)
> >
> > back = rt_se;
> >
> > - }
> >
> >
> >
> > rt_nr_running = rt_rq_of_se(back)->rt_nr_running;
> >
> >
> >
> > - for (rt_se = back; rt_se; rt_se = rt_se->back) {
> >
> > + for (rt_se = back; rt_se; ) {
> >
> > if (on_rt_rq(rt_se))
> >
> > __dequeue_rt_entity(rt_se, flags);
> >
> > +#ifdef CONFIG_RT_GROUP_SCHED
> >
> > + rt_se = rt_se->back;
> >
> > +#else
> >
> > + rt_se = NULL;
> >
> > +#endif
> >
>
> Perhaps make a helper function to get rid of the #ifdef in the code here.
>
> for (rt_se = back, rt_se; rt_se = rt_se_back(rt_se)) {
>
> Where rt_se_back() above can be defined in the #ifdef blocks for
>
> CONFIG_RT_GROUP_SCHED as either:
>
> static struct sched_rt_entity *rt_se_back(struct sched_rt_entity *se)
>
> {
>
> return se->back;
>
> }
>
> Or
>
> static inline struct sched_rt_entity *rt_se_back(struct sched_rt_entity *se)
>
> {
>
> return NULL;
>
> }
>
Okay, thanks.
> -- Steve
>
> >
> > }
> >
> >
> >
> > dequeue_top_rt_rq(rt_rq_of_se(back), rt_nr_running);
> >
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-06-05 1:51 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-03 12:50 [PATCH 0/2] sched/rt: Move sched_rt_entity::back to CONFIG_RT_GROUP_SCHED Yajun Deng
2024-06-03 12:50 ` [PATCH 1/2] sched/rt: Use 'back' only if CONFIG_RT_GROUP_SCHED is enabled Yajun Deng
2024-06-04 13:22 ` Steven Rostedt
2024-06-05 1:51 ` Yajun Deng
2024-06-03 12:50 ` [PATCH 2/2] sched/headers: Move sched_rt_entity::back to under the CONFIG_RT_GROUP_SCHED block Yajun Deng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox