Messages in this thread | | | From | Alexey Budankov <> | Subject | Re: [PATCH v2 4/4] perf record: implement --affinity=node|cpu option | Date | Wed, 9 Jan 2019 12:15:31 +0300 |
| |
Hi,
On 02.01.2019 0:39, Jiri Olsa wrote: > On Mon, Dec 24, 2018 at 03:28:33PM +0300, Alexey Budankov wrote: >> >> Implement --affinity=node|cpu option for the record mode defaulting >> to system affinity mask bouncing. >> >> Signed-off-by: Alexey Budankov <alexey.budankov@linux.intel.com> >> --- >> tools/perf/Documentation/perf-record.txt | 5 +++++ >> tools/perf/builtin-record.c | 18 ++++++++++++++++++ >> 2 files changed, 23 insertions(+) >> >> diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt >> index d232b13ea713..efb839784f32 100644 >> --- a/tools/perf/Documentation/perf-record.txt >> +++ b/tools/perf/Documentation/perf-record.txt >> @@ -440,6 +440,11 @@ Use <n> control blocks in asynchronous (Posix AIO) trace writing mode (default: >> Asynchronous mode is supported only when linking Perf tool with libc library >> providing implementation for Posix AIO API. >> >> +--affinity=mode:: >> +Set affinity mask of trace reading thread according to the policy defined by 'mode' value: >> + node - thread affinity mask is set to NUMA node cpu mask of the processed mmap buffer >> + cpu - thread affinity mask is set to cpu of the processed mmap buffer >> + >> --all-kernel:: >> Configure all used events to run in kernel space. >> >> diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c >> index eea96794ee45..57dc3a45d16f 100644 >> --- a/tools/perf/builtin-record.c >> +++ b/tools/perf/builtin-record.c >> @@ -1653,6 +1653,21 @@ static int parse_clockid(const struct option *opt, const char *str, int unset) >> ui__warning("unknown clockid %s, check man page\n", ostr); >> return -1; >> } >> +static int record__parse_affinity(const struct option *opt, const char *str, int unset) >> +{ >> + struct record_opts *opts = (struct record_opts *)opt->value; >> + > > please use: > > if (unset) > return 0; > > if (str) { > ... > } >
Addressed in v3.
Thanks, Alexey
> jirka > >> + if (!unset) { >> + if (str) { >> + if (!strcasecmp(str, "node")) >> + opts->affinity = PERF_AFFINITY_NODE; >> + else if (!strcasecmp(str, "cpu")) >> + opts->affinity = PERF_AFFINITY_CPU; >> + } >> + } >> + >> + return 0; >> +} >> >> static int record__parse_mmap_pages(const struct option *opt, >> const char *str, >> @@ -1961,6 +1976,9 @@ static struct option __record_options[] = { >> &nr_cblocks_default, "n", "Use <n> control blocks in asynchronous trace writing mode (default: 1, max: 4)", >> record__aio_parse), >> #endif >> + OPT_CALLBACK(0, "affinity", &record.opts, "node|cpu", >> + "Set affinity mask of trace reading thread to NUMA node cpu mask or cpu of processed mmap buffer", >> + record__parse_affinity), >> OPT_END() >> }; >
| |