perf-daemon - Man Page

Run record sessions on background

Synopsis

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

perf-record(1), perf-config(1)

Info

09/07/2026 perf Manual