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]
