[CRIU] [PATCH 2/3] dump: use breakpoints instead of tracing syscalls (v2)
Pavel Emelyanov
xemul at parallels.com
Fri Sep 19 07:01:09 PDT 2014
On 09/17/2014 07:12 PM, Andrey Vagin wrote:
> Currently CRIU traces syscalls to catch a moment, when sigreturn() is
> called. Now we trace recv(cmd), close(logfd), close(cmdfd), sigreturn().
>
> We can reduce a number of steps by using hw breakpoints. A breakpoint is
> set before sigreturn, so we will need to trace only it.
>
> v2: In the first version a breakpoint is set after sigreturn. In this
> case we have a problem with signals. If a process has pending signals,
> it will start to precess them after exiting from sigreturn(), but before
> returning to userspace. So the breakpoint will not be triggered.
>
> And at the end Here are a few numbers how we catch sigreturn.
> Before this patch criu executes 36 syscalls and gets 12 signals.
> With this patch criu executes 18 syscalls and gets 5 signals.
>
> Signed-off-by: Andrey Vagin <avagin at openvz.org>
OK, applied, thanks a lot :)
Christopher, if it's possible, could you help us placing breakpoints
into ARM parasite and restorer? :) This is quite good optimization,
I think it makes sense to have one on ARM too.
Thanks,
Pavel
More information about the CRIU
mailing list