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.budan...@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) {
>               ...
>       }

Corrected 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()
>>  };
> 

Reply via email to