xref: /linux/tools/perf/Documentation/perf-daemon.txt (revision d0034a7a4ac7fae708146ac0059b9c47a1543f0d)
1d450bc50SJiri Olsaperf-daemon(1)
2d450bc50SJiri Olsa==============
3d450bc50SJiri Olsa
4d450bc50SJiri Olsa
5d450bc50SJiri OlsaNAME
6d450bc50SJiri Olsa----
7d450bc50SJiri Olsaperf-daemon - Run record sessions on background
8d450bc50SJiri Olsa
9d450bc50SJiri Olsa
10d450bc50SJiri OlsaSYNOPSIS
11d450bc50SJiri Olsa--------
12d450bc50SJiri Olsa[verse]
13d450bc50SJiri Olsa'perf daemon'
14d450bc50SJiri Olsa'perf daemon' [<options>]
15d450bc50SJiri Olsa'perf daemon start'  [<options>]
1623c5831eSJiri Olsa'perf daemon stop'   [<options>]
172d6914cdSJiri Olsa'perf daemon signal' [<options>]
18edcaa479SJiri Olsa'perf daemon ping'   [<options>]
19d450bc50SJiri Olsa
20d450bc50SJiri Olsa
21d450bc50SJiri OlsaDESCRIPTION
22d450bc50SJiri Olsa-----------
23d450bc50SJiri OlsaThis command allows to run simple daemon process that starts and
24d450bc50SJiri Olsamonitors configured record sessions.
25d450bc50SJiri Olsa
26c0666261SJiri OlsaYou can imagine 'perf daemon' of background process with several
27c0666261SJiri Olsa'perf record' child tasks, like:
28c0666261SJiri Olsa
29c0666261SJiri Olsa  # ps axjf
30c0666261SJiri Olsa  ...
31c0666261SJiri Olsa       1  916507 ... perf daemon start
32c0666261SJiri Olsa  916507  916508 ...  \_ perf record --control=fifo:control,ack -m 10M -e cycles --overwrite --switch-output -a
33c0666261SJiri Olsa  916507  916509 ...  \_ perf record --control=fifo:control,ack -m 20M -e sched:* --overwrite --switch-output -a
34c0666261SJiri Olsa
35c0666261SJiri OlsaNot every 'perf record' session is suitable for running under daemon.
36c0666261SJiri OlsaUser need perf session that either produces data on query, like the
37c0666261SJiri Olsaflight recorder sessions in above example or session that is configured
38c0666261SJiri Olsato produce data periodically, like with --switch-output configuration
39c0666261SJiri Olsafor time and size.
40d450bc50SJiri Olsa
416a6d1804SJiri OlsaEach session is started with control setup (with perf record --control
426a6d1804SJiri Olsaoptions).
436a6d1804SJiri Olsa
4413fb3b9fSJiri OlsaSessions are configured through config file, see CONFIG FILE section
4513fb3b9fSJiri Olsawith EXAMPLES.
4613fb3b9fSJiri Olsa
4713fb3b9fSJiri Olsa
48d450bc50SJiri OlsaOPTIONS
49d450bc50SJiri Olsa-------
50d450bc50SJiri Olsa-v::
51d450bc50SJiri Olsa--verbose::
52d450bc50SJiri Olsa	Be more verbose.
53d450bc50SJiri Olsa
54fc1dcb1eSJiri Olsa--config=<PATH>::
55fc1dcb1eSJiri Olsa	Config file path. If not provided, perf will check system and default
56fc1dcb1eSJiri Olsa	locations (/etc/perfconfig, $HOME/.perfconfig).
57fc1dcb1eSJiri Olsa
585631d100SJiri Olsa--base=<PATH>::
595631d100SJiri Olsa	Base directory path. Each daemon instance is running on top
608c98be6cSJiri Olsa	of base directory. Only one instance of server can run on
618c98be6cSJiri Olsa	top of one directory at the time.
625631d100SJiri Olsa
63d450bc50SJiri OlsaAll generic options are available also under commands.
64d450bc50SJiri Olsa
65d450bc50SJiri Olsa
66d450bc50SJiri OlsaSTART COMMAND
67d450bc50SJiri Olsa-------------
68d450bc50SJiri OlsaThe start command creates the daemon process.
69d450bc50SJiri Olsa
7088adb119SJiri Olsa-f::
7188adb119SJiri Olsa--foreground::
7288adb119SJiri Olsa	Do not put the process in background.
7388adb119SJiri Olsa
74d450bc50SJiri Olsa
7523c5831eSJiri OlsaSTOP COMMAND
7623c5831eSJiri Olsa------------
7723c5831eSJiri OlsaThe stop command stops all the session and the daemon process.
7823c5831eSJiri Olsa
7923c5831eSJiri Olsa
802d6914cdSJiri OlsaSIGNAL COMMAND
812d6914cdSJiri Olsa--------------
822d6914cdSJiri OlsaThe signal command sends signal to configured sessions.
832d6914cdSJiri Olsa
842d6914cdSJiri Olsa--session::
852d6914cdSJiri Olsa	Send signal to specific session.
862d6914cdSJiri Olsa
872d6914cdSJiri Olsa
88edcaa479SJiri OlsaPING COMMAND
89edcaa479SJiri Olsa------------
90edcaa479SJiri OlsaThe ping command sends control ping to configured sessions.
91edcaa479SJiri Olsa
92edcaa479SJiri Olsa--session::
93edcaa479SJiri Olsa	Send ping to specific session.
94edcaa479SJiri Olsa
95edcaa479SJiri Olsa
96c0666261SJiri OlsaCONFIG FILE
97c0666261SJiri Olsa-----------
98c0666261SJiri OlsaThe daemon is configured within standard perf config file by
99c0666261SJiri Olsafollowing new variables:
100c0666261SJiri Olsa
101c0666261SJiri Olsadaemon.base:
102c0666261SJiri Olsa	Base path for daemon data. All sessions data are
103c0666261SJiri Olsa	stored under this path.
104c0666261SJiri Olsa
105c0666261SJiri Olsasession-<NAME>.run:
106c0666261SJiri Olsa	Defines new record session. The value is record's command
107c0666261SJiri Olsa	line without the 'record' keyword.
108c0666261SJiri Olsa
109c0666261SJiri OlsaEach perf record session is run in daemon.base/<NAME> directory.
110c0666261SJiri Olsa
111c0666261SJiri Olsa
11213fb3b9fSJiri OlsaEXAMPLES
11313fb3b9fSJiri Olsa--------
11413fb3b9fSJiri OlsaExample with 2 record sessions:
11513fb3b9fSJiri Olsa
11613fb3b9fSJiri Olsa  # cat ~/.perfconfig
11713fb3b9fSJiri Olsa  [daemon]
11813fb3b9fSJiri Olsa  base=/opt/perfdata
11913fb3b9fSJiri Olsa
12013fb3b9fSJiri Olsa  [session-cycles]
12113fb3b9fSJiri Olsa  run = -m 10M -e cycles --overwrite --switch-output -a
12213fb3b9fSJiri Olsa
12313fb3b9fSJiri Olsa  [session-sched]
12413fb3b9fSJiri Olsa  run = -m 20M -e sched:* --overwrite --switch-output -a
12513fb3b9fSJiri Olsa
12613fb3b9fSJiri Olsa
12713fb3b9fSJiri OlsaStarting the daemon:
12813fb3b9fSJiri Olsa
12913fb3b9fSJiri Olsa  # perf daemon start
13013fb3b9fSJiri Olsa
13113fb3b9fSJiri Olsa
13213fb3b9fSJiri OlsaCheck sessions:
13313fb3b9fSJiri Olsa
13413fb3b9fSJiri Olsa  # perf daemon
13513fb3b9fSJiri Olsa  [603349:daemon] base: /opt/perfdata
13613fb3b9fSJiri Olsa  [603350:cycles] perf record -m 10M -e cycles --overwrite --switch-output -a
13713fb3b9fSJiri Olsa  [603351:sched] perf record -m 20M -e sched:* --overwrite --switch-output -a
13813fb3b9fSJiri Olsa
13913fb3b9fSJiri OlsaFirst line is daemon process info with configured daemon base.
14013fb3b9fSJiri Olsa
14113fb3b9fSJiri Olsa
14213fb3b9fSJiri OlsaCheck sessions with more info:
14313fb3b9fSJiri Olsa
14413fb3b9fSJiri Olsa  # perf daemon -v
14513fb3b9fSJiri Olsa  [603349:daemon] base: /opt/perfdata
14613fb3b9fSJiri Olsa    output:  /opt/perfdata/output
14713fb3b9fSJiri Olsa    lock:    /opt/perfdata/lock
14813fb3b9fSJiri Olsa    up:      1 minutes
14913fb3b9fSJiri Olsa  [603350:cycles] perf record -m 10M -e cycles --overwrite --switch-output -a
15013fb3b9fSJiri Olsa    base:    /opt/perfdata/session-cycles
15113fb3b9fSJiri Olsa    output:  /opt/perfdata/session-cycles/output
15213fb3b9fSJiri Olsa    control: /opt/perfdata/session-cycles/control
15313fb3b9fSJiri Olsa    ack:     /opt/perfdata/session-cycles/ack
15413fb3b9fSJiri Olsa    up:      1 minutes
15513fb3b9fSJiri Olsa  [603351:sched] perf record -m 20M -e sched:* --overwrite --switch-output -a
15613fb3b9fSJiri Olsa    base:    /opt/perfdata/session-sched
15713fb3b9fSJiri Olsa    output:  /opt/perfdata/session-sched/output
15813fb3b9fSJiri Olsa    control: /opt/perfdata/session-sched/control
15913fb3b9fSJiri Olsa    ack:     /opt/perfdata/session-sched/ack
16013fb3b9fSJiri Olsa    up:      1 minutes
16113fb3b9fSJiri Olsa
16213fb3b9fSJiri OlsaThe 'base' path is daemon/session base.
16313fb3b9fSJiri OlsaThe 'lock' file is daemon's lock file guarding that no other
16413fb3b9fSJiri Olsadaemon is running on top of the base.
16513fb3b9fSJiri OlsaThe 'output' file is perf record output for specific session.
16613fb3b9fSJiri OlsaThe 'control' and 'ack' files are perf control files.
16713fb3b9fSJiri OlsaThe 'up' number shows minutes daemon/session is running.
16813fb3b9fSJiri Olsa
16913fb3b9fSJiri Olsa
17013fb3b9fSJiri OlsaMake sure control session is online:
17113fb3b9fSJiri Olsa
17213fb3b9fSJiri Olsa  # perf daemon ping
17313fb3b9fSJiri Olsa  OK   cycles
17413fb3b9fSJiri Olsa  OK   sched
17513fb3b9fSJiri Olsa
17613fb3b9fSJiri Olsa
17713fb3b9fSJiri OlsaSend USR2 signal to session 'cycles' to generate perf.data file:
17813fb3b9fSJiri Olsa
17913fb3b9fSJiri Olsa  # perf daemon signal --session cycles
18013fb3b9fSJiri Olsa  signal 12 sent to session 'cycles [603452]'
18113fb3b9fSJiri Olsa
18213fb3b9fSJiri Olsa  # tail -2  /opt/perfdata/session-cycles/output
18313fb3b9fSJiri Olsa  [ perf record: dump data: Woken up 1 times ]
18413fb3b9fSJiri Olsa  [ perf record: Dump perf.data.2020123017013149 ]
18513fb3b9fSJiri Olsa
18613fb3b9fSJiri Olsa
18713fb3b9fSJiri OlsaSend USR2 signal to all sessions:
18813fb3b9fSJiri Olsa
18913fb3b9fSJiri Olsa  # perf daemon signal
19013fb3b9fSJiri Olsa  signal 12 sent to session 'cycles [603452]'
19113fb3b9fSJiri Olsa  signal 12 sent to session 'sched [603453]'
19213fb3b9fSJiri Olsa
19313fb3b9fSJiri Olsa  # tail -2  /opt/perfdata/session-cycles/output
19413fb3b9fSJiri Olsa  [ perf record: dump data: Woken up 1 times ]
19513fb3b9fSJiri Olsa  [ perf record: Dump perf.data.2020123017024689 ]
19613fb3b9fSJiri Olsa  # tail -2  /opt/perfdata/session-sched/output
19713fb3b9fSJiri Olsa  [ perf record: dump data: Woken up 1 times ]
19813fb3b9fSJiri Olsa  [ perf record: Dump perf.data.2020123017024713 ]
19913fb3b9fSJiri Olsa
20013fb3b9fSJiri Olsa
20113fb3b9fSJiri OlsaStop daemon:
20213fb3b9fSJiri Olsa
20313fb3b9fSJiri Olsa  # perf daemon stop
20413fb3b9fSJiri Olsa
20513fb3b9fSJiri Olsa
206d450bc50SJiri OlsaSEE ALSO
207d450bc50SJiri Olsa--------
208d450bc50SJiri Olsalinkperf:perf-record[1], linkperf:perf-config[1]
209