Hi Brendan,
On 04/13/2015 01:35 AM, Brendan Gregg wrote:
On Sat, Apr 11, 2015 at 7:13 PM, Brendan Gregg
<[email protected]> wrote:
G'Day,
I was just trying Hemant Kumar's user SDT patch
(http://lwn.net/Articles/618956/); anyone else tried it recently? I
applied it to 4.0.0-rc6, and it creates instrumentation, but doesn't
record the probes.
This works (it finds the Node.js probes):
# ./perf sdt-cache --dump
/home/bgregg-testtest/node-standard/out/Release/node:
%node:net__server__connection
%node:net__stream__end
%node:net__socket__read
%node:net__socket__write
%node:http__server__request
%node:http__server__response
%node:http__client__request
%node:http__client__response
%node:gc__done
%node:gc__start
But I can't "perf list" or record them:
# ./perf record -e '%node:http__server__request' -aR
invalid or unsupported event: '%node:http__server__request'
Run 'perf list' for a list of valid events
[...]
stap works:
# /root/systemtap-2.8/bin/stap -e 'probe
process("/home/bgregg-testtest/node-standard/out/Release/node").mark("http__server__request")
{ println("hit"); }'
hit
hit
Brendan
Some more digging... So a simple C program with a DTRACE_PROBE1()
works, where the marker ends up being "%tick:loop":
# ./perf record -e '%tick:loop' -a -g
[...]
^C
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.334 MB perf.data (2 samples) ]
But the %node markers don't work (eg, "%node:gc__start"). Maybe the
presence of underscores is breaking it? By adding some debug
statements, I dug this message out of yyparse(), which was failing:
yyparse() yymsgbuf: syntax error, unexpected PE_NAME, expecting $end
I rebased and tried the patches with perf for the latest tip:
# ./perf sdt-cache --add /lib64/libc.so.6
8 events added for /lib64/libc.so.6
# ./perf sdt-cache --dump
/usr/lib64/libc-2.16.so:
%libc:setjmp
%libc:longjmp
%libc:longjmp_target
%libc:lll_futex_wake
%libc:lll_lock_wait_private
%libc:longjmp
%libc:longjmp_target
%libc:lll_futex_wake
# ./perf record -e %libc:longjmp_target -aR sleep 1
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.286 MB perf.data ]
Its able to probe and record on %libc:longjmp_target with an underscore.
Also, can you please point me to the node.js with SDT markers you are
using and can you dump me the readelf -n /path/to/node.js o/p?
--
Thanks,
Hemant Kumar
--
To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html