Index of /~pdinda/palgem5

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory   -  
[   ]arch-snapshot.tgz 2014-10-17 14:53 1.4G 
[   ]gem5-snapshot.tgz 2014-10-17 14:57 1.9G 
[TXT]readme.txt 2014-10-22 10:27 4.0K 

This directory contains a snapshot of code for doing migration of
virtual machines between Palacios and GEM5.  This is an involved
process and our tools are a proof of concept, hence the release of
this as a snapshot.  Minor changes to the Palacios codebase have also
been commit and pushed to the devel branch.  No changes to GEM5 are
needed, but we include a copy of the GEM5 tree we use for testing just
in case.  The migration tools rely on the relevant bugs/features in
this version of GEM5 and may not work with any other.

By "migration of virtual machines between Palacios and GEM5", we mean
the following:

   1. Creation of a pair of VMs based on identical images, one
      for GEM5, one for Palacios.
   2. Transformation of a Palacios checkpoint into a GEM5 checkpoint.
      This allows you to checkpoint a VM in Palacios and resume it
      in GEM5.
   3. Transformation of a GEM5 checkpoint into a Palacios checkpoint.
      This allows you to checkpoint a VM in GEM5 and resume it in

The set of devices that can be transformed is limited (generally to a
subset of devices used in GEM5 (PIC, PIT, APIC, IOAPIC, SERIAL, ...).


   - This contains the migration tools and numerous working examples
     ("pairs" of Palacios VMs and GEM5 VMs)
   - Migration tools are compact, the working examples are not
   - This also includes a snapshot of Palacios configured and built
     as appropriate

   - Snapshot of the version of GEM5 and its build that we are using

  - This file


Maciej Swiech, Northwestern University
Madhav Suresh, Northwestern University
John Rula, Northwestern University
George Tziantzioulis, Northwestern University


# Documentation for checkpointing translation process Palacios <--> Gem5

    Palacios devel commit 76fea3b8a640b9b1a509b6ad20a2868ced5e5548
    Gem5 changeset 8592:30a97c4198df

    Gem5/Palacios kernel pair
        - must have a serial stream console

0. Make Gem5 skeleton (create m5.p pickle file)
    cd /path/to/gem5-base
    source ENV
    cd gem5
    ./build/X86_FS/m5.opt -d ./m5out/ configs/example/ --kernel="pair1"
    nc localhost 3456
        m5 checkpoint
    cp m5out/cpt.CURRENT/m5.cpt /path/to/xlation/dir
    mv m5out/cpt.CURRENT m5out/cpt.1
    cd /path/to/xlation/dir
    ./ m5.cpt m5.p

1. Palacios Boot (create binary memory image and text checkpoint)
    export PATH=/path/to/palacios/linux_usr:$PATH
    v3_create -b /path/to/your-kernel-pair-config.xml go
    v3_launch /dev/v3-vmX
    v3_stream /dev/v3-vmX streamY
    (optional) make some fs changes
    v3_pause /dev/v3-vmX
    v3_guest_mem_access /dev/v3-vmX read 0 MEM_SIZE_BYTES > /path/to/mem_save
    v3_save /dev/v3-vmX KEYED_STREAM textfile:/path/to/cpt 1

2. Pal -> Gem Translation (create p25out/m5.cpt file)
    cp -r /path/to/cpt /path/to/xlation/tpair
    ./ -v > /path/to/p2m.output

3. Restore in Gem5 (create m5.cpt checkpoint and gemmem memory image)
    cp p25out/m5.cpt /path/to/gem5/m5out/cpt.1/
    cp /path/to/mem_save /path/to/gem5/m5out/cpt.1/system.physmem.physmem
    cd /path/to/m5-base
    source ENV
    cd gem5
    ./build/X86_FS/m5.opt -d ./m5out/ configs/example/ --kernel="pair1" -r 1
    nc localhost 3456
        m5 checkpoint
    mv m5out/cpt.NEW /path/to/gem5_save
    zcat /path/to/gem5_save/system.physmem.physmem > /path/to/xlation/dir/gemmem

4. Gem -> Pal Translation (make tmp/* palacios checkpoint files)
    cp /path/to/gem5_save/m5.cpt /path/to/xlation/dir
    mkdir tmp
    ./ -v > /path/to/m2p.output

5. Restore in Palacios
    v3_create -b /path/to/your-kernel-pair-config.xml go
    v3_guest_mem_access /dev/v3-vmZ write 0 MEM_SIZE_BYTES < /path/to/xlation/dir/gemmem
    cp /path/to/xlation/dir/tmp/* /path/to/xlation/dir/tpair
    v3_load /dev/v3-vmZ KEYED_STREAM textfile:/path/to/xlation/dir/tpair 1
    v3_launch /dev/v3-vmZ
    v3_stream /dev/v3-vmZ streamY