profiling kernel modules.

Stacey Son sson at
Mon Dec 14 12:49:03 UTC 2009

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  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 or ksyms(4).

See 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,


More information about the freebsd-current mailing list