Re: profiling kernel modules.

From: Stacey Son <sson_at_FreeBSD.org>
Date: Mon, 14 Dec 2009 06:33:45 -0600
On Dec 13, 2009, at 11:54 PM, Julian Elischer wrote:

> It's been a few years since I last profiled the kernel, (probably a decade :-)  but it was always a monolithic compiled kernel. Now I want to profile a module, but I'm not finding a lot of specific instructions as to how to do this, For example how to get the loaded addresses for  the modules taken into account, or what arguments need to be added to the compile of the module to make sure it has any code stubs that may be needed, etc.
> 
> if you know anything about these subjects, or related (e.g. usin
> the performance counters in the kernel/modules I'd love to get your inpout and maybe turn out a doc on how to do this.
> 
> This would be for -current (9) or 8.0R.



Hi Julian:

You might want to take a look at using the  'lockstat' command, in particular its '-I' option (see http://docs.sun.com/app/docs/doc/816-5212/6mbcdgk0m?a=view  or lockstat(1)).    lockstat depends on the dtrace and the pseudo driver ksyms bits in the kernel.   The ksyms driver provides lockstat with a complete symbol table (including all the symbols of any loaded kernel modules).   See http://people.freebsd.org/~sson/ksyms/ksyms.4.txt or ksyms(4).

See http://wiki.freebsd.org/DTrace for adding the dtrace bits and add 'device ksyms' to your kernel config file.  You will need to load both the 'dtraceall' and 'ksyms' kernel modules before you can successfully use the 'lockstat' command.

Best Regards,

-stacey.
Received on Mon Dec 14 2009 - 11:49:03 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:59 UTC