lkml.org 
[lkml]   [2013]   [Dec]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 0/4] perf trace fixes
On 12/4/13, 7:41 PM, David Ahern wrote:
> Hi Arnaldo:
>
> As I mentioned on IRC perf-trace fails on older kernels -- like RHEL6. This
> set of patches makes it at least usable - though still some problems I am
> hoping you can fix.
>
> Build perf with these patches and run:
>
> perf trace -- dd if=/dev/zero of=/tmp/zero bs=4096 count=16
>
> you see something like this which is just wrong:
>
> 3.684 ( 0.007 ms): write(buf: 2, count: 140737077958816 ) = 27
>
> there is no fd (should be 1 for the write) and all the values are wrong.
> Perhaps it is an artifact of the older way of doing system call tracing, but
> I see something goofy with the 3.12 kernel as well:
> 5.633 ( 0.004 ms): write(fd: 2, buf: 0x7fff9177fee0, count: 24 ) = 24

forget this last comment about 3.12; it works fine. That write entry is
the final write by dd:

write(2, "65536 bytes (66 kB) copied", 2665536 bytes (66 kB) copied) = 26

That one is fine and looking up I see the 4096 lines as expected.

For RHEL6, the problem is there for the 4096 lines:

32.641 ( 0.005 ms): read(buf: 0, count: 27258880) = 4096
32.655 ( 0.009 ms): write(buf: 1, count: 27258880) = 4096

buf and count are wrong. Adding -e write to the perf-trace I get:

33.775 ( 0.031 ms): write(buf: 1</tmp/zero>, count: 37437440) = 4096

which suggests an off-by-1 error with parsing syscalls versus
raw_syscalls. I am hoping you have an idea on how to fix that.

David


\
 
 \ /
  Last update: 2013-12-05 05:21    [W:0.094 / U:0.684 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site