* [PATCH 0/3] sched/debug: Add uclamp values to procfs
@ 2020-02-25 17:52 Valentin Schneider
2020-02-25 17:52 ` [PATCH 1/3] sched/debug: Remove redundant macro define Valentin Schneider
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Valentin Schneider @ 2020-02-25 17:52 UTC (permalink / raw)
To: linux-kernel
Cc: mingo, peterz, vincent.guittot, Dietmar.Eggemann,
patrick.bellasi, qais.yousef
Hi,
This is a small debug series I've been sitting on. It's been helpful in
testing and reviewing some uclamp stuff, for instance the issue Qais fixed
at [1] was really easy to observe with those debug prints.
[1]: https://lore.kernel.org/lkml/20191224115405.30622-1-qais.yousef@arm.com/
Cheers,
Valentin
Valentin Schneider (3):
sched/debug: Remove redundant macro define
sched/debug: Bunch up printing formats in common macros
sched/debug: Add task uclamp values to SCHED_DEBUG procfs
kernel/sched/debug.c | 44 ++++++++++++++++++--------------------------
1 file changed, 18 insertions(+), 26 deletions(-)
--
2.24.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] sched/debug: Remove redundant macro define
2020-02-25 17:52 [PATCH 0/3] sched/debug: Add uclamp values to procfs Valentin Schneider
@ 2020-02-25 17:52 ` Valentin Schneider
2020-02-25 17:52 ` [PATCH 2/3] sched/debug: Bunch up printing formats in common macros Valentin Schneider
2020-02-25 17:52 ` [PATCH 3/3] sched/debug: Add task uclamp values to SCHED_DEBUG procfs Valentin Schneider
2 siblings, 0 replies; 5+ messages in thread
From: Valentin Schneider @ 2020-02-25 17:52 UTC (permalink / raw)
To: linux-kernel
Cc: mingo, peterz, vincent.guittot, Dietmar.Eggemann,
patrick.bellasi, qais.yousef
Most printing macros for procfs are defined globally in debug.c, and they
are re-defined (to the exact same thing) within proc_sched_show_task().
Get rid of the duplicate defines.
Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
---
kernel/sched/debug.c | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 8331bc04aea2..4670151eb131 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -868,16 +868,8 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns,
SEQ_printf(m,
"---------------------------------------------------------"
"----------\n");
-#define __P(F) \
- SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)F)
-#define P(F) \
- SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)p->F)
#define P_SCHEDSTAT(F) \
SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)schedstat_val(p->F))
-#define __PN(F) \
- SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)F))
-#define PN(F) \
- SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)p->F))
#define PN_SCHEDSTAT(F) \
SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)schedstat_val(p->F)))
@@ -963,11 +955,7 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns,
P(dl.deadline);
}
#undef PN_SCHEDSTAT
-#undef PN
-#undef __PN
#undef P_SCHEDSTAT
-#undef P
-#undef __P
{
unsigned int this_cpu = raw_smp_processor_id();
--
2.24.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] sched/debug: Bunch up printing formats in common macros
2020-02-25 17:52 [PATCH 0/3] sched/debug: Add uclamp values to procfs Valentin Schneider
2020-02-25 17:52 ` [PATCH 1/3] sched/debug: Remove redundant macro define Valentin Schneider
@ 2020-02-25 17:52 ` Valentin Schneider
[not found] ` <20200226072121.GA8957@geo.homenetwork>
2020-02-25 17:52 ` [PATCH 3/3] sched/debug: Add task uclamp values to SCHED_DEBUG procfs Valentin Schneider
2 siblings, 1 reply; 5+ messages in thread
From: Valentin Schneider @ 2020-02-25 17:52 UTC (permalink / raw)
To: linux-kernel
Cc: mingo, peterz, vincent.guittot, Dietmar.Eggemann,
patrick.bellasi, qais.yousef
The printing macros in debug.c keep redefining the same output
format. Collect each output format in a single definition, and reuse that
definition in the other macros. While at it, replace printf's redefining
those formats with the newly introduced macros.
Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
---
kernel/sched/debug.c | 26 ++++++++++++--------------
1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 4670151eb131..47411a85087c 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -816,10 +816,12 @@ static int __init init_sched_debug_procfs(void)
__initcall(init_sched_debug_procfs);
-#define __P(F) SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)F)
-#define P(F) SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)p->F)
-#define __PN(F) SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)F))
-#define PN(F) SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)p->F))
+#define __PS(S, F) SEQ_printf(m, "%-45s:%21Ld\n", S, (long long)F)
+#define __P(F) __PS(#F, F)
+#define P(F) __PS(#F, p->F)
+#define __PSN(S, F) SEQ_printf(m, "%-45s:%14Ld.%06ld\n", S, SPLIT_NS((long long)F))
+#define __PN(F) __PSN(#F, F)
+#define PN(F) __PSN(#F, p->F)
#ifdef CONFIG_NUMA_BALANCING
@@ -868,10 +870,9 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns,
SEQ_printf(m,
"---------------------------------------------------------"
"----------\n");
-#define P_SCHEDSTAT(F) \
- SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)schedstat_val(p->F))
-#define PN_SCHEDSTAT(F) \
- SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)schedstat_val(p->F)))
+
+#define P_SCHEDSTAT(F) __PS(#F, schedstat_val(p->F))
+#define PN_SCHEDSTAT(F) __PSN(#F, schedstat_val(p->F))
PN(se.exec_start);
PN(se.vruntime);
@@ -931,10 +932,8 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns,
}
__P(nr_switches);
- SEQ_printf(m, "%-45s:%21Ld\n",
- "nr_voluntary_switches", (long long)p->nvcsw);
- SEQ_printf(m, "%-45s:%21Ld\n",
- "nr_involuntary_switches", (long long)p->nivcsw);
+ __PS("nr_voluntary_switches", p->nvcsw);
+ __PS("nr_involuntary_switches", p->nivcsw);
P(se.load.weight);
#ifdef CONFIG_SMP
@@ -963,8 +962,7 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns,
t0 = cpu_clock(this_cpu);
t1 = cpu_clock(this_cpu);
- SEQ_printf(m, "%-45s:%21Ld\n",
- "clock-delta", (long long)(t1-t0));
+ __PS("clock-delta", t1-t0);
}
sched_show_numa(p, m);
--
2.24.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] sched/debug: Add task uclamp values to SCHED_DEBUG procfs
2020-02-25 17:52 [PATCH 0/3] sched/debug: Add uclamp values to procfs Valentin Schneider
2020-02-25 17:52 ` [PATCH 1/3] sched/debug: Remove redundant macro define Valentin Schneider
2020-02-25 17:52 ` [PATCH 2/3] sched/debug: Bunch up printing formats in common macros Valentin Schneider
@ 2020-02-25 17:52 ` Valentin Schneider
2 siblings, 0 replies; 5+ messages in thread
From: Valentin Schneider @ 2020-02-25 17:52 UTC (permalink / raw)
To: linux-kernel
Cc: mingo, peterz, vincent.guittot, Dietmar.Eggemann,
patrick.bellasi, qais.yousef
Requested and effective uclamp values can be a bit tricky to decipher when
playing with cgroup hierarchies. Add them to a task's procfs when
SCHED_DEBUG is enabled.
Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
---
kernel/sched/debug.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 47411a85087c..4086bdd9915d 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -946,6 +946,12 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns,
P(se.avg.last_update_time);
P(se.avg.util_est.ewma);
P(se.avg.util_est.enqueued);
+#endif
+#ifdef CONFIG_UCLAMP_TASK
+ __PS("uclamp.min", p->uclamp[UCLAMP_MIN].value);
+ __PS("uclamp.max", p->uclamp[UCLAMP_MAX].value);
+ __PS("effective uclamp.min", uclamp_eff_value(p, UCLAMP_MIN));
+ __PS("effective uclamp.max", uclamp_eff_value(p, UCLAMP_MAX));
#endif
P(policy);
P(prio);
--
2.24.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/3] sched/debug: Bunch up printing formats in common macros
[not found] ` <20200226072121.GA8957@geo.homenetwork>
@ 2020-02-26 10:15 ` Valentin Schneider
0 siblings, 0 replies; 5+ messages in thread
From: Valentin Schneider @ 2020-02-26 10:15 UTC (permalink / raw)
To: Tao Zhou
Cc: linux-kernel, mingo, peterz, vincent.guittot, Dietmar.Eggemann,
patrick.bellasi, qais.yousef
On 26/02/2020 07:21, Tao Zhou wrote:
>> @@ -963,8 +962,7 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns,
>>
>> t0 = cpu_clock(this_cpu);
>> t1 = cpu_clock(this_cpu);
>> - SEQ_printf(m, "%-45s:%21Ld\n",
>> - "clock-delta", (long long)(t1-t0));
>> + __PS("clock-delta", t1-t0);
>
> __PS("clock-delta", (t1-t0));
Oh snap indeed! I think I may just as well shove parentheses in the macro
definitions.
Thanks.
>
> Thanks,
> Tao
>> }
>>
>> sched_show_numa(p, m);
>> --
>> 2.24.0
>>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-02-26 10:15 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-25 17:52 [PATCH 0/3] sched/debug: Add uclamp values to procfs Valentin Schneider
2020-02-25 17:52 ` [PATCH 1/3] sched/debug: Remove redundant macro define Valentin Schneider
2020-02-25 17:52 ` [PATCH 2/3] sched/debug: Bunch up printing formats in common macros Valentin Schneider
[not found] ` <20200226072121.GA8957@geo.homenetwork>
2020-02-26 10:15 ` Valentin Schneider
2020-02-25 17:52 ` [PATCH 3/3] sched/debug: Add task uclamp values to SCHED_DEBUG procfs Valentin Schneider
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).