mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
perf tools: Introduce rlimit__bump_memlock() helper
Just like the BPF guys did when faced with failures with map creation, etc, i.e. their solution is: tools/testing/selftests/bpf/bpf_rlimit.h For perf use this function in 'perf test' and in 'perf trace'. Make it bump to 4 times the current value, if it fails twice the current value and if it still fails, warn that things like BPF map creation may fail, to help in diagnosing the problem. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexei Starovoitov <ast@kernel.org> Cc: Daniel Borkmann <daniel@iogearbox.net> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Link: https://lkml.kernel.org/n/tip-muvqef2i7n6pzqbmu7tn2d2y@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
323fd74982
commit
4975223b81
@ -20,6 +20,7 @@ perf-y += parse-events.o
|
||||
perf-y += perf_regs.o
|
||||
perf-y += path.o
|
||||
perf-y += print_binary.o
|
||||
perf-y += rlimit.o
|
||||
perf-y += argv_split.o
|
||||
perf-y += rbtree.o
|
||||
perf-y += libstring.o
|
||||
|
29
tools/perf/util/rlimit.c
Normal file
29
tools/perf/util/rlimit.c
Normal file
@ -0,0 +1,29 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1 */
|
||||
|
||||
#include "util/debug.h"
|
||||
#include "util/rlimit.h"
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
|
||||
/*
|
||||
* Bump the memlock so that we can get bpf maps of a reasonable size,
|
||||
* like the ones used with 'perf trace' and with 'perf test bpf',
|
||||
* improve this to some specific request if needed.
|
||||
*/
|
||||
void rlimit__bump_memlock(void)
|
||||
{
|
||||
struct rlimit rlim;
|
||||
|
||||
if (getrlimit(RLIMIT_MEMLOCK, &rlim) == 0) {
|
||||
rlim.rlim_cur *= 4;
|
||||
rlim.rlim_max *= 4;
|
||||
|
||||
if (setrlimit(RLIMIT_MEMLOCK, &rlim) < 0) {
|
||||
rlim.rlim_cur /= 2;
|
||||
rlim.rlim_max /= 2;
|
||||
|
||||
if (setrlimit(RLIMIT_MEMLOCK, &rlim) < 0)
|
||||
pr_debug("Couldn't bump rlimit(MEMLOCK), failures may take place when creating BPF maps, etc\n");
|
||||
}
|
||||
}
|
||||
}
|
6
tools/perf/util/rlimit.h
Normal file
6
tools/perf/util/rlimit.h
Normal file
@ -0,0 +1,6 @@
|
||||
#ifndef __PERF_RLIMIT_H_
|
||||
#define __PERF_RLIMIT_H_
|
||||
/* SPDX-License-Identifier: LGPL-2.1 */
|
||||
|
||||
void rlimit__bump_memlock(void);
|
||||
#endif // __PERF_RLIMIT_H_
|
Loading…
Reference in New Issue
Block a user