xref: /linux/Documentation/trace/rv/monitor_stall.rst (revision 0fc8f6200d2313278fbf4539bbab74677c685531)
1*13578a08SGabriele MonacoMonitor stall
2*13578a08SGabriele Monaco=============
3*13578a08SGabriele Monaco
4*13578a08SGabriele Monaco- Name: stall - stalled task monitor
5*13578a08SGabriele Monaco- Type: per-task hybrid automaton
6*13578a08SGabriele Monaco- Author: Gabriele Monaco <gmonaco@redhat.com>
7*13578a08SGabriele Monaco
8*13578a08SGabriele MonacoDescription
9*13578a08SGabriele Monaco-----------
10*13578a08SGabriele Monaco
11*13578a08SGabriele MonacoThe stalled task (stall) monitor is a sample per-task timed monitor that checks
12*13578a08SGabriele Monacoif tasks are scheduled within a defined threshold after they are ready::
13*13578a08SGabriele Monaco
14*13578a08SGabriele Monaco                        |
15*13578a08SGabriele Monaco                        |
16*13578a08SGabriele Monaco                        v
17*13578a08SGabriele Monaco                      #==========================#
18*13578a08SGabriele Monaco  +-----------------> H         dequeued         H
19*13578a08SGabriele Monaco  |                   #==========================#
20*13578a08SGabriele Monaco  |                     |
21*13578a08SGabriele Monaco sched_switch_wait      | sched_wakeup;reset(clk)
22*13578a08SGabriele Monaco  |                     v
23*13578a08SGabriele Monaco  |                   +--------------------------+ <+
24*13578a08SGabriele Monaco  |                   |         enqueued         |  | sched_wakeup
25*13578a08SGabriele Monaco  |                   | clk < threshold_jiffies  | -+
26*13578a08SGabriele Monaco  |                   +--------------------------+
27*13578a08SGabriele Monaco  |                     |                 ^
28*13578a08SGabriele Monaco  |              sched_switch_in    sched_switch_preempt;reset(clk)
29*13578a08SGabriele Monaco  |                     v                 |
30*13578a08SGabriele Monaco  |                   +--------------------------+
31*13578a08SGabriele Monaco  +------------------ |         running          |
32*13578a08SGabriele Monaco                      +--------------------------+
33*13578a08SGabriele Monaco                        ^ sched_switch_in      |
34*13578a08SGabriele Monaco                        | sched_wakeup         |
35*13578a08SGabriele Monaco                        +----------------------+
36*13578a08SGabriele Monaco
37*13578a08SGabriele MonacoThe threshold can be configured as a parameter by either booting with the
38*13578a08SGabriele Monaco``stall.threshold_jiffies=<new value>`` argument or writing a new value to
39*13578a08SGabriele Monaco``/sys/module/stall/parameters/threshold_jiffies``.
40*13578a08SGabriele Monaco
41*13578a08SGabriele MonacoSpecification
42*13578a08SGabriele Monaco-------------
43*13578a08SGabriele MonacoGraphviz Dot file in tools/verification/models/stall.dot
44