Re: [2.6.39-rc2] perf top fails to mmap - bisected to 70db7533

From: David Ahern
Date: Wed Apr 06 2011 - 18:45:18 EST




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@xxxxxxxxxx>
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@xxxxxxxxxx>
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.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/