| 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] |