Skip to content

Commit

Permalink
perf evlist: Do not use hard coded value for a mmap_pages default
Browse files Browse the repository at this point in the history
So far what is in there by default is what we were using: 512KB + the
control page, but the admin may change that, and if it does to a smaller
value, all calls to tooling for non root users start failing, requiring
that the user manually set --mmap_pages/-m.

Use instead what is in /proc/sys/kernel/perf_event_mlock_kb.

Cc: Adrian Hunter <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Don Zickus <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
  • Loading branch information
acmel committed Dec 16, 2014
1 parent 38d5447 commit 8185e88
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions tools/perf/util/evlist.c
Original file line number Diff line number Diff line change
Expand Up @@ -893,10 +893,22 @@ static int perf_evlist__mmap_per_thread(struct perf_evlist *evlist,

static size_t perf_evlist__mmap_size(unsigned long pages)
{
/* 512 kiB: default amount of unprivileged mlocked memory */
if (pages == UINT_MAX)
pages = (512 * 1024) / page_size;
else if (!is_power_of_2(pages))
if (pages == UINT_MAX) {
int max;

if (sysctl__read_int("kernel/perf_event_mlock_kb", &max) < 0) {
/*
* Pick a once upon a time good value, i.e. things look
* strange since we can't read a sysctl value, but lets not
* die yet...
*/
max = 512;
} else {
max -= (page_size / 1024);
}

pages = (max * 1024) / page_size;
} else if (!is_power_of_2(pages))
return 0;

return (pages + 1) * page_size;
Expand Down

0 comments on commit 8185e88

Please sign in to comment.