lkml.org 
[lkml]   [2011]   [Apr]   [22]   [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
    I know you've been busy with other stuff the past few weeks, but have
    you had a chance to look into this? Basically, perf in 2.6.39 is broken
    when trying to profile a process (-p argument to record or top).

    David


    > On 04/06/11 16:15, David Ahern wrote:
    >>
    >>
    >> On 04/06/11 14:48, Tim Blechmann wrote:
    >>>>> David
    >>>>>
    >>>>>> 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?
    >>>
    >>> tim
    >>>
    >>
    >> 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.


    \
     
     \ /
      Last update: 2011-04-22 18:39    [W:0.027 / U:29.340 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site