private externs break shark on kernel/drivers
private externs break shark on kernel/drivers
- Subject: private externs break shark on kernel/drivers
- From: Andrew Gallatin <email@hidden>
- Date: Fri, 3 Jun 2005 16:52:28 -0400 (EDT)
I was doing some profiling of my network device driver receiving a TCP
stream at 3.8Gb/sec.
An L1 data cache miss profile shows the following top functions:
mi_set_interrupts_enabled
mutex_lock
mulckPatch_eieio
sbappend
my driver's rx function
m_copy_pkthdr
hw_compare_and_store
<....>
Most of these make sense .. they either use a lot of locked
instructions, or get called often, or both. But when I saw
m_copy_pkthdr, as #6, I was pretty surprised, and spent about an hour
scouring the source code, trying to figure out how in the heck it
could possibly be getting called so often, or with such stale data..
It turns out that the private externs used in the kernel really screw
up profiling... I'm pretty sure that "m_copy_pkthdr" really means
m_getpackets_internal, since its the next thing in uipc_mbuf.c,
and there is no symbol for it found when running nm on /mach_kernel.
When profiling on other systems, seeing unexpected functions high in
the profile has always been a hint that something is seriously wrong.
Its going to be hard to break myself of that.
Is there any way we could get the full symbolic information out to
shark so that its possible to generate meaningful profiles?
Thanks,
Drew
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-kernel mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden