Eric Saxe wrote:
>> 25.5% (100.1) <kernel> :unix`cbe_hres_tick
>> 25.5% (100.1) <kernel> :genunix`clock
>> 25.5% (100.1) <kernel> :genunix`cyclic_timer
>> Actually, timer interrupt occurred 100 times per second, from the
>> report, We know we have 3 cyclic consumers, but it appears we have
>> 300 times events.
> These are 3 separate cyclics each firing at 100 times per second...so
> it really is 300 events per second. Low hanging fruit indeed. :)
>
cbe_hres_tick, clock and cyclic_timer have the same caller on the stack
bacetrace.
This caller is av_dispatch_softvect(), so I added a dtrace probe in this
function, as follows:
----common/io/avintr.c----
ASSERT_STACK_ALIGNED();
ASSERT(pil >= 0 && pil <= PIL_MAX);
+++DTRACE_PROBE1(dispatch__debug, uint_t, pil);
For (av = softvect[pil].avh_link; av; av = av->av_link) {
----snip----
Here is a dtrace script attached, and the output is as follows:
#./test.d
Dtrace: script './test.d' matched 5 probes
CPU ID FUNCTION:NAME
1 91095 :tick-5sec 1, profile`profile_tick
, 1
10, genunix`deadman , 1
501, unix`cbe_hres_tick, 1
501, genunix`clock, 3
501, genunix`cyclic_timer , 3
501, pil = 10
The probe in av_dispatch_softvect() is fired 500 times per 5-second.
But each of the three cyclic customers are called 500 times per
5-second.
Does this mean we should count cyclic event as 500 times rather than
1500 times?
Thanks,
-Aubrey
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.d
Type: application/octet-stream
Size: 508 bytes
Desc: test.d
URL:
<http://mail.opensolaris.org/pipermail/tesla-dev/attachments/20080102/0cffe1fb/attachment.obj>