diff options
author | Jiri Olsa <jolsa@kernel.org> | 2021-02-08 21:08:57 +0100 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2021-02-11 10:16:56 -0300 |
commit | 8c98be6c36a1798557a6792bcc158768865132e8 (patch) | |
tree | d9662ad9f0899dd184ab789dcc26f543aea7a89d /tools/perf/Documentation | |
parent | 23c5831e2e040f7a044743a2e6e060426d579d7f (diff) | |
download | linux-8c98be6c36a1798557a6792bcc158768865132e8.tar.gz linux-8c98be6c36a1798557a6792bcc158768865132e8.tar.bz2 linux-8c98be6c36a1798557a6792bcc158768865132e8.zip |
perf daemon: Allow only one daemon over base directory
Add 'lock' file under daemon base and flock it, so only one perf daemon
can run on top of it.
Each daemon tries to create and lock BASE/lock file, if it's successful
we are sure we're the only daemon running over the BASE.
Once daemon is finished, file descriptor to lock file is closed and lock
is released.
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
Starting the daemon:
# perf daemon start
And try once more:
# perf daemon start
failed: another perf daemon (pid 775594) owns /opt/perfdata
will end up with an error, because there's already one running
on top of /opt/perfdata.
Committer notes:
Provide lockf(F_TLOCK) when not available, i.e. transform:
lockf(fd, F_TLOCK, 0);
into:
flock(fd, LOCK_EX | LOCK_NB);
Which should be equivalent.
Noticed when cross building to some odd Android NDK.
Signed-off-by: Jiri 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-14-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/Documentation')
-rw-r--r-- | tools/perf/Documentation/perf-daemon.txt | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/tools/perf/Documentation/perf-daemon.txt b/tools/perf/Documentation/perf-daemon.txt index 94d5e09a1e17..3c9e265858b2 100644 --- a/tools/perf/Documentation/perf-daemon.txt +++ b/tools/perf/Documentation/perf-daemon.txt @@ -49,7 +49,8 @@ OPTIONS --base=<PATH>:: Base directory path. Each daemon instance is running on top - of base directory. + 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. |