Re: [tip:sched/urgent] sched: Print sched_group::__cpu_power in sched_domain_debug

Gautham R Shenoy
2009-04-14T17:06:47Z

On Tue, Apr 14, 2009 at 09:29:53AM -0700, Luck, Tony wrote:
> - printk(KERN_CONT " %s (__cpu_power = %d)", str,
> - group->__cpu_power);
> + if (group->__cpu_power != SCHED_LOAD_SCALE)
> + printk(KERN_CONT " %s (__cpu_power = %d)", str,
> + group->__cpu_power);
>
> Much quieter ... but perhaps a little too quiet?
> Is this what you want? Now the console output looks like this:
>
> CPU0 attaching sched-domain:
> domain 0: span 0-15 level CPU
> groups:
> CPU1 attaching sched-domain:
> domain 0: span 0-15 level CPU
> groups:
> CPU2 attaching sched-domain:
> domain 0: span 0-15 level CPU
> groups:
> ...
>
> instead of the original:
>
> CPU0 attaching sched-domain:
> domain 0: span 0-15 level CPU
> groups: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
> CPU1 attaching sched-domain:
> domain 0: span 0-15 level CPU
> groups: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0
> CPU2 attaching sched-domain:
> domain 0: span 0-15 level CPU
> groups: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1
> ...
>
> Either we don't need the empty "groups:" line, or we should
> still list the cpus in the group? I'm not really sure what
> information you are trying to convey here.

We should be listing the cpus in the group. We should not be listing the
__cpu_power of the group, if the __cpu_power has the default value. In
the patch that I sent this morning, I made a mistake by making dependent
the printing of both cpus as well as __cpu_power, on the if
condition which checks if __cpu_power is default or not.

if (group->__cpu_power != SCHED_LOAD_SCALE)
printk(KERN_CONT " %s (__cpu_power = %d)", str,
group->__cpu_power);

Unfortunately for me, it's not the first goof up I've been involved in
today. Please find the updated patch below.

---->
sched: Avoid printing sched_group::__cpu_power for default case.

From: Gautham R Shenoy <ego@in.ibm.com>

The following commit produces a messy dmesg output while attempting to print
the sched_group::__cpu_power for each group in the sched_domain hierarchy.

commit 46e0bb9c12f4bab539736f1714cbf16600f681ec
Author: Gautham R Shenoy <ego@in.ibm.com>
Date: Mon Mar 30 10:25:20 2009 +0530
sched: Print sched_group::__cpu_power in sched_domain_debug

Fix this by avoid printing the __cpu_power for default cases.
(i.e, __cpu_power == SCHED_LOAD_SCALE).

Reported-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Gautham R Shenoy <ego@in.ibm.com>
---

kernel/sched.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/kernel/sched.c b/kernel/sched.c
index 681d4ae..db2df70 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -7467,7 +7467,9 @@ static int sched_domain_debug_one(struct sched_domain *sd, int cpu, int level,
cpumask_or(groupmask, groupmask, sched_group_cpus(group));

cpulist_scnprintf(str, sizeof(str), sched_group_cpus(group));
- printk(KERN_CONT " %s (__cpu_power = %d)", str,
+ printk(KERN_CONT " %s", str);
+ if (group->__cpu_power != SCHED_LOAD_SCALE)
+ printk(KERN_CONT " (__cpu_power = %d)",
group->__cpu_power);

group = group->next;

--
Thanks and Regards
gautham