[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