diff options
author | Dave Hansen <dave@linux.vnet.ibm.com> | 2008-10-15 22:01:46 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-16 11:21:31 -0700 |
commit | 22b8ce94708f7cdf0b04965c6f7443dfd374c35c (patch) | |
tree | e2d5b60e9b881cf251185b23c3853c8b3e52d42a /include | |
parent | 0c2d64fb6cae9aae480f6a46cfe79f8d7d48b59f (diff) | |
download | op-kernel-dev-22b8ce94708f7cdf0b04965c6f7443dfd374c35c.zip op-kernel-dev-22b8ce94708f7cdf0b04965c6f7443dfd374c35c.tar.gz |
profiling: dynamically enable readprofile at runtime
Way too often, I have a machine that exhibits some kind of crappy
behavior. The CPU looks wedged in the kernel or it is spending way too
much system time and I wonder what is responsible.
I try to run readprofile. But, of course, Ubuntu doesn't enable it by
default. Dang!
The reason we boot-time enable it is that it takes a big bufffer that we
generally can only bootmem alloc. But, does it hurt to at least try and
runtime-alloc it?
To use:
echo 2 > /sys/kernel/profile
Then run readprofile like normal.
This should fix the compile issue with allmodconfig. I've compile-tested
on a bunch more configs now including a few more architectures.
Signed-off-by: Dave Hansen <dave@linux.vnet.ibm.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/profile.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/include/linux/profile.h b/include/linux/profile.h index 7e70872..5700450 100644 --- a/include/linux/profile.h +++ b/include/linux/profile.h @@ -35,7 +35,9 @@ enum profile_type { extern int prof_on __read_mostly; /* init basic kernel profiler */ -void __init profile_init(void); +int profile_init(void); +int profile_setup(char *str); +int create_proc_profile(void); void profile_tick(int type); /* @@ -84,9 +86,9 @@ struct pt_regs; #define prof_on 0 -static inline void profile_init(void) +static inline int profile_init(void) { - return; + return 0; } static inline void profile_tick(int type) |