RE: [PATCH 03/10] perf tool: new iterfaces to read event from ring buffer

From: Liang, Kan
Date: Tue Oct 10 2017 - 17:03:20 EST


> On 2017/10/11 3:17, Arnaldo Carvalho de Melo wrote:
> > Em Wed, Oct 11, 2017 at 03:10:37AM +0800, Wangnan (F) escreveu:
> >>
> >> On 2017/10/11 3:00, Arnaldo Carvalho de Melo wrote:
> >>> Em Tue, Oct 10, 2017 at 03:36:28PM -0300, Arnaldo Carvalho de Melo
> escreveu:
> >>>> Em Tue, Oct 10, 2017 at 03:34:55PM -0300, Arnaldo Carvalho de Melo
> escreveu:
> >>>>> Em Tue, Oct 10, 2017 at 06:28:18PM +0000, Liang, Kan escreveu:
> >>>>>>> Em Tue, Oct 10, 2017 at 10:20:16AM -0700, kan.liang@xxxxxxxxx
> escreveu:
> >>>>>>>> From: Kan Liang <kan.liang@xxxxxxxxx>
> >>>>>>>>
> >>>>>>>> The perf_evlist__mmap_read only support forward mode. It needs
> >>>>>>>> a common function to support both forward and backward mode.
> >>>>>>>> The perf_evlist__mmap_read_backward is buggy.
> >>>>>>> So, what is the bug? You state that it is buggy, but don't spell
> >>>>>>> out the bug, please do so.
> >>>>>>>
> >>>>>> union perf_event *perf_evlist__mmap_read_backward(struct
> >>>>>> perf_evlist *evlist, int idx) {
> >>>>>> struct perf_mmap *md = &evlist->mmap[idx]; <--- it should
> be
> >>>>>> backward_mmap
> >>>>>>
> >>>>>>> If it fixes an existing bug, then it should go separate from this
> patchkit, right?
> >>>>>> There is no one use perf_evlist__mmap_read_backward. So it
> doesn't trigger any issue.
> >>>>> There is no one at the end of your patchkit? Or no user _right
> >>>>> now_? If there is a user now, lemme see... yeah, no user right
> >>>>> now, so _that_ is yet another bug, i.e. it should be used, no? If
> >>>>> this is just a left over, then we should just throw it away, now, its a
> cleanup.
> >>>> Wang, can you take a look at these two issues?
> >>> So it looks leftover that should've been removed by the following cset,
> right Wang?
> >>> commit a0c6f451f90204847ce5f91c3268d83a76bde1b6
> >>> Author: Wang Nan <wangnan0@xxxxxxxxxx>
> >>> Date: Thu Jul 14 08:34:41 2016 +0000
> >>> perf evlist: Drop evlist->backward
> >>> Now there's no real user of evlist->backward. Drop it. We are going to
> >>> use evlist->backward_mmap as a container for backward ring buffer.
> >
> >> Yes, it should be removed, but then there will be no corresponding
> >> function to perf_evlist__mmap_read(), which read an record from
> >> forward ring buffer.
> >
> >> I think Kan wants to become the first user of this function because
> >> he is trying to make 'perf top' utilizing backward ring buffer. It
> >> needs perf_evlist__mmap_read_backward(), and he triggers the bug use
> >> his unpublished patch set.
> >
> >> I think we can remove it now, let Kan fix and add it back in his 'perf top'
> >> patch set.
> > Well, if there will be a user, perhaps we should fix it, as it seems
> > interesting to have now for, as you said, a counterpart for the
> > forward ring buffer, and one that we have plans for using soon, right?
>
> Right if I understand Kan's patch 00/10 correctly. He said:
>
> ...
> But perf top need to switch to overwrite backward mode for good
> performance.
> ...
>
Yes, it will be used for perf top optimization.
That will be great if you can fix it.

I still think it's a good idea to have common interfaces for both perf record
and other tools like perf top.
rb_find_range/backward_rb_find_range could be shared.
The mmap read codes are similar.

Thanks,
Kan