lkml.org 
[lkml]   [2011]   [Apr]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [2.6.39-rc2] perf top fails to mmap - bisected to 70db7533
Em Wed, Apr 06, 2011 at 04:45:09PM -0600, David Ahern escreveu:
> On 04/06/11 16:15, David Ahern wrote:
> > On 04/06/11 14:48, Tim Blechmann wrote:
> >>>>> this happens when running perf as the same process as the process and
> >>>>> when running perf as root.
> >>>
> >>> yep, works for me as well:
> >>>
> >>> [acme@emilia ~]$ cat vsyscall.c
> >>
> >> after including unistd.h, this compiles and works fine. however i cannot profile
> >> any multithreaded program. does this work for you?

> > That does fail:
> > # ps -C rsyslogd -L
> > PID LWP TTY TIME CMD
> > 795 795 ? 00:00:00 rsyslogd
> > 795 797 ? 00:00:00 rsyslogd
> > 795 798 ? 00:00:00 rsyslogd

> > # /tmp/build-perf/perf top -p 795
> > Failed to mmap with 22 (Invalid argument)

> > strace shows it failing at:
> > ioctl(4, PERF_EVENT_IOC_SET_OUTPUT, 0x3) = -1 EINVAL (Invalid argument)

> > Changing to use thread only works:
> > # /tmp/build-perf/perf top -t 795
>
> git bisect points to:
>
> 70db7533caef02350ec8d6852e589491bca3a951 is the first bad commit
> commit 70db7533caef02350ec8d6852e589491bca3a951
> Author: Arnaldo Carvalho de Melo <acme@redhat.com>
> Date: Wed Jan 12 22:39:13 2011 -0200
>
> perf evlist: Move the mmap array from perf_evsel
>
> Adopting the new model used in 'perf record', where we don't have a map
> per thread per cpu, instead we have an mmap per cpu, established on the
> first fd for that cpu and ask the kernel using the
> PERF_EVENT_IOC_SET_OUTPUT ioctl to send events for the other fds on that
> cpu for the one with the mmap.
>
> The methods moved from perf_evsel to perf_evlist, but for easing review
> they were modified in place, in evsel.c, the next patch will move the
> migrated methods to evlist.c.
>
> With this 'perf top' now uses the same mmap model used by 'perf record'
> and the next patches will make 'perf record' use these new routines,
> establishing a common codebase for both tools.
>
> ----------
>
> Coincidentally, perf-record is also broken. git bisect points to:
>
> dd7927f4f8ee75b032ff15aeef4bda49719a443a is the first bad commit
> commit dd7927f4f8ee75b032ff15aeef4bda49719a443a
> Author: Arnaldo Carvalho de Melo <acme@redhat.com>
> Date: Wed Jan 12 14:28:51 2011 -0200
>
> perf record: Use perf_evsel__open
>
> Now its time to factor out the mmap handling bits into the perf_evsel
> class.

I'll work on that tomorrow, if nobody fixes this till then :-)

- Arnaldo


\
 
 \ /
  Last update: 2011-04-07 22:47    [W:0.063 / U:0.612 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site