All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] tracing: simplify print_graph_cpu()
@ 2009-07-28 12:26 Lai Jiangshan
  2009-07-28 15:53 ` Frederic Weisbecker
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Lai Jiangshan @ 2009-07-28 12:26 UTC (permalink / raw)
  To: Frederic Weisbecker, Steven Rostedt, Ingo Molnar, LKML


print_graph_cpu() is little over-designed.

And "log10_all" may be wrong when there are holes in cpu_online_mask:
the max online cpu id > cpumask_weight(cpu_online_mask)

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
---
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
index abf7c4a..e30472d 100644
--- a/kernel/trace/trace_functions_graph.c
+++ b/kernel/trace/trace_functions_graph.c
@@ -183,43 +183,19 @@ static void graph_trace_reset(struct trace_array *tr)
 	unregister_ftrace_graph();
 }
 
-static inline int log10_cpu(int nb)
-{
-	if (nb / 100)
-		return 3;
-	if (nb / 10)
-		return 2;
-	return 1;
-}
+static int max_bytes_for_cpu;
 
 static enum print_line_t
 print_graph_cpu(struct trace_seq *s, int cpu)
 {
-	int i;
 	int ret;
-	int log10_this = log10_cpu(cpu);
-	int log10_all = log10_cpu(cpumask_weight(cpu_online_mask));
-
 
 	/*
 	 * Start with a space character - to make it stand out
 	 * to the right a bit when trace output is pasted into
 	 * email:
 	 */
-	ret = trace_seq_printf(s, " ");
-
-	/*
-	 * Tricky - we space the CPU field according to the max
-	 * number of online CPUs. On a 2-cpu system it would take
-	 * a maximum of 1 digit - on a 128 cpu system it would
-	 * take up to 3 digits:
-	 */
-	for (i = 0; i < log10_all - log10_this; i++) {
-		ret = trace_seq_printf(s, " ");
-		if (!ret)
-			return TRACE_TYPE_PARTIAL_LINE;
-	}
-	ret = trace_seq_printf(s, "%d) ", cpu);
+	ret = trace_seq_printf(s, " %*d) ", max_bytes_for_cpu, cpu);
 	if (!ret)
 		return TRACE_TYPE_PARTIAL_LINE;
 
@@ -919,6 +895,8 @@ static struct tracer graph_trace __read_mostly = {
 
 static __init int init_graph_trace(void)
 {
+	max_bytes_for_cpu = snprintf(NULL, 0, "%d", nr_cpu_ids - 1);
+
 	return register_tracer(&graph_trace);
 }
 





^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] tracing: simplify print_graph_cpu()
  2009-07-28 12:26 [PATCH] tracing: simplify print_graph_cpu() Lai Jiangshan
@ 2009-07-28 15:53 ` Frederic Weisbecker
  2009-08-02 19:39 ` [tip:tracing/core] tracing: Simplify print_graph_cpu() tip-bot for Lai Jiangshan
  2009-08-06 12:42 ` tip-bot for Lai Jiangshan
  2 siblings, 0 replies; 4+ messages in thread
From: Frederic Weisbecker @ 2009-07-28 15:53 UTC (permalink / raw)
  To: Lai Jiangshan; +Cc: Steven Rostedt, Ingo Molnar, LKML

On Tue, Jul 28, 2009 at 08:26:06PM +0800, Lai Jiangshan wrote:
> 
> print_graph_cpu() is little over-designed.
> 
> And "log10_all" may be wrong when there are holes in cpu_online_mask:
> the max online cpu id > cpumask_weight(cpu_online_mask)
>
> Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
> ---
> diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
> index abf7c4a..e30472d 100644
> --- a/kernel/trace/trace_functions_graph.c
> +++ b/kernel/trace/trace_functions_graph.c
> @@ -183,43 +183,19 @@ static void graph_trace_reset(struct trace_array *tr)
>  	unregister_ftrace_graph();
>  }
>  
> -static inline int log10_cpu(int nb)
> -{
> -	if (nb / 100)
> -		return 3;
> -	if (nb / 10)
> -		return 2;
> -	return 1;
> -}
> +static int max_bytes_for_cpu;
>  
>  static enum print_line_t
>  print_graph_cpu(struct trace_seq *s, int cpu)
>  {
> -	int i;
>  	int ret;
> -	int log10_this = log10_cpu(cpu);
> -	int log10_all = log10_cpu(cpumask_weight(cpu_online_mask));
> -
>  
>  	/*
>  	 * Start with a space character - to make it stand out
>  	 * to the right a bit when trace output is pasted into
>  	 * email:
>  	 */
> -	ret = trace_seq_printf(s, " ");
> -
> -	/*
> -	 * Tricky - we space the CPU field according to the max
> -	 * number of online CPUs. On a 2-cpu system it would take
> -	 * a maximum of 1 digit - on a 128 cpu system it would
> -	 * take up to 3 digits:
> -	 */
> -	for (i = 0; i < log10_all - log10_this; i++) {
> -		ret = trace_seq_printf(s, " ");
> -		if (!ret)
> -			return TRACE_TYPE_PARTIAL_LINE;
> -	}
> -	ret = trace_seq_printf(s, "%d) ", cpu);
> +	ret = trace_seq_printf(s, " %*d) ", max_bytes_for_cpu, cpu);
>  	if (!ret)
>  		return TRACE_TYPE_PARTIAL_LINE;
>  
> @@ -919,6 +895,8 @@ static struct tracer graph_trace __read_mostly = {
>  
>  static __init int init_graph_trace(void)
>  {
> +	max_bytes_for_cpu = snprintf(NULL, 0, "%d", nr_cpu_ids - 1);


Nice trick :-)

Queued for .32, thanks!



> +
>  	return register_tracer(&graph_trace);
>  }
>  
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [tip:tracing/core] tracing: Simplify print_graph_cpu()
  2009-07-28 12:26 [PATCH] tracing: simplify print_graph_cpu() Lai Jiangshan
  2009-07-28 15:53 ` Frederic Weisbecker
@ 2009-08-02 19:39 ` tip-bot for Lai Jiangshan
  2009-08-06 12:42 ` tip-bot for Lai Jiangshan
  2 siblings, 0 replies; 4+ messages in thread
From: tip-bot for Lai Jiangshan @ 2009-08-02 19:39 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, hpa, mingo, fweisbec, rostedt, tglx, laijs

Commit-ID:  40699ef64a3203a79d0873da678d0423aa10ae3a
Gitweb:     http://git.kernel.org/tip/40699ef64a3203a79d0873da678d0423aa10ae3a
Author:     Lai Jiangshan <laijs@cn.fujitsu.com>
AuthorDate: Tue, 28 Jul 2009 20:26:06 +0800
Committer:  Frederic Weisbecker <fweisbec@gmail.com>
CommitDate: Wed, 29 Jul 2009 01:04:32 +0200

tracing: Simplify print_graph_cpu()

print_graph_cpu() is little over-designed.

And "log10_all" may be wrong when there are holes in cpu_online_mask:
the max online cpu id > cpumask_weight(cpu_online_mask)

So change it by using a static column length for the cpu matching
nr_cpu_ids number of decimal characters.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <4A6EEE5E.2000001@cn.fujitsu.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>


---
 kernel/trace/trace_functions_graph.c |   30 ++++--------------------------
 1 files changed, 4 insertions(+), 26 deletions(-)

diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
index abf7c4a..e30472d 100644
--- a/kernel/trace/trace_functions_graph.c
+++ b/kernel/trace/trace_functions_graph.c
@@ -183,43 +183,19 @@ static void graph_trace_reset(struct trace_array *tr)
 	unregister_ftrace_graph();
 }
 
-static inline int log10_cpu(int nb)
-{
-	if (nb / 100)
-		return 3;
-	if (nb / 10)
-		return 2;
-	return 1;
-}
+static int max_bytes_for_cpu;
 
 static enum print_line_t
 print_graph_cpu(struct trace_seq *s, int cpu)
 {
-	int i;
 	int ret;
-	int log10_this = log10_cpu(cpu);
-	int log10_all = log10_cpu(cpumask_weight(cpu_online_mask));
-
 
 	/*
 	 * Start with a space character - to make it stand out
 	 * to the right a bit when trace output is pasted into
 	 * email:
 	 */
-	ret = trace_seq_printf(s, " ");
-
-	/*
-	 * Tricky - we space the CPU field according to the max
-	 * number of online CPUs. On a 2-cpu system it would take
-	 * a maximum of 1 digit - on a 128 cpu system it would
-	 * take up to 3 digits:
-	 */
-	for (i = 0; i < log10_all - log10_this; i++) {
-		ret = trace_seq_printf(s, " ");
-		if (!ret)
-			return TRACE_TYPE_PARTIAL_LINE;
-	}
-	ret = trace_seq_printf(s, "%d) ", cpu);
+	ret = trace_seq_printf(s, " %*d) ", max_bytes_for_cpu, cpu);
 	if (!ret)
 		return TRACE_TYPE_PARTIAL_LINE;
 
@@ -919,6 +895,8 @@ static struct tracer graph_trace __read_mostly = {
 
 static __init int init_graph_trace(void)
 {
+	max_bytes_for_cpu = snprintf(NULL, 0, "%d", nr_cpu_ids - 1);
+
 	return register_tracer(&graph_trace);
 }
 

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [tip:tracing/core] tracing: Simplify print_graph_cpu()
  2009-07-28 12:26 [PATCH] tracing: simplify print_graph_cpu() Lai Jiangshan
  2009-07-28 15:53 ` Frederic Weisbecker
  2009-08-02 19:39 ` [tip:tracing/core] tracing: Simplify print_graph_cpu() tip-bot for Lai Jiangshan
@ 2009-08-06 12:42 ` tip-bot for Lai Jiangshan
  2 siblings, 0 replies; 4+ messages in thread
From: tip-bot for Lai Jiangshan @ 2009-08-06 12:42 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, hpa, mingo, fweisbec, rostedt, tglx, laijs

Commit-ID:  0c9e6f639aed490202bbc79214f4495cf4bfde58
Gitweb:     http://git.kernel.org/tip/0c9e6f639aed490202bbc79214f4495cf4bfde58
Author:     Lai Jiangshan <laijs@cn.fujitsu.com>
AuthorDate: Tue, 28 Jul 2009 20:26:06 +0800
Committer:  Frederic Weisbecker <fweisbec@gmail.com>
CommitDate: Thu, 6 Aug 2009 07:28:04 +0200

tracing: Simplify print_graph_cpu()

print_graph_cpu() is little over-designed.

And "log10_all" may be wrong when there are holes in cpu_online_mask:
the max online cpu id > cpumask_weight(cpu_online_mask)

So change it by using a static column length for the cpu matching
nr_cpu_ids number of decimal characters.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <4A6EEE5E.2000001@cn.fujitsu.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>


---
 kernel/trace/trace_functions_graph.c |   30 ++++--------------------------
 1 files changed, 4 insertions(+), 26 deletions(-)

diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
index abf7c4a..e30472d 100644
--- a/kernel/trace/trace_functions_graph.c
+++ b/kernel/trace/trace_functions_graph.c
@@ -183,43 +183,19 @@ static void graph_trace_reset(struct trace_array *tr)
 	unregister_ftrace_graph();
 }
 
-static inline int log10_cpu(int nb)
-{
-	if (nb / 100)
-		return 3;
-	if (nb / 10)
-		return 2;
-	return 1;
-}
+static int max_bytes_for_cpu;
 
 static enum print_line_t
 print_graph_cpu(struct trace_seq *s, int cpu)
 {
-	int i;
 	int ret;
-	int log10_this = log10_cpu(cpu);
-	int log10_all = log10_cpu(cpumask_weight(cpu_online_mask));
-
 
 	/*
 	 * Start with a space character - to make it stand out
 	 * to the right a bit when trace output is pasted into
 	 * email:
 	 */
-	ret = trace_seq_printf(s, " ");
-
-	/*
-	 * Tricky - we space the CPU field according to the max
-	 * number of online CPUs. On a 2-cpu system it would take
-	 * a maximum of 1 digit - on a 128 cpu system it would
-	 * take up to 3 digits:
-	 */
-	for (i = 0; i < log10_all - log10_this; i++) {
-		ret = trace_seq_printf(s, " ");
-		if (!ret)
-			return TRACE_TYPE_PARTIAL_LINE;
-	}
-	ret = trace_seq_printf(s, "%d) ", cpu);
+	ret = trace_seq_printf(s, " %*d) ", max_bytes_for_cpu, cpu);
 	if (!ret)
 		return TRACE_TYPE_PARTIAL_LINE;
 
@@ -919,6 +895,8 @@ static struct tracer graph_trace __read_mostly = {
 
 static __init int init_graph_trace(void)
 {
+	max_bytes_for_cpu = snprintf(NULL, 0, "%d", nr_cpu_ids - 1);
+
 	return register_tracer(&graph_trace);
 }
 

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-08-06 12:43 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-28 12:26 [PATCH] tracing: simplify print_graph_cpu() Lai Jiangshan
2009-07-28 15:53 ` Frederic Weisbecker
2009-08-02 19:39 ` [tip:tracing/core] tracing: Simplify print_graph_cpu() tip-bot for Lai Jiangshan
2009-08-06 12:42 ` tip-bot for Lai Jiangshan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.