* [PATCH] Implement --delay on perf trace
@ 2016-10-10 5:43 Alexis Berlemont
2016-10-10 5:43 ` [PATCH] perf: implement " Alexis Berlemont
2016-10-14 16:03 ` [PATCH] Implement --delay on perf trace Arnaldo Carvalho de Melo
0 siblings, 2 replies; 4+ messages in thread
From: Alexis Berlemont @ 2016-10-10 5:43 UTC (permalink / raw)
To: linux-kernel; +Cc: Alexis Berlemont, peterz, mingo, acme, alexander.shishkin
Hi,
In the perf wiki todo-list, there is an entry regarding initial-delay and
perf trace; the following small patch tries to fulfill this point. It
has been generated against the branch tip/perf/core.
It has only been implemented in the "trace__run" case.
Ex.:
$ sudo strace -- ./perf trace --delay 5 sleep 1 2>&1
...
fcntl(7, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
ioctl(7, PERF_EVENT_IOC_ID, 0x7ffc8fd35718) = 0
ioctl(11, PERF_EVENT_IOC_SET_OUTPUT, 0x7) = 0
fcntl(11, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
ioctl(11, PERF_EVENT_IOC_ID, 0x7ffc8fd35718) = 0
write(6, "\0", 1) = 1
close(6) = 0
nanosleep({0, 5000000}, NULL) = 0 # DELAY OF 5 MS BEFORE ENABLING THE EVNTS
ioctl(3, PERF_EVENT_IOC_ENABLE, 0) = 0
ioctl(4, PERF_EVENT_IOC_ENABLE, 0) = 0
ioctl(5, PERF_EVENT_IOC_ENABLE, 0) = 0
ioctl(7, PERF_EVENT_IOC_ENABLE, 0) = 0
...
Alexis.
Alexis Berlemont (1):
perf: implement --delay on perf trace
tools/perf/builtin-trace.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
--
2.10.0
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH] perf: implement --delay on perf trace 2016-10-10 5:43 [PATCH] Implement --delay on perf trace Alexis Berlemont @ 2016-10-10 5:43 ` Alexis Berlemont 2016-10-24 19:04 ` [tip:perf/core] perf trace: Implement --delay tip-bot for Alexis Berlemont 2016-10-14 16:03 ` [PATCH] Implement --delay on perf trace Arnaldo Carvalho de Melo 1 sibling, 1 reply; 4+ messages in thread From: Alexis Berlemont @ 2016-10-10 5:43 UTC (permalink / raw) To: linux-kernel; +Cc: Alexis Berlemont, peterz, mingo, acme, alexander.shishkin Signed-off-by: Alexis Berlemont <alexis.berlemont@gmail.com> --- tools/perf/builtin-trace.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index c298bd3..0bae454 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -2310,12 +2310,17 @@ static int trace__run(struct trace *trace, int argc, const char **argv) if (err < 0) goto out_error_mmap; - if (!target__none(&trace->opts.target)) + if (!target__none(&trace->opts.target) && !trace->opts.initial_delay) perf_evlist__enable(evlist); if (forks) perf_evlist__start_workload(evlist); + if (trace->opts.initial_delay) { + usleep(trace->opts.initial_delay * 1000); + perf_evlist__enable(evlist); + } + trace->multiple_threads = thread_map__pid(evlist->threads, 0) == -1 || evlist->threads->nr > 1 || perf_evlist__first(evlist)->attr.inherit; @@ -2816,6 +2821,9 @@ int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused) "Default: kernel.perf_event_max_stack or " __stringify(PERF_MAX_STACK_DEPTH)), OPT_UINTEGER(0, "proc-map-timeout", &trace.opts.proc_map_timeout, "per thread proc mmap processing timeout in ms"), + OPT_UINTEGER('D', "delay", &trace.opts.initial_delay, + "ms to wait before starting measurement after program " + "start"), OPT_END() }; bool __maybe_unused max_stack_user_set = true; -- 2.10.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [tip:perf/core] perf trace: Implement --delay 2016-10-10 5:43 ` [PATCH] perf: implement " Alexis Berlemont @ 2016-10-24 19:04 ` tip-bot for Alexis Berlemont 0 siblings, 0 replies; 4+ messages in thread From: tip-bot for Alexis Berlemont @ 2016-10-24 19:04 UTC (permalink / raw) To: linux-tip-commits Cc: tglx, mingo, hpa, acme, alexis.berlemont, linux-kernel, alexander.shishkin, peterz Commit-ID: e36b7821a985325dd7074de96deface5c9c6d700 Gitweb: http://git.kernel.org/tip/e36b7821a985325dd7074de96deface5c9c6d700 Author: Alexis Berlemont <alexis.berlemont@gmail.com> AuthorDate: Mon, 10 Oct 2016 07:43:28 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Mon, 24 Oct 2016 11:07:43 -0300 perf trace: Implement --delay In the perf wiki todo-list[1], there is an entry regarding initial-delay and 'perf trace'; the following small patch tries to fulfill this point. It has been generated against the branch tip/perf/core. It has only been implemented in the "trace__run" case. Ex.: $ sudo strace -- ./perf trace --delay 5 sleep 1 2>&1 ... fcntl(7, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 ioctl(7, PERF_EVENT_IOC_ID, 0x7ffc8fd35718) = 0 ioctl(11, PERF_EVENT_IOC_SET_OUTPUT, 0x7) = 0 fcntl(11, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 ioctl(11, PERF_EVENT_IOC_ID, 0x7ffc8fd35718) = 0 write(6, "\0", 1) = 1 close(6) = 0 nanosleep({0, 5000000}, NULL) = 0 # DELAY OF 5 MS BEFORE ENABLING THE EVENTS ioctl(3, PERF_EVENT_IOC_ENABLE, 0) = 0 ioctl(4, PERF_EVENT_IOC_ENABLE, 0) = 0 ioctl(5, PERF_EVENT_IOC_ENABLE, 0) = 0 ioctl(7, PERF_EVENT_IOC_ENABLE, 0) = 0 ... [1]: https://perf.wiki.kernel.org/index.php/Todo Signed-off-by: Alexis Berlemont <alexis.berlemont@gmail.com> Suggested-and-Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20161010054328.4028-2-alexis.berlemont@gmail.com [ Add entry to the manpage, cut'n'pasted from stat's and record's ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Documentation/perf-trace.txt | 5 +++++ tools/perf/builtin-trace.c | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/tools/perf/Documentation/perf-trace.txt b/tools/perf/Documentation/perf-trace.txt index 1ab0782..781b019 100644 --- a/tools/perf/Documentation/perf-trace.txt +++ b/tools/perf/Documentation/perf-trace.txt @@ -39,6 +39,11 @@ OPTIONS Prefixing with ! shows all syscalls but the ones specified. You may need to escape it. +-D msecs:: +--delay msecs:: +After starting the program, wait msecs before measuring. This is useful to +filter out the startup phase of the program, which is often very different. + -o:: --output=:: Output file name. diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index c298bd3..0bae454 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -2310,12 +2310,17 @@ static int trace__run(struct trace *trace, int argc, const char **argv) if (err < 0) goto out_error_mmap; - if (!target__none(&trace->opts.target)) + if (!target__none(&trace->opts.target) && !trace->opts.initial_delay) perf_evlist__enable(evlist); if (forks) perf_evlist__start_workload(evlist); + if (trace->opts.initial_delay) { + usleep(trace->opts.initial_delay * 1000); + perf_evlist__enable(evlist); + } + trace->multiple_threads = thread_map__pid(evlist->threads, 0) == -1 || evlist->threads->nr > 1 || perf_evlist__first(evlist)->attr.inherit; @@ -2816,6 +2821,9 @@ int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused) "Default: kernel.perf_event_max_stack or " __stringify(PERF_MAX_STACK_DEPTH)), OPT_UINTEGER(0, "proc-map-timeout", &trace.opts.proc_map_timeout, "per thread proc mmap processing timeout in ms"), + OPT_UINTEGER('D', "delay", &trace.opts.initial_delay, + "ms to wait before starting measurement after program " + "start"), OPT_END() }; bool __maybe_unused max_stack_user_set = true; ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] Implement --delay on perf trace 2016-10-10 5:43 [PATCH] Implement --delay on perf trace Alexis Berlemont 2016-10-10 5:43 ` [PATCH] perf: implement " Alexis Berlemont @ 2016-10-14 16:03 ` Arnaldo Carvalho de Melo 1 sibling, 0 replies; 4+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-10-14 16:03 UTC (permalink / raw) To: Alexis Berlemont; +Cc: linux-kernel, peterz, mingo, alexander.shishkin Em Mon, Oct 10, 2016 at 07:43:27AM +0200, Alexis Berlemont escreveu: > Hi, > > In the perf wiki todo-list, there is an entry regarding initial-delay and > perf trace; the following small patch tries to fulfill this point. It > has been generated against the branch tip/perf/core. > > It has only been implemented in the "trace__run" case. Ok, moved the description to the cset comment and added the entry to tools/perf/Documentation/perf-trace.txt, i.e. to its man page, just copying from the exact same description in 'perf stat' and 'perf record's ones. What is next? :-) - Arnaldo > Ex.: > > $ sudo strace -- ./perf trace --delay 5 sleep 1 2>&1 > ... > fcntl(7, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 > ioctl(7, PERF_EVENT_IOC_ID, 0x7ffc8fd35718) = 0 > ioctl(11, PERF_EVENT_IOC_SET_OUTPUT, 0x7) = 0 > fcntl(11, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 > ioctl(11, PERF_EVENT_IOC_ID, 0x7ffc8fd35718) = 0 > write(6, "\0", 1) = 1 > close(6) = 0 > nanosleep({0, 5000000}, NULL) = 0 # DELAY OF 5 MS BEFORE ENABLING THE EVNTS > ioctl(3, PERF_EVENT_IOC_ENABLE, 0) = 0 > ioctl(4, PERF_EVENT_IOC_ENABLE, 0) = 0 > ioctl(5, PERF_EVENT_IOC_ENABLE, 0) = 0 > ioctl(7, PERF_EVENT_IOC_ENABLE, 0) = 0 > ... > > Alexis. > > Alexis Berlemont (1): > perf: implement --delay on perf trace > > tools/perf/builtin-trace.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > -- > 2.10.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-10-24 19:05 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-10-10 5:43 [PATCH] Implement --delay on perf trace Alexis Berlemont 2016-10-10 5:43 ` [PATCH] perf: implement " Alexis Berlemont 2016-10-24 19:04 ` [tip:perf/core] perf trace: Implement --delay tip-bot for Alexis Berlemont 2016-10-14 16:03 ` [PATCH] Implement --delay on perf trace Arnaldo Carvalho de Melo
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.