- caller
The migration script, it has 4 args and run migration of benchmark 3 times
- test benchmark binary name
- target machine, user@ip
- the sender script, depends on criu branch, there are two sender for both archtectures
- alternative args, some benchmark need args, for example _popcorn-mm 4096_
- x86-64/
The x86 sender and receiver scripts for migration
- arm_x86_receiver: recevier for x86 to handle migration from arm to x86
- x86_arm_sender: sender for x86 to handle migration from x86 to arm **CRIU branch: heterogeneous**
- x86_arm_sender_antonio: sender for x86 to handle migration from x86 to arm **CRIU branch: crit-in-criu**
- Makefile: install script to /user/local/bin/
- aarch64/
The aarch sender and receiver scripts for migration
- x86_arm_receiver: recevier for arm to handle migration from x86 to arm
- arm_x86_sender: sender for arm to handle migration from arm to x86 **CRIU branch: heterogeneous**
- arm_x86_sender_antonio: sender for arm to handle migration from arm to x86 **CRIU branch: crit-in-criu**
- Makefile: install script to /user/local/bin/
- TEST/
The popcorn-npb-is_c binaries for test.
- Recommended system Linux Linux 4.15.0-45-generic
- Recommended os Ubuntu 16.04
- CRIU branch heterogenous-simplified. (recommended)
$ git clone https://github.com/systems-nuts/criu.git
$ git checkout hetterogeneous-simplified
branch crit-in-criu
$ git checkout crit-in-criu (alternative)
- Inorder to use script, target machines should have ssh public key to avoid password.
sudo su
ssh-keygen
paste ~/.ssh/id\_dsa.pub to your target machine: ~/.ssh/authorized\_keys- root permission
- Popcorn-compiler
$ git clone https://github.com/systems-nuts/popcorn-compiler.git
$ git checkout criuCreate same work directory on both machines, path: /popcorn/brdw.
mkdir /popcorn/brdw
cp benchmark/\* /popcorn/brdw
cp caller /popcorn/brdw- On aarch64
cd aarch64 ; make- On x86-64
cd x86-64 ; makecd /popcorn/brdw/
./caller $sender_script $benchmark $targetmachine $argsthere are two $sender_script, depends on criu branch
-
$benchmark is test binary,
-
$targetmachine is tagetmachine user@ip or alias,
-
$args is for some binary for example: ./popcorn-mm 4096
mkdir -p /popcorn/brdw/
cp ./TEST/popcorn-npb-is_c\* /popcorn/brdw/
cp caller /popcorn/brdw/
cd x86-64
make
ssh to aarch64 machine
mkdir -p /popcorn/brdw/
cp ./TEST/popcorn-npb-is_c\* /popcorn/brdw/
cp caller /popcorn/brdw/
cd x86-64
make
cd popcorn/brdw/
./caller x86_arm_sender popcorn-linpack sunsky ./caller x86_arm_sender popcorn-mm sunsky 4096 mkdir -p /popcorn/brdw/
cp ./TEST/popcorn-npb-is_c\* /popcorn/brdw/
cp caller /popcorn/brdw/
cd x86-64
make
ssh to aarch64 machine
mkdir -p /popcorn/brdw/
cp ./TEST/popcorn-npb-is_c\* /popcorn/brdw/
cp caller /popcorn/brdw/
cd x86-64
make
cd popcorn/brdw/
./caller x86_arm_sender_antonio popcorn-linpack sunsky ./caller x86_arm_sender_antonio popcorn-mm sunsky 4096 - Depends on machine, when to greb the process id, the script could run in some case
modify the line 26 on sender script and line 13 on receiver script.
pid=$(ps -C $process | tr -s ' ' | cut -d ' ' -f 2 | tail -n +2)
IF PID IS EMPTY, pleae change it between **"cut -d ' ' -f 2"** and **"cut -d ' ' -f 1"**
- (NEW UPDATE)
Latest popcorn-compiler will not have flash quit problem,
while [ -z "$pid" ] loop may delete( line 25 on sender and line 12 on receiver)
the purpose of this loop is to make sure benchmark run successfully