linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).