[CRIU] Reg unix stream checkpointing and other issues.

Pavel Emelyanov xemul at parallels.com
Thu Sep 11 04:19:15 PDT 2014


On 09/10/2014 10:16 PM, Sanidhya Kashyap wrote:
> Hi,
> 
> I am using criu to checkpoint/restore sysbench tool with mysql. When I
> run sysbench on the localhost where the mysql server resides, then I
> am unable to checkpoint the sysbench process. It always says: 'Can't
> dump half of stream unix socket connection'. You can find the criu log
> (with v4 level) here: http://ur1.ca/i5xtf

This means, that sysbench process is connected to mysqld via unix socket
and CRIU cannot just break this connection.

> Then, I went on to try checkpointing of two processes in one shot i.e.

CRIU cannot do it. Only one pid at a time.

> specifying both of the processes ids in one i.e. for sysbench and for
> mysql. I thought, why don't I checkpoint both of them and see how it
> goes. There, I found that as it was already failing for sysbench, so
> it didn't proceed ahead.
> 
> I also tried to simply dump the msyql service that keeps on running.
> There also, I was unsuccessful, as I got two errors:
> 1) Uncollected sockets, will probably fail later.
> 2) can't handle non-regular mappings...

This is AIO mapping. We're working on supporting this, patches are
expected to appear by v1.4 :)

> 
> Then the checkpointing failed there as well. This link -
> http://ur1.ca/i5xty provides the log of criu checkpoint with v4 level
> for the mysql service.
> 
> Finally, I was successfully able to dump the sysbench over the network. #sigh

:)

> But still, I have some questions which I would like to know:
> 1) How can I dump the another half of unix socket connection?

Without the process, that owns it, it's impossible. At least, without
patching the kernel.

> 2) Even if I am able to dump the another half, will the application
> work when I restore it or the another half needs to do something?

With unix connection, if you dump both ends, you should restore
both ends too.

> 3) In what conditions, do I see uncollected sockets, and non-regular mappings?

"Uncollected sockets" is pretty much harmless message. If I'm not
mistaken, it was left from the times when we didn't support IPV6
and netlink sockets.

Non regular mappings are mappings of files, that CRIU cannot dump.
It can be a device mapping or AIO.

> 4) What is the work around for the above i.e. uncollected sockets and
> non-regular mappings?

For non-regular mappings there's no workarounds. CRIU should know
what it dumps and if meets some unknown memory region it fails and
we try to add support for it.

> 5) Is there a possibility of checkpointing multiple processes which
> are sharing the resources on a single host, like unix stream and
> types? If yes, then what is the way to achieve it?

When you specify a PID of a process, CRIU dumps the whole subtree
of tasks sitting under it. If you want to dump two subtrees, you
need to patch CRIU. It can do it in theory, but there's no such
API yet.

> Since, I am new to criu, so that's why I have so many questions.
> Please, bear with it.

No problem. Feel free to ask any questions you have.

Thanks,
Pavel



More information about the CRIU mailing list