Re: A concern about overflow ring buffer mode

From: Liang, Kan
Date: Fri Oct 26 2018 - 16:11:55 EST

On 10/26/2018 3:24 PM, Arnaldo Carvalho de Melo wrote:
Em Fri, Oct 26, 2018 at 03:16:29PM -0400, Liang, Kan escreveu:

On 10/26/2018 3:12 PM, Arnaldo Carvalho de Melo wrote:
Em Fri, Oct 26, 2018 at 03:07:40PM -0400, Liang, Kan escreveu:
On 10/26/2018 3:02 PM, Arnaldo Carvalho de Melo wrote:
So, I'm adding the following to my tree to help in diagnosing problems
with this overwrite mode:
Actually, you can use per-event overwrite term to disable overwrite mode for
perf top.
I see, it will disable that opts->overwrite if it finds the no-overwrite
in the per-event definition, so the equivalent of the option I added

perf top --no-overwrite


perf top -e cycles/no-overwrite/

I checked and both have the same result. But I still think there is
value in having the shorter form, ok?



I think that we should default back to --no-overwrite till we get this
sorted out, as the effect is easily noticeable, as David reported and I
reproduced, when doing kernel builds.

It is mainly for performance reason to switch to overwrite mode. The impact was very small when I did my test. But now the effect is easily noticeable in other tests. Yes, I agree. We may change it back to non-overwrite mode until the issue is addressed.

On systems such as Knights Landing/Mill one can use --overwrite, knowing
about this current map resolving limitation, i.e. for workloads where
there are not that many short lived threads or mmap'ing, that could be
possibly tolerable.

Could you please add this in the description of --overwrite?
It looks like the --overwrite is not default anymore.
+ This is the default, but for investigating problems with it or any other strange
+ behaviour like lots of unknown samples, we may want to disable this mode by using
+ --no-overwrite.

Fixing this properly will probably involve using the ordered_events code
and two evlist, one for the PERF_RECORD_!SAMPLE in non-overwrite mode
and the other for PERF_RECORD_SAMPLE in overwrite mode, else someone
comes up with some better solution :-)

Supporting both overwrite and non-overwrite mode?
I think that needs some changes in kernel. May need to split the ring buffer for different mode. I think it should be very complex.
But I don't have a better solution for now. :)