diff options
author | Tim Bird <tim.bird@am.sony.com> | 2008-10-09 18:23:05 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-10-14 04:39:27 -0400 |
commit | ca538f6bbe583406f941f3041d40c41f9a13d1de (patch) | |
tree | 460e3cf96472e327b48befbb4836c2d40e46f937 | |
parent | ad0a3b68114e8f3c25ac0045b45a2838f23e3b3a (diff) |
tracing/fastboot: add better resolution to initcall debug/tracing
Change the time resolution for initcall_debug to microseconds, from
milliseconds. This is handy to determine which initcalls you want to work
on for faster booting.
One one of my test machines, over 90% of the initcalls are less than a
millisecond and (without this patch) these are all reported as 0 msecs.
Working on the 900 us ones is more important than the 4 us ones.
With 'quiet' on the kernel command line, this adds no significant overhead
to kernel boot time.
Signed-off-by: Tim Bird <tim.bird@am.sony.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | include/linux/ftrace.h | 4 | ||||
-rw-r--r-- | init/main.c | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index 5812dba4ee24..a3d46151be19 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h | |||
@@ -215,9 +215,9 @@ ftrace_init_module(unsigned long *start, unsigned long *end) { } | |||
215 | 215 | ||
216 | struct boot_trace { | 216 | struct boot_trace { |
217 | pid_t caller; | 217 | pid_t caller; |
218 | char func[KSYM_NAME_LEN]; | 218 | char func[KSYM_NAME_LEN]; |
219 | int result; | 219 | int result; |
220 | unsigned long long duration; | 220 | unsigned long long duration; /* usecs */ |
221 | ktime_t calltime; | 221 | ktime_t calltime; |
222 | ktime_t rettime; | 222 | ktime_t rettime; |
223 | }; | 223 | }; |
diff --git a/init/main.c b/init/main.c index e7939de80f3e..b2e7ff4a5349 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -721,8 +721,8 @@ int do_one_initcall(initcall_t fn) | |||
721 | if (initcall_debug) { | 721 | if (initcall_debug) { |
722 | it.rettime = ktime_get(); | 722 | it.rettime = ktime_get(); |
723 | delta = ktime_sub(it.rettime, it.calltime); | 723 | delta = ktime_sub(it.rettime, it.calltime); |
724 | it.duration = (unsigned long long) delta.tv64 >> 20; | 724 | it.duration = (unsigned long long) delta.tv64 >> 10; |
725 | printk("initcall %pF returned %d after %Ld msecs\n", fn, | 725 | printk("initcall %pF returned %d after %Ld usecs\n", fn, |
726 | it.result, it.duration); | 726 | it.result, it.duration); |
727 | trace_boot(&it, fn); | 727 | trace_boot(&it, fn); |
728 | } | 728 | } |