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>

Reply via email to