Re: A concern about overflow ring buffer mode

Liang, Kan
2018-10-26T20:11:56Z

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.
> <SMIP>
>>> 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
>>> below:
>
>>> perf top --no-overwrite
>
>>> is:
>
>>> 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?
>
>> Sure.
>
> 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.
+--overwrite::
+ 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. :)

Thanks,
Kan