[CRIU] criu + threaded program + TCP_REPAIR

Sowmini Varadhan sowmini.varadhan at oracle.com
Sat Oct 18 14:47:22 PDT 2014


On (10/14/14 14:29), Pavel Emelyanov wrote:
>
> Ah, live migration :) You may be interested in the
> https://github.com/xemul/p.haul

A few questions.. So I tried starting from 
  https://github.com/xemul/p.haul/wiki/Live-migrating-OVZ-mainstream-container
Some hiccups I ran into..
1. in my ubuntu vm, env was in /usr/bin/env by default, I had to fix up
   p.haul-service manually to detect this. (minor errata in p.haul-service?)
2. the HOWTO page does not mention that you need the python-protobuf.socketrpc
   package (and s/protobuf-python/python-protobuf)- might be good to call this
   out, and I did the apt install of these, but...
3. Various errors like
    " File "/home/sowmini/src/p.haul/p_haul_service.py", line 6, in <module>
       import rpc_pb2 as cr_rpc"
   In each case I had to specify the src package
    from protobuf.socketrpc import rpc_pb2 as cr_rpc
   Is there something wrong in my env that I need this?
4. where (what apt package/src) to get stats_pb2.py? It wasnt there in
   python-protobuf[.socketrpc]

And if I used lxc tools to create the container, but what is the $id
that is expected by p.haul?

In any case, I also tried to just spawn my process from something like
ns_child_exec.c [http://lwn.net/Articles/533492/].

So if I do this:

  # ns_child_exec -v -p bash
  pidns# iperf -s &

Now, do I criu-dump/restore using the pid of ns_child_exec? Or the
pid(bash)?  Or the pid(iperf)?  (from default pidns? from the child
pidns?)

If I try to dump using pid(ns_child_exec) I get 

root at vm# criu dump -D . -t <pid-of-ns_child_exec> --shell-job --tcp-established 
Error (namespaces.c:196): Can't dump nested pid namespace for 15022
Error (namespaces.c:392): Can't make pidns id

so still trying to find the path-of-least-resistance here..

--Sowmini


More information about the CRIU mailing list