On 24.10.2020 18:44, Jiri Olsa wrote: > On Wed, Oct 21, 2020 at 07:02:56PM +0300, Alexey Budankov wrote: > > SNIP > >> >> record__synthesize(rec, true); >> - /* this will be recalculated during process_buildids() */ >> - rec->samples = 0; >> >> if (!err) { >> if (!rec->timestamp_filename) { >> @@ -2680,9 +2709,12 @@ int cmd_record(int argc, const char **argv) >> >> } >> >> - if (rec->opts.kcore) >> + if (rec->opts.kcore || record__threads_enabled(rec)) >> rec->data.is_dir = true; >> >> + if (record__threads_enabled(rec)) >> + rec->opts.affinity = PERF_AFFINITY_CPU; > > so all the threads will pin to cpu and back before reading?
No, they will not back. Thread mask compares to mmap mask before read and the thread migrates if masks don't match. This happens once on the first mmap read. So explicit pinning can be avoided. Alexei