diff options
author | Wang Nan <wangnan0@huawei.com> | 2016-01-21 05:10:31 +0000 |
---|---|---|
committer | Wang Nan <wangnan0@huawei.com> | 2016-01-21 06:48:00 +0000 |
commit | a1fc87160ac43a0b072b7ac8ef13e4526ce1bc81 (patch) | |
tree | 43b39af8f3f445ea9dd0679b5168590fe42f1345 | |
parent | 893a190a9fd5c9e65e9838ecc52127b99013bcee (diff) | |
download | linux-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.c | 8 | ||||
-rw-r--r-- | tools/perf/perf.h | 2 | ||||
-rw-r--r-- | tools/perf/util/record.c | 6 |
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); } |