From: Adrian Hunter <adrian.hunter@intel.com>
To: David Ahern <dsahern@gmail.com>
Cc: acme@ghostprotocols.net, linux-kernel@vger.kernel.org,
Ingo Molnar <mingo@kernel.org>, Jiri Olsa <jolsa@redhat.com>
Subject: Re: [PATCH] perf tool: Round mmap pages to power 2
Date: Fri, 08 Nov 2013 11:11:07 +0200 [thread overview]
Message-ID: <527CAAAB.3000900@intel.com> (raw)
In-Reply-To: <1383885392-31082-1-git-send-email-dsahern@gmail.com>
On 08/11/13 06:36, David Ahern wrote:
> Currently perf requires the -m / --mmap_pages option to be a power of 2.
> To be more user friendly perf should automatically round this up to the
> next power of 2.
>
> Currently:
> $ perf record -m 3 -a -- sleep 1
> --mmap_pages/-m value must be a power of two.sleep: Terminated
>
> With patch:
> $ perf record -m 3 -a -- sleep 1
> rounding mmap pages size to 16384 (4 pages)
> ...
This prevents:
--out-pages=0
from working e.g.
tools/perf/perf record -vv --out-pages=0 uname
rounding mmap pages size to 4096 (1 pages)
Although without this patch:
tools/perf/perf record -vv --out-pages=0 uname
--mmap_pages/-m value must be a power of two.
usage: perf record [<options>] [<command>]
or: perf record [<options>] -- <command> [<options>]
--out-pages <pages>
Number of pages or size with units to use for
output (default 64M)
Also there is:
tools/perf/perf record -vv --no-out-pages uname
Segmentation fault (core dumped)
> Signed-off-by: David Ahern <dsahern@gmail.com>
> Suggested-by: Ingo Molnar <mingo@kernel.org>
> Cc: Ingo Molnar <mingo@kernel.org>
> Cc: Jiri Olsa <jolsa@redhat.com>
> ---
> tools/perf/util/evlist.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
> index b939221efd8d..9ec3a5a45f22 100644
> --- a/tools/perf/util/evlist.c
> +++ b/tools/perf/util/evlist.c
> @@ -722,11 +722,6 @@ int perf_evlist__parse_mmap_pages(const struct option *opt, const char *str,
> if (val != (unsigned long) -1) {
> /* we got file size value */
> pages = PERF_ALIGN(val, page_size) / page_size;
> - if (pages < (1UL << 31) && !is_power_of_2(pages)) {
> - pages = next_pow2(pages);
> - pr_info("rounding mmap pages size to %lu (%lu pages)\n",
> - pages * page_size, pages);
> - }
> } else {
> /* we got pages count value */
> char *eptr;
> @@ -737,6 +732,12 @@ int perf_evlist__parse_mmap_pages(const struct option *opt, const char *str,
> }
> }
>
> + if (pages < (1UL << 31) && !is_power_of_2(pages)) {
> + pages = next_pow2(pages);
> + pr_info("rounding mmap pages size to %lu (%lu pages)\n",
> + pages * page_size, pages);
> + }
> +
> if (pages > UINT_MAX || pages > SIZE_MAX / page_size) {
> pr_err("--mmap_pages/-m value too big\n");
> return -1;
next prev parent reply other threads:[~2013-11-08 9:04 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-08 4:36 [PATCH] perf tool: Round mmap pages to power 2 David Ahern
2013-11-08 9:11 ` Adrian Hunter [this message]
2013-11-08 14:41 ` David Ahern
2013-11-11 7:55 ` Adrian Hunter
2013-11-11 11:27 ` Ingo Molnar
2013-11-11 14:59 ` 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=527CAAAB.3000900@intel.com \
--to=adrian.hunter@intel.com \
--cc=acme@ghostprotocols.net \
--cc=dsahern@gmail.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.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 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.