Messages in this thread | | | Date | Tue, 26 Jan 2010 16:04:41 +0900 | Subject | Re: [PATCH 00/12] perf lock: New subcommand "perf lock", for analyzing lock statistics | From | Hitoshi Mitake <> |
| |
On Mon, Jan 25, 2010 at 23:48, Peter Zijlstra <peterz@infradead.org> wrote: > On Mon, 2010-01-25 at 23:15 +0900, Hitoshi Mitake wrote: >> >> As Peter told, this patch series depends on lockdep. >> But, checking dependency and tracing lock events are >> essentially different things. So I think dividing these is possible. > > Still you need quite a lot of instrumentation at the actual lock sites, > not something you'd want to have on your production machine. > >> But, perf depends on debugfs. >> I don't know about production box well, >> does your production box turns on debugfs? >> It seems that debugfs is not a thing for production box... > > debugfs isn't a problem to have.
I didn't know that, thanks Peter and Greg!
> >> And I'm interesting in in-kernel histogram of locks. >> Is there requirement of it? >> I have some ideas (not done yet, completely). > > No real concrete ideas yet.. One possibility is to add a range, > bucket_size tuple to perf_event_attr and store the histrogram in the > mmap() area instead of samples. > > One difficulty is how to specify what to make that histogram over. > > Anyway, its all open still.. > > >
I think my previous patch will helpful for this purpose, http://lkml.org/lkml/2009/12/13/16 # This patch is too dangerous and too incomplete, please don't use!
I think distributing numerical IDs for lock instances makes things easily. Distributing IDs means that kernel can know where the lock instances are. Updating information of ID should be triggered by:
1) booting Lock defined by DEFINE_SPINLOCK(), DEFINE_RWLOCK(), etc can be corrected into specific section and initialized. Like the way of event_trace_init() in kernel/trace/trace_events.c
2) loading/unloading modules Lock defined by DEFINE_SPINLOCK(), DEFINE_RWLOCK(), etc can be in .ko files. So hooking module loading or unloading will be required.
3) calling spin_lock_init(), rwlock_init(), etc...
It seems that difficulty of drawing histogram came from the running kernel's lack of knowledge about where the lock instances are, isn't it?
Thanks, Hitoshi
| |