Using sched cpucaps-sleep
and cpucaps-wakeup
You can use cpucaps-sleep
and cpucaps-wakeup
probes to understand the impact CPU Caps have on specific processes and threads. The following example shows how much various processes spend on wait queues:
sched:::cpucaps-sleep { sleep[args[1]->pr_pid] = timestamp; } sched:::cpucaps-wakeup /sleep[args[1]->pr_pid]/ { @sleeps[args[1]->pr_fname] = quantize(timestamp - sleep[args[1]->pr_pid]); sleep[args[1]->pr_pid] = 0; }
Running the preceding script results in output similar to the following example:
# dtrace -s /capswait.d
dtrace: script './capswait.d' matched 2 probes
^C
exmh
value ------------- Distribution ------------- count
8388608 | 0
16777216 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 4
33554432 | 0
scan
value ------------- Distribution ------------- count
16777216 | 0
33554432 |@@@@@@@@@@@@@@@@@@@@ 1
67108864 | 0
134217728 |@@@@@@@@@@@@@@@@@@@@ 1
268435456 | 0
firefox-bin
value ------------- Distribution ------------- count
4194304 | 0
8388608 |@@ 1
16777216 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 19
33554432 |@@@@ 2
67108864 | 0