• Daniel Bristot de Oliveira's avatar
    tools/rv: Add in-kernel monitor interface · 6d60f896
    Daniel Bristot de Oliveira authored
    Add the ability to control and trace in-kernel monitors. This is
    a generic interface, it will check for existing monitors and enable
    standard setup, like enabling reactors.
    
    For example:
    
      # rv list
      wip                      wakeup in preemptive per-cpu testing monitor. [OFF]
      wwnr                     wakeup while not running per-task testing model. [OFF]
    
      # rv mon wwnr --help
      rv version 6.1.0-rc4: help
    
      usage: rv mon wwnr [-h] [-q] [-r reactor] [-s] [-v]
    	-h/--help: print this menu and the reactor list
    	-r/--reactor 'reactor': enables the 'reactor'
    	-s/--self: when tracing (-t), also trace rv command
    	-t/--trace: trace monitor's event
    	-v/--verbose: print debug messages
    
      available reactors: nop printk panic
    
      # rv mon wwnr --trace
              <TASK>-PID      [CPU]  TYPE       ID                    STATE x EVENT                    -> NEXT_STATE               FINAL
                  |   |          |     |        |                        |     |                           |                       |
                  rv-3613     [001] event     3613                  running x switch_out               -> not_running              Y
                sshd-1248     [005] event     1248                  running x switch_out               -> not_running              Y
              <idle>-0        [005] event       71              not_running x wakeup                   -> not_running              Y
              <idle>-0        [005] event       71              not_running x switch_in                -> running                  N
          kcompactd0-71       [005] event       71                  running x switch_out               -> not_running              Y
              <idle>-0        [000] event      860              not_running x wakeup                   -> not_running              Y
              <idle>-0        [000] event      860              not_running x switch_in                -> running                  N
        systemd-oomd-860      [000] event      860                  running x switch_out               -> not_running              Y
              <idle>-0        [000] event      860              not_running x wakeup                   -> not_running              Y
              <idle>-0        [000] event      860              not_running x switch_in                -> running                  N
        systemd-oomd-860      [000] event      860                  running x switch_out               -> not_running              Y
              <idle>-0        [005] event       71              not_running x wakeup                   -> not_running              Y
              <idle>-0        [005] event       71              not_running x switch_in                -> running                  N
          kcompactd0-71       [005] event       71                  running x switch_out               -> not_running              Y
              <idle>-0        [000] event      860              not_running x wakeup                   -> not_running              Y
              <idle>-0        [000] event      860              not_running x switch_in                -> running                  N
        systemd-oomd-860      [000] event      860                  running x switch_out               -> not_running              Y
              <idle>-0        [001] event     3613              not_running x wakeup                   -> not_running              Y
    
    Link: https://lkml.kernel.org/r/1e57547e3acadda6e23949b2672c89e76ec2ec42.1668180100.git.bristot@kernel.org
    
    Cc: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: default avatarDaniel Bristot de Oliveira <bristot@kernel.org>
    Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
    6d60f896
in_kernel.c 15.1 KB