From: David Ahern <dsa@cumulusnetworks.com>
To: acme@kernel.org
Cc: mingo@kernel.org, peterz@infradead.org, namhyung@kernel.org,
jolsa@kernel.org, linux-kernel@vger.kernel.org,
David Ahern <dsahern@gmail.com>
Subject: [PATCH v2 3/6] perf script: Add option to specify time window of interest
Date: Tue, 29 Nov 2016 10:15:43 -0700 [thread overview]
Message-ID: <1480439746-42695-4-git-send-email-dsahern@gmail.com> (raw)
In-Reply-To: <1480439746-42695-1-git-send-email-dsahern@gmail.com>
Add option to allow user to control analysis window. e.g., collect data
for some amount of time and analyze a segment of interest within that
window.
Signed-off-by: David Ahern <dsahern@gmail.com>
---
tools/perf/Documentation/perf-script.txt | 7 +++++++
tools/perf/builtin-script.c | 15 ++++++++++++++-
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/tools/perf/Documentation/perf-script.txt b/tools/perf/Documentation/perf-script.txt
index 0f6ee09f7256..5dc5c6a09ac4 100644
--- a/tools/perf/Documentation/perf-script.txt
+++ b/tools/perf/Documentation/perf-script.txt
@@ -292,6 +292,13 @@ include::itrace.txt[]
--force::
Don't do ownership validation.
+--time::
+ Only analyze samples within given time window: <start>,<stop>. Times
+ have the format seconds.microseconds. If start is not given (i.e., time
+ string is ',x.y') then analysis starts at the beginning of the file. If
+ stop time is not given (i.e, time string is 'x.y,') then analysis goes
+ to end of file.
+
SEE ALSO
--------
linkperf:perf-record[1], linkperf:perf-script-perl[1],
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 066b4bf73780..2f3ff69fc4e7 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -22,6 +22,7 @@
#include "util/thread_map.h"
#include "util/stat.h"
#include "util/thread-stack.h"
+#include "util/time-utils.h"
#include <linux/bitmap.h>
#include <linux/stringify.h>
#include <linux/time64.h>
@@ -833,6 +834,8 @@ struct perf_script {
struct cpu_map *cpus;
struct thread_map *threads;
int name_width;
+ const char *time_str;
+ struct perf_time_interval ptime;
};
static int perf_evlist__max_name_len(struct perf_evlist *evlist)
@@ -1014,6 +1017,9 @@ static int process_sample_event(struct perf_tool *tool,
struct perf_script *scr = container_of(tool, struct perf_script, tool);
struct addr_location al;
+ if (perf_time__skip_sample(&scr->ptime, sample->time))
+ return 0;
+
if (debug_mode) {
if (sample->time < last_timestamp) {
pr_err("Samples misordered, previous: %" PRIu64
@@ -2186,7 +2192,8 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
"Enable symbol demangling"),
OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel,
"Enable kernel symbol demangling"),
-
+ OPT_STRING(0, "time", &script.time_str, "str",
+ "Time span of interest (start,stop)"),
OPT_END()
};
const char * const script_subcommands[] = { "record", "report", NULL };
@@ -2465,6 +2472,12 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused)
if (err < 0)
goto out_delete;
+ /* needs to be parsed after looking up reference time */
+ if (perf_time__parse_str(&script.ptime, script.time_str) != 0) {
+ pr_err("Invalid time string\n");
+ return -EINVAL;
+ }
+
err = __cmd_script(&script);
flush_scripting();
--
2.7.4 (Apple Git-66)
next prev parent reply other threads:[~2016-11-29 17:17 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-29 17:15 [PATCH v2 0/6] perf: " David Ahern
2016-11-29 17:15 ` [PATCH v2 1/6] perf tool: Add time-based utility functions David Ahern
2016-12-02 10:41 ` [tip:perf/core] perf tools: " tip-bot for David Ahern
2016-11-29 17:15 ` [PATCH v2 2/6] perf tool: Move parse_nsec_time to time-utils.c David Ahern
2016-12-02 10:41 ` [tip:perf/core] perf tools: " tip-bot for David Ahern
2016-11-29 17:15 ` David Ahern [this message]
2016-12-02 10:42 ` [tip:perf/core] perf script: Add option to specify time window of interest tip-bot for David Ahern
2016-11-29 17:15 ` [PATCH v2 4/6] perf sched timehist: " David Ahern
2016-11-29 18:56 ` Arnaldo Carvalho de Melo
2016-11-29 18:58 ` David Ahern
2016-11-29 19:21 ` Arnaldo Carvalho de Melo
2016-12-02 10:42 ` [tip:perf/core] " tip-bot for David Ahern
2016-11-29 17:15 ` [PATCH v2 5/6] perf kmem: " David Ahern
2016-12-02 10:43 ` [tip:perf/core] " tip-bot for David Ahern
2016-11-29 17:15 ` [PATCH v2 6/6] perf report: " David Ahern
2016-12-02 10:43 ` [tip:perf/core] " tip-bot for David Ahern
2016-11-29 19:15 ` [PATCH v2 0/6] perf: " Arnaldo Carvalho de Melo
2016-11-30 5:26 ` Namhyung Kim
2016-11-30 14:23 ` Arnaldo Carvalho de Melo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1480439746-42695-4-git-send-email-dsahern@gmail.com \
--to=dsa@cumulusnetworks.com \
--cc=acme@kernel.org \
--cc=dsahern@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome