Changes

Jump to navigation Jump to search
14,657 bytes added ,  19:26, 24 November 2014
Show what we have for now
Line 1: Line 1:  
This page describes the CRiu Image Tool.
 
This page describes the CRiu Image Tool.
 +
{{Note|As for now(24 Nov 2014) it is not added to the official repo, but you could checkout it [https://github.com/efiop/criu/tree/crit-test here].}}
 +
 +
== Usage ==
 +
<pre>Usage: crit [-h] [-i IN] [-o OUT] [-f {raw,nice}] [-t {json}] {convert}
 +
 +
CRiu Image Tool
 +
 +
positional arguments:
 +
  {convert}            use "covert" to convert CRIU image to/from human-
 +
                        readable format
 +
 +
optional arguments:
 +
  -h, --help            show this help message and exit
 +
  -i IN, --in IN        input file (stdin by default)
 +
  -o OUT, --out OUT    output file (stdout by default
 +
  -f {raw,nice}, --format {raw,nice}
 +
                        well-formated output (by default: raw for files and
 +
                        nice for stdout)
 +
  -t {json}, --type {json}
 +
                        Type of output file (by default img is converted to
 +
                        txt and vice versa)
 +
</pre>
    
== Functionality ==
 
== Functionality ==
    
=== Convert images to human-readable and back ===
 
=== Convert images to human-readable and back ===
 +
This is the replacement for (rather nasty) criu show code. Also this is the way to edit the images before restoring from them.
 +
 +
'''Status: Ready'''<br>
 +
It uses [https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.text_format-module text_format] as a human-readable format for protobuf messages.
 +
Output file is structured like:
 +
With "--format raw":
 +
<pre>
 +
#<magic value>
 +
#0
 +
<pb entry in text_format>
 +
....
 +
#N
 +
<pb entry in text_format>
 +
</pre>
 +
With "--format nice":
 +
<pre>
 +
#<magic name>
 +
#0 <pb entry name>
 +
<pb entry in text_format with tabs>
 +
....
 +
#N <pb entry name>
 +
<pb entry in text_format with tabs>
 +
</pre>
   −
This is the replacement for (rather nasty) criu show code. Also this is the way to edit the images before restoring from them.
+
So, here is how core file will look like with --format nice:
 +
<pre>
 +
#CORE
 +
#0 core_entry
 +
    mtype: X86_64
 +
    thread_info {
 +
      clear_tid_addr: 0
 +
      gpregs {
 +
        r15: 0
 +
        r14: 19884608
 +
        r13: 1
 +
        r12: 0
 +
        bp: 19879232
 +
        bx: 0
 +
        r11: 582
 +
        r10: 0
 +
        r9: 0
 +
        r8: 19879232
 +
        ax: 61
 +
        cx: 18446744073709551615
 +
        dx: 0
 +
        si: 140733241187376
 +
        di: 18446744073709551615
 +
        orig_ax: 61
 +
        ip: 213251769082
 +
        cs: 51
 +
        flags: 582
 +
        sp: 140733241187336
 +
        ss: 43
 +
        fs_base: 140140334651200
 +
        gs_base: 0
 +
        ds: 0
 +
        es: 0
 +
        fs: 0
 +
        gs: 0
 +
      }
 +
      fpregs {
 +
        cwd: 895
 +
        swd: 0
 +
        twd: 0
 +
        fop: 0
 +
        rip: 0
 +
        rdp: 0
 +
        mxcsr: 8064
 +
        mxcsr_mask: 65535
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        st_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 4294967295
 +
        xmm_space: 4294967295
 +
        xmm_space: 16777215
 +
        xmm_space: 16843009
 +
        xmm_space: 16843009
 +
        xmm_space: 16843009
 +
        xmm_space: 4478800
 +
        xmm_space: 661857632
 +
        xmm_space: 1869488186
 +
        xmm_space: 543236212
 +
        xmm_space: 1970037624
 +
        xmm_space: 1680696676
 +
        xmm_space: 775778921
 +
        xmm_space: 544500071
 +
        xmm_space: 2019896621
 +
        xmm_space: 1685417059
 +
        xmm_space: 1768172901
 +
        xmm_space: 1747860850
 +
        xmm_space: 809328999
 +
        xmm_space: 909327153
 +
        xmm_space: 1932405306
 +
        xmm_space: 809334896
 +
        xmm_space: 909327153
 +
        xmm_space: 2016291386
 +
        xmm_space: 1030123635
 +
        xmm_space: 859517232
 +
        xmm_space: 14902
 +
        xmm_space: 0
 +
        xmm_space: 65
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 4294967295
 +
        xmm_space: 4294967295
 +
        xmm_space: 4294967295
 +
        xmm_space: 4294967295
 +
        xmm_space: 4294967040
 +
        xmm_space: 4294967295
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
        xmm_space: 0
 +
      }
 +
    }
 +
    tc {
 +
      task_state: 1
 +
      exit_code: 0
 +
      personality: 0
 +
      flags: 1077960704
 +
      blk_sigset: 65536
 +
      comm: "loop.sh"
 +
      timers {
 +
        real {
 +
          isec: 0
 +
          iusec: 0
 +
          vsec: 0
 +
          vusec: 0
 +
        }
 +
        virt {
 +
          isec: 0
 +
          iusec: 0
 +
          vsec: 0
 +
          vusec: 0
 +
        }
 +
        prof {
 +
          isec: 0
 +
          iusec: 0
 +
          vsec: 0
 +
          vusec: 0
 +
        }
 +
      }
 +
      rlimits {
 +
        rlimits {
 +
          cur: 18446744073709551615
 +
          max: 18446744073709551615
 +
        }
 +
        rlimits {
 +
          cur: 18446744073709551615
 +
          max: 18446744073709551615
 +
        }
 +
        rlimits {
 +
          cur: 18446744073709551615
 +
          max: 18446744073709551615
 +
        }
 +
        rlimits {
 +
          cur: 8388608
 +
          max: 18446744073709551615
 +
        }
 +
        rlimits {
 +
          cur: 0
 +
          max: 18446744073709551615
 +
        }
 +
        rlimits {
 +
          cur: 18446744073709551615
 +
          max: 18446744073709551615
 +
        }
 +
        rlimits {
 +
          cur: 3898
 +
          max: 3898
 +
        }
 +
        rlimits {
 +
          cur: 1024
 +
          max: 4096
 +
        }
 +
        rlimits {
 +
          cur: 65536
 +
          max: 65536
 +
        }
 +
        rlimits {
 +
          cur: 18446744073709551615
 +
          max: 18446744073709551615
 +
        }
 +
        rlimits {
 +
          cur: 18446744073709551615
 +
          max: 18446744073709551615
 +
        }
 +
        rlimits {
 +
          cur: 3898
 +
          max: 3898
 +
        }
 +
        rlimits {
 +
          cur: 819200
 +
          max: 819200
 +
        }
 +
        rlimits {
 +
          cur: 0
 +
          max: 0
 +
        }
 +
        rlimits {
 +
          cur: 0
 +
          max: 0
 +
        }
 +
        rlimits {
 +
          cur: 18446744073709551615
 +
          max: 18446744073709551615
 +
        }
 +
      }
 +
      cg_set: 1
 +
      signals_s {
 +
      }
 +
    }
 +
    thread_core {
 +
      futex_rla: 0
 +
      futex_rla_len: 24
 +
      sched_nice: 0
 +
      sched_policy: 0
 +
      sas {
 +
        ss_sp: 0
 +
        ss_size: 0
 +
        ss_flags: 2
 +
      }
 +
      signals_p {
 +
      }
 +
    }
 +
</pre>
    
=== Convert to json (and back) ===
 
=== Convert to json (and back) ===
Line 11: Line 309:  
Same as before, but the human-readable format is JSON
 
Same as before, but the human-readable format is JSON
    +
'''Status: Ready'''<br>
 +
For now, it does it in a dumb way, by just wrapping text_format in brackets and adding ";" where needed.
 +
Example:
 +
<pre>
 +
{
 +
    "magic": "CORE",
 +
    "0": {
 +
        "mtype": "X86_64",
 +
        "thread_core": {
 +
            "futex_rla_len": "24",
 +
            "sched_policy": "0",
 +
            "sched_nice": "0",
 +
            "futex_rla": "0",
 +
            "signals_p": {},
 +
            "sas": {
 +
                "ss_size": "0",
 +
                "ss_sp": "0",
 +
                "ss_flags": "2"
 +
            }
 +
        },
 +
        "pbtype": "core_entry",
 +
        "thread_info": {
 +
            "fpregs": {
 +
                "st_space": [
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0"
 +
                ],
 +
                "fop": "0",
 +
                "rdp": "0",
 +
                "twd": "0",
 +
                "mxcsr": "8064",
 +
                "swd": "0",
 +
                "rip": "0",
 +
                "xmm_space": [
 +
                    "0",
 +
                    "0",
 +
                    "4294967295",
 +
                    "4294967295",
 +
                    "16777215",
 +
                    "16843009",
 +
                    "16843009",
 +
                    "16843009",
 +
                    "4478800",
 +
                    "661857632",
 +
                    "1869488186",
 +
                    "543236212",
 +
                    "1970037624",
 +
                    "1680696676",
 +
                    "775778921",
 +
                    "544500071",
 +
                    "2019896621",
 +
                    "1685417059",
 +
                    "1768172901",
 +
                    "1747860850",
 +
                    "809328999",
 +
                    "909327153",
 +
                    "1932405306",
 +
                    "809334896",
 +
                    "909327153",
 +
                    "2016291386",
 +
                    "1030123635",
 +
                    "859517232",
 +
                    "14902",
 +
                    "0",
 +
                    "65",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "4294967295",
 +
                    "4294967295",
 +
                    "4294967295",
 +
                    "4294967295",
 +
                    "4294967040",
 +
                    "4294967295",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0",
 +
                    "0"
 +
                ],
 +
                "cwd": "895",
 +
                "mxcsr_mask": "65535"
 +
            },
 +
            "clear_tid_addr": "0",
 +
            "gpregs": {
 +
                "gs": "0",
 +
                "ip": "213251769082",
 +
                "cx": "18446744073709551615",
 +
                "cs": "51",
 +
                "ax": "61",
 +
                "orig_ax": "61",
 +
                "di": "18446744073709551615",
 +
                "es": "0",
 +
                "gs_base": "0",
 +
                "r14": "19884608",
 +
                "r15": "0",
 +
                "r12": "0",
 +
                "r13": "1",
 +
                "r10": "0",
 +
                "r11": "582",
 +
                "fs_base": "140140334651200",
 +
                "bp": "19879232",
 +
                "dx": "0",
 +
                "bx": "0",
 +
                "ds": "0",
 +
                "ss": "43",
 +
                "sp": "140733241187336",
 +
                "r8": "19879232",
 +
                "r9": "0",
 +
                "fs": "0",
 +
                "si": "140733241187376",
 +
                "flags": "582"
 +
            }
 +
        },
 +
        "tc": {
 +
            "timers": {
 +
                "real": {
 +
                    "isec": "0",
 +
                    "vusec": "0",
 +
                    "iusec": "0",
 +
                    "vsec": "0"
 +
                },
 +
                "virt": {
 +
                    "isec": "0",
 +
                    "vusec": "0",
 +
                    "iusec": "0",
 +
                    "vsec": "0"
 +
                },
 +
                "prof": {
 +
                    "isec": "0",
 +
                    "vusec": "0",
 +
                    "iusec": "0",
 +
                    "vsec": "0"
 +
                }
 +
            },
 +
            "cg_set": "1",
 +
            "signals_s": {},
 +
            "blk_sigset": "65536",
 +
            "exit_code": "0",
 +
            "rlimits": {
 +
                "rlimits": [
 +
                    {
 +
                        "max": "18446744073709551615",
 +
                        "cur": "18446744073709551615"
 +
                    },
 +
                    {
 +
                        "max": "18446744073709551615",
 +
                        "cur": "18446744073709551615"
 +
                    },
 +
                    {
 +
                        "max": "18446744073709551615",
 +
                        "cur": "18446744073709551615"
 +
                    },
 +
                    {
 +
                        "max": "18446744073709551615",
 +
                        "cur": "8388608"
 +
                    },
 +
                    {
 +
                        "max": "18446744073709551615",
 +
                        "cur": "0"
 +
                    },
 +
                    {
 +
                        "max": "18446744073709551615",
 +
                        "cur": "18446744073709551615"
 +
                    },
 +
                    {
 +
                        "max": "3898",
 +
                        "cur": "3898"
 +
                    },
 +
                    {
 +
                        "max": "4096",
 +
                        "cur": "1024"
 +
                    },
 +
                    {
 +
                        "max": "65536",
 +
                        "cur": "65536"
 +
                    },
 +
                    {
 +
                        "max": "18446744073709551615",
 +
                        "cur": "18446744073709551615"
 +
                    },
 +
                    {
 +
                        "max": "18446744073709551615",
 +
                        "cur": "18446744073709551615"
 +
                    },
 +
                    {
 +
                        "max": "3898",
 +
                        "cur": "3898"
 +
                    },
 +
                    {
 +
                        "max": "819200",
 +
                        "cur": "819200"
 +
                    },
 +
                    {
 +
                        "max": "0",
 +
                        "cur": "0"
 +
                    },
 +
                    {
 +
                        "max": "0",
 +
                        "cur": "0"
 +
                    },
 +
                    {
 +
                        "max": "18446744073709551615",
 +
                        "cur": "18446744073709551615"
 +
                    }
 +
                ]
 +
            },
 +
            "comm": "\"loop.sh\"",
 +
            "flags": "1077960704",
 +
            "task_state": "1",
 +
            "personality": "0"
 +
        }
 +
    }
 +
}
 +
</pre>
 
=== Generate core files out of task images ===
 
=== Generate core files out of task images ===
    
All the needed information is in core-$pid.img and pagemap-$pid.img
 
All the needed information is in core-$pid.img and pagemap-$pid.img
 +
 +
'''Status: Not ready'''
    
=== On-the-fly conversion ===
 
=== On-the-fly conversion ===
    
There's an idea to make CRIU spawn CRIT and read images "through" it, to allow for at-the-restore-time modifications
 
There's an idea to make CRIU spawn CRIT and read images "through" it, to allow for at-the-restore-time modifications
 +
 +
'''Status: Not ready'''
    
=== Convert between different image versions ===
 
=== Convert between different image versions ===
    
Right now we store the images version in inventory.img and collect info about [[what's bad with V1 images]]. If some day we have v2, CRIT will convert from v1. And for backward compatibility we'll use on-the-fly conversion when restoring from old images.
 
Right now we store the images version in inventory.img and collect info about [[what's bad with V1 images]]. If some day we have v2, CRIT will convert from v1. And for backward compatibility we'll use on-the-fly conversion when restoring from old images.
 +
 +
'''Status: Not ready'''
    
=== Show images statistics ===
 
=== Show images statistics ===
    
E.g. -- total number of processes, files, memory, sockets, etc.
 
E.g. -- total number of processes, files, memory, sockets, etc.
 +
 +
Status: Not ready
    
=== Check/validate images ===
 
=== Check/validate images ===
Line 32: Line 602:  
* all images are present
 
* all images are present
 
* the inter-images IDs are in consistent state
 
* the inter-images IDs are in consistent state
 +
 +
'''Status: Not ready'''
85

edits

Navigation menu