* [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