209 lines
5.0 KiB
Plaintext
209 lines
5.0 KiB
Plaintext
|
perf-daemon(1)
|
||
|
==============
|
||
|
|
||
|
|
||
|
NAME
|
||
|
----
|
||
|
perf-daemon - Run record sessions on background
|
||
|
|
||
|
|
||
|
SYNOPSIS
|
||
|
--------
|
||
|
[verse]
|
||
|
'perf daemon'
|
||
|
'perf daemon' [<options>]
|
||
|
'perf daemon start' [<options>]
|
||
|
'perf daemon stop' [<options>]
|
||
|
'perf daemon signal' [<options>]
|
||
|
'perf daemon ping' [<options>]
|
||
|
|
||
|
|
||
|
DESCRIPTION
|
||
|
-----------
|
||
|
This command allows to run simple daemon process that starts and
|
||
|
monitors configured record sessions.
|
||
|
|
||
|
You can imagine 'perf daemon' of background process with several
|
||
|
'perf record' child tasks, like:
|
||
|
|
||
|
# ps axjf
|
||
|
...
|
||
|
1 916507 ... perf daemon start
|
||
|
916507 916508 ... \_ perf record --control=fifo:control,ack -m 10M -e cycles --overwrite --switch-output -a
|
||
|
916507 916509 ... \_ perf record --control=fifo:control,ack -m 20M -e sched:* --overwrite --switch-output -a
|
||
|
|
||
|
Not every 'perf record' session is suitable for running under daemon.
|
||
|
User need perf session that either produces data on query, like the
|
||
|
flight recorder sessions in above example or session that is configured
|
||
|
to produce data periodically, like with --switch-output configuration
|
||
|
for time and size.
|
||
|
|
||
|
Each session is started with control setup (with perf record --control
|
||
|
options).
|
||
|
|
||
|
Sessions are configured through config file, see CONFIG FILE section
|
||
|
with EXAMPLES.
|
||
|
|
||
|
|
||
|
OPTIONS
|
||
|
-------
|
||
|
-v::
|
||
|
--verbose::
|
||
|
Be more verbose.
|
||
|
|
||
|
--config=<PATH>::
|
||
|
Config file path. If not provided, perf will check system and default
|
||
|
locations (/etc/perfconfig, $HOME/.perfconfig).
|
||
|
|
||
|
--base=<PATH>::
|
||
|
Base directory path. Each daemon instance is running on top
|
||
|
of base directory. Only one instance of server can run on
|
||
|
top of one directory at the time.
|
||
|
|
||
|
All generic options are available also under commands.
|
||
|
|
||
|
|
||
|
START COMMAND
|
||
|
-------------
|
||
|
The start command creates the daemon process.
|
||
|
|
||
|
-f::
|
||
|
--foreground::
|
||
|
Do not put the process in background.
|
||
|
|
||
|
|
||
|
STOP COMMAND
|
||
|
------------
|
||
|
The stop command stops all the session and the daemon process.
|
||
|
|
||
|
|
||
|
SIGNAL COMMAND
|
||
|
--------------
|
||
|
The signal command sends signal to configured sessions.
|
||
|
|
||
|
--session::
|
||
|
Send signal to specific session.
|
||
|
|
||
|
|
||
|
PING COMMAND
|
||
|
------------
|
||
|
The ping command sends control ping to configured sessions.
|
||
|
|
||
|
--session::
|
||
|
Send ping to specific session.
|
||
|
|
||
|
|
||
|
CONFIG FILE
|
||
|
-----------
|
||
|
The daemon is configured within standard perf config file by
|
||
|
following new variables:
|
||
|
|
||
|
daemon.base:
|
||
|
Base path for daemon data. All sessions data are
|
||
|
stored under this path.
|
||
|
|
||
|
session-<NAME>.run:
|
||
|
Defines new record session. The value is record's command
|
||
|
line without the 'record' keyword.
|
||
|
|
||
|
Each perf record session is run in daemon.base/<NAME> directory.
|
||
|
|
||
|
|
||
|
EXAMPLES
|
||
|
--------
|
||
|
Example with 2 record sessions:
|
||
|
|
||
|
# cat ~/.perfconfig
|
||
|
[daemon]
|
||
|
base=/opt/perfdata
|
||
|
|
||
|
[session-cycles]
|
||
|
run = -m 10M -e cycles --overwrite --switch-output -a
|
||
|
|
||
|
[session-sched]
|
||
|
run = -m 20M -e sched:* --overwrite --switch-output -a
|
||
|
|
||
|
|
||
|
Starting the daemon:
|
||
|
|
||
|
# perf daemon start
|
||
|
|
||
|
|
||
|
Check sessions:
|
||
|
|
||
|
# perf daemon
|
||
|
[603349:daemon] base: /opt/perfdata
|
||
|
[603350:cycles] perf record -m 10M -e cycles --overwrite --switch-output -a
|
||
|
[603351:sched] perf record -m 20M -e sched:* --overwrite --switch-output -a
|
||
|
|
||
|
First line is daemon process info with configured daemon base.
|
||
|
|
||
|
|
||
|
Check sessions with more info:
|
||
|
|
||
|
# perf daemon -v
|
||
|
[603349:daemon] base: /opt/perfdata
|
||
|
output: /opt/perfdata/output
|
||
|
lock: /opt/perfdata/lock
|
||
|
up: 1 minutes
|
||
|
[603350:cycles] perf record -m 10M -e cycles --overwrite --switch-output -a
|
||
|
base: /opt/perfdata/session-cycles
|
||
|
output: /opt/perfdata/session-cycles/output
|
||
|
control: /opt/perfdata/session-cycles/control
|
||
|
ack: /opt/perfdata/session-cycles/ack
|
||
|
up: 1 minutes
|
||
|
[603351:sched] perf record -m 20M -e sched:* --overwrite --switch-output -a
|
||
|
base: /opt/perfdata/session-sched
|
||
|
output: /opt/perfdata/session-sched/output
|
||
|
control: /opt/perfdata/session-sched/control
|
||
|
ack: /opt/perfdata/session-sched/ack
|
||
|
up: 1 minutes
|
||
|
|
||
|
The 'base' path is daemon/session base.
|
||
|
The 'lock' file is daemon's lock file guarding that no other
|
||
|
daemon is running on top of the base.
|
||
|
The 'output' file is perf record output for specific session.
|
||
|
The 'control' and 'ack' files are perf control files.
|
||
|
The 'up' number shows minutes daemon/session is running.
|
||
|
|
||
|
|
||
|
Make sure control session is online:
|
||
|
|
||
|
# perf daemon ping
|
||
|
OK cycles
|
||
|
OK sched
|
||
|
|
||
|
|
||
|
Send USR2 signal to session 'cycles' to generate perf.data file:
|
||
|
|
||
|
# perf daemon signal --session cycles
|
||
|
signal 12 sent to session 'cycles [603452]'
|
||
|
|
||
|
# tail -2 /opt/perfdata/session-cycles/output
|
||
|
[ perf record: dump data: Woken up 1 times ]
|
||
|
[ perf record: Dump perf.data.2020123017013149 ]
|
||
|
|
||
|
|
||
|
Send USR2 signal to all sessions:
|
||
|
|
||
|
# perf daemon signal
|
||
|
signal 12 sent to session 'cycles [603452]'
|
||
|
signal 12 sent to session 'sched [603453]'
|
||
|
|
||
|
# tail -2 /opt/perfdata/session-cycles/output
|
||
|
[ perf record: dump data: Woken up 1 times ]
|
||
|
[ perf record: Dump perf.data.2020123017024689 ]
|
||
|
# tail -2 /opt/perfdata/session-sched/output
|
||
|
[ perf record: dump data: Woken up 1 times ]
|
||
|
[ perf record: Dump perf.data.2020123017024713 ]
|
||
|
|
||
|
|
||
|
Stop daemon:
|
||
|
|
||
|
# perf daemon stop
|
||
|
|
||
|
|
||
|
SEE ALSO
|
||
|
--------
|
||
|
linkperf:perf-record[1], linkperf:perf-config[1]
|