aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWang Nan <wangnan0@huawei.com>2016-01-21 05:10:31 +0000
committerWang Nan <wangnan0@huawei.com>2016-01-21 06:48:00 +0000
commita1fc87160ac43a0b072b7ac8ef13e4526ce1bc81 (patch)
tree43b39af8f3f445ea9dd0679b5168590fe42f1345
parent893a190a9fd5c9e65e9838ecc52127b99013bcee (diff)
downloadlinux-perf/overwrite-benchmark.tar.gz
perf tools: Allow manually turn off kernel support of backward and tailsize ring bufferperf/overwrite-benchmark
We want to test performance panalty of bare overwrite ring buffer. Give two options to manually disable kernel support of backward and tailsize ring buffers. Signed-off-by: Wang Nan <wangnan0@huawei.com> Signed-off-by: He Kuang <hekuang@huawei.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Zefan Li <lizefan@huawei.com> Cc: pi3orama@163.com
-rw-r--r--tools/perf/builtin-record.c8
-rw-r--r--tools/perf/perf.h2
-rw-r--r--tools/perf/util/record.c6
3 files changed, 12 insertions, 4 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 855e0f1e83f8f..57cdb6eb748c9 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -465,9 +465,7 @@ static int record__open(struct record *rec)
if (!pos->attr.write_backward &&
!(pos->attr.sample_type &
PERF_SAMPLE_TAILSIZE)) {
- rc = -ENOSYS;
ui__warning("Unable to read from overwrite ring buffer\n");
- goto out;
}
}
try_again:
@@ -1589,6 +1587,12 @@ struct option __record_options[] = {
"Switch output when receive SIGUSR2"),
OPT_BOOLEAN(0, "use-tailsize", &record.opts.use_tailsize,
"Use tailsize for overwrite ring buffer instead of backward writing"),
+ OPT_BOOLEAN_SET(0, "has-write-backward", &record.opts.has_write_backward,
+ &record.opts.has_write_backward_set,
+ "Manually set support of backward ring buffer"),
+ OPT_BOOLEAN_SET(0, "has-tailsize", &record.opts.has_tailsize,
+ &record.opts.has_tailsize_set,
+ "Manually set support of tailsize ring buffer"),
OPT_BOOLEAN(0, "tail-tracking", &record.tail_tracking,
"Generate tracking events at the end of output"),
OPT_END()
diff --git a/tools/perf/perf.h b/tools/perf/perf.h
index 60daf5a7fda8d..32ac5716f3ef4 100644
--- a/tools/perf/perf.h
+++ b/tools/perf/perf.h
@@ -73,7 +73,9 @@ struct record_opts {
unsigned initial_delay;
bool use_clockid;
bool has_write_backward;
+ bool has_write_backward_set;
bool has_tailsize;
+ bool has_tailsize_set;
bool use_tailsize;
clockid_t clockid;
unsigned int proc_map_timeout;
diff --git a/tools/perf/util/record.c b/tools/perf/util/record.c
index 69d8dfe9ca6dd..f9154d402cec3 100644
--- a/tools/perf/util/record.c
+++ b/tools/perf/util/record.c
@@ -255,8 +255,10 @@ static int record_opts__config_freq(struct record_opts *opts)
int record_opts__config(struct record_opts *opts)
{
- opts->has_write_backward = perf_can_write_backward();
- opts->has_tailsize = perf_can_sample_tailsize();
+ if (!opts->has_write_backward_set)
+ opts->has_write_backward = perf_can_write_backward();
+ if (!opts->has_tailsize_set)
+ opts->has_tailsize = perf_can_sample_tailsize();
return record_opts__config_freq(opts);
}