[CRIU] [PATCH] [RFC] perf: Here is an example how to trace syscalls
Christopher Covington
cov at codeaurora.org
Wed Oct 8 05:19:11 PDT 2014
Hi Andrew,
On 10/06/2014 10:25 AM, Andrew Vagin wrote:
> On Mon, Oct 06, 2014 at 09:30:02AM -0400, Christopher Covington wrote:
>> On 10/01/2014 04:03 AM, Andrew Vagin wrote:
>>> On Tue, Sep 30, 2014 at 01:23:55PM -0400, Christopher Covington wrote:
>> How do you differentiate parasite versus pre-parasite/post-parasite original code?
>
> Here is an example of output:
> $ perf trace report -i /root/git/criu/test/dump/static/env00/1127/1/perf.dump
> ....
> 29.946 ( 0.012 ms): criu/1146 write(fd: 1023, buf: 0x6b5940, count: 44 ) = 44
> 29.959 ( 0.012 ms): criu/1146 recvfrom(fd: 31, ubuf: 0x7fffa48f4e60, size: 12, flags: WAITALL ) = 12
> 29.973 ( 0.013 ms): criu/1146 write(fd: 1023, buf: 0x6b5940, count: 31 ) = 31
> 29.999 ( 0.088 ms): env00/1127 recvfrom(fd: 3, ubuf: 0x7fee6cdf0998, size: 12, flags: WAITALL ) = 12
> 30.013 ( 0.013 ms): env00/1127 write(fd: 4, buf: 0x7fee6cdf0878, count: 26 ) = 26
> 30.016 ( 0.002 ms): env00/1127 rt_sigaction(sig: HUP, oact: 0x7fee6cde6c60, sigsetsize: 8 ) = 0
> 30.018 ( 0.001 ms): env00/1127 rt_sigaction(sig: INT, oact: 0x7fee6cde6c80, sigsetsize: 8 ) = 0
> ...
>
> You can see how criu sends a command to parasite and then it handles the command.
>
> And ont more example is how to get top 10 of syscalls:
> [root at avagin-fc19-cr criu]# perf trace report -s -i /root/git/criu/test/dump/static/env00/1127/1/perf.dump | sort -n -k 2 -r | head -n 10
> syscall calls min avg max stddev
> (msec) (msec) (msec) (%)
> write 764 0.012 0.017 0.110 2.62%
> close 165 0.001 0.001 0.009 3.39%
> openat 147 0.012 0.038 0.211 5.19%
> read 93 0.001 0.012 0.077 13.78%
> ptrace 86 0.002 0.015 0.263 26.51%
> rt_sigaction 62 0.001 0.002 0.015 15.55%
> rt_sigaction 62 0.001 0.001 0.010 11.14%
> fstat 45 0.001 0.002 0.027 26.85%
> prctl 42 0.001 0.001 0.002 1.93%
> prctl 42 0.001 0.001 0.001 1.75%
>
This looks very useful for examining CRIU behavior given a relatively quiet
dumped process (dumpee?). However if the process being dumped (dumpee) is
noisily making many of its own system calls, won't these be indistinguishably
mixed with the parasite's system calls?
The reason I ask is because I think a solution to this, such as some kind of
instrumentation, trigger, or both to ensure only the parasite is measured
might help solve I problem I have a very crude solution to at the moment. That
problem is essentially the opposite one: profiling only the restored dumped
process (dumpee), making sure no parasite code, signal handling, nor ptrace
side effects are included. The very crude approach I'm currently using is
checkpoint early and run long enough that the system call frequency should be
back to normal restored process (dumpee) levels before starting perf.
Thanks,
Christopher
--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by the Linux Foundation.
More information about the CRIU
mailing list