xref: /netbsd-src/external/cddl/dtracetoolkit/dist/Docs/Examples/priclass_example.txt (revision c29d51755812ace2e87aeefdb06cb2b4dac7087a)
1*c29d5175SchristosThe following is a demonstration of the priclass.d script.
2*c29d5175Schristos
3*c29d5175Schristos
4*c29d5175SchristosThe script was run for several seconds then Ctrl-C was hit. During
5*c29d5175Schristosthis time, other processes in different scheduling classes were
6*c29d5175Schristosrunning.
7*c29d5175Schristos
8*c29d5175Schristos   # ./priclass.d
9*c29d5175Schristos   Sampling... Hit Ctrl-C to end.
10*c29d5175Schristos   ^C
11*c29d5175Schristos
12*c29d5175Schristos     IA
13*c29d5175Schristos              value  ------------- Distribution ------------- count
14*c29d5175Schristos                 40 |                                         0
15*c29d5175Schristos                 50 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 30
16*c29d5175Schristos                 60 |                                         0
17*c29d5175Schristos
18*c29d5175Schristos     SYS
19*c29d5175Schristos              value  ------------- Distribution ------------- count
20*c29d5175Schristos                < 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  4959
21*c29d5175Schristos                  0 |                                         0
22*c29d5175Schristos                 10 |                                         0
23*c29d5175Schristos                 20 |                                         0
24*c29d5175Schristos                 30 |                                         0
25*c29d5175Schristos                 40 |                                         0
26*c29d5175Schristos                 50 |                                         0
27*c29d5175Schristos                 60 |                                         30
28*c29d5175Schristos                 70 |                                         0
29*c29d5175Schristos                 80 |                                         0
30*c29d5175Schristos                 90 |                                         0
31*c29d5175Schristos                100 |                                         0
32*c29d5175Schristos                110 |                                         0
33*c29d5175Schristos                120 |                                         0
34*c29d5175Schristos                130 |                                         0
35*c29d5175Schristos                140 |                                         0
36*c29d5175Schristos                150 |                                         0
37*c29d5175Schristos                160 |                                         50
38*c29d5175Schristos             >= 170 |                                         0
39*c29d5175Schristos
40*c29d5175Schristos     RT
41*c29d5175Schristos              value  ------------- Distribution ------------- count
42*c29d5175Schristos                 90 |                                         0
43*c29d5175Schristos                100 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 110
44*c29d5175Schristos                110 |                                         0
45*c29d5175Schristos
46*c29d5175Schristos     TS
47*c29d5175Schristos              value  ------------- Distribution ------------- count
48*c29d5175Schristos                < 0 |                                         0
49*c29d5175Schristos                  0 |@@@@@@@@@@@@@@@                          2880
50*c29d5175Schristos                 10 |@@@@@@@                                  1280
51*c29d5175Schristos                 20 |@@@@@                                    990
52*c29d5175Schristos                 30 |@@@@@                                    920
53*c29d5175Schristos                 40 |@@@@                                     670
54*c29d5175Schristos                 50 |@@@@                                     730
55*c29d5175Schristos                 60 |                                         0
56*c29d5175Schristos
57*c29d5175SchristosThe output is quite interesting, and illustrates neatly the behaviour
58*c29d5175Schristosof different scheduling classes.
59*c29d5175Schristos
60*c29d5175SchristosThe IA interactive class had 30 samples of a 50 to 59 priority, a fairly
61*c29d5175Schristoshigh priority. This class is used for interactive processes, such as
62*c29d5175Schristosthe windowing system. I had clicked on a few windows to create this
63*c29d5175Schristosactivity.
64*c29d5175Schristos
65*c29d5175SchristosThe SYS system class has had 4959 samples at a < 0 priority - the lowest,
66*c29d5175Schristoswhich was for the idle thread. There are a few samples at higher
67*c29d5175Schristospriorities, including some in the 160 to 169 range (the highest), which
68*c29d5175Schristosare for interrupt threads. The system class is used by the kernel.
69*c29d5175Schristos
70*c29d5175SchristosThe RT real time class had 110 samples in the 100 to 109 priority range.
71*c29d5175SchristosThis class is designed for real-time applications, those that must have
72*c29d5175Schristosa consistant response time regardless of other process activity. For that
73*c29d5175Schristosreason, the RT class trumps both TS and IA. I created these events by
74*c29d5175Schristosrunning "prstat -R" as root, which runs prstat in the real time class.
75*c29d5175Schristos
76*c29d5175SchristosThe TS time sharing class is the default scheduling class for the processes
77*c29d5175Schristoson a Solaris system. I ran an infinite shell loop to create heavy activity,
78*c29d5175Schristos"while :; do :; done", which shows a profile that leans towards lower
79*c29d5175Schristospriorities. This is deliberate behaivour from the time sharing class, which
80*c29d5175Schristosreduces the priority of CPU bound processes so that they interefere less
81*c29d5175Schristoswith I/O bound processes. The result is more samples in the lower priority
82*c29d5175Schristosranges.
83