On Thu, Sep 13, 2018 at 02:54:49PM +0200, Jiri Olsa wrote:
> Currently we assign all maps to main thread. Adding
> code that spreads maps for --threads option.
> 
> For --thread option we create as many threads as there
> are memory maps in evlist, which is the number of CPUs
> in the system or CPUs we monitor. Each thread gets a
> single data mmap to read.
> 
> In addition we have also same amount of tracking mmaps
> for auxiliary events which we don't create special thread
> for. Instead we assign the to the main thread, because
> there's not much traffic expected there.
> 
> The assignment is visible from --thread-stats output:
> 
>           pid      write       poll       skip  maps (size 20K)
>     1s   9770       144B          1          0   19K   19K   19K   18K   19K
>          9772         0B          1          0   18K
>          9773         0B          1          0   19K
>          9774         0B          1          0   19K
> 
> There are 5 maps for thread 9770 (1 data map and 4 auxiliary)
> and one data map for every other thread. Each thread writes
> data to the separate data file.

Hmm.. not sure it'll work well for large machines with 1000+ cpus.
What about giving each thread a data mmap and a tracking mmap?

Thanks,
Namhyung


> 
> In addition we also pin every thread to the cpu that
> the data map belongs to in order to keep both writer
> (kernel) and reader (perf tool thread) on the same CPU.
> 
> Link: http://lkml.kernel.org/n/[email protected]
> Signed-off-by: Jiri Olsa <[email protected]>

Reply via email to