• Jiri Olsa's avatar
    perf daemon: Add config file support · c0666261
    Jiri Olsa authored
    Adding support to configure daemon with config file.
    
    Each client or server invocation of perf daemon needs to know the
    base directory, where all sessions data is stored.
    
    The base is defined with:
    
      daemon.base
        Base path for daemon data. All sessions data are stored under
        this path.
    
    The daemon allows to create record sessions. Each session is a
    record command spawned and monitored by perf daemon.
    
    The session is defined with:
    
      session-<NAME>.run
        Defines new record session for daemon. The value is record's
        command line without the 'record' keyword.
    
    Example:
    
      # 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
    
    The example above defines '/opt/perfdata' as the base directory and 2
    record sessions.
    
      # perf daemon start
      [2021-01-28 19:47:33.454413] daemon started (pid 16015)
      [2021-01-28 19:47:33.455910] reconfig: ruining session [cycles:16016]: -m 10M -e cycles --overwrite --switch-output -a
      [2021-01-28 19:47:33.456599] reconfig: ruining session [sched:16017]: -m 20M -e sched:* --overwrite --switch-output -a
    
      # ps -ef | grep perf
      ... perf daemon start
      ... /home/jolsa/.../perf record -m 20M -e cycles --overwrite --switch-output -a
      ... /home/jolsa/.../perf record -m 20M -e sched:* --overwrite --switch-output -a
    
    The base directory is populated with:
    
      # find /opt/perfdata/
      /opt/perfdata/
      /opt/perfdata/control                    <- control socket
      /opt/perfdata/session-cycles             <- data for session 'cycles':
      /opt/perfdata/session-cycles/output      <-   perf record output
      /opt/perfdata/session-cycles/perf.data   <-   perf data
      /opt/perfdata/session-sched              <- ditto for session 'sched'
      /opt/perfdata/session-sched/output
      /opt/perfdata/session-sched/perf.data
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexei Budankov <abudankov@huawei.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Michael Petlan <mpetlan@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: https://lore.kernel.org/r/20210208200908.1019149-7-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    c0666261
builtin-daemon.c 14.8 KB