APRの実験スクリプト集.
APR実験における下記の雑多な作業をスクリプトとしてまとめた.
- D4Jのクローンとビルド
- KGPの〃
- Astorの〃
- KGP/Astorの実行
複数のDockerコンテナ上での実行を想定しているが,単一ホスト上でももちろん使える.
run.sh
: docker実験コンテナの立ち上げスクリプト.util.sh
: メインスクリプト.先の雑多な作業(D4JのクローンとかAPRツールの実行)等まとめてる.parse.py
: APRツールの出力結果のパーサ.util.sh
から利用してるので意識しなくても良い.
永続データ用のディレクトリ作成(10Gくらい使うので注意)
$ sudo mkdir -p /opt/apr-data
クローン
$ git clone [email protected]:kusumotolab/kGenProg-exp.git kgp-exp
$ cd kgp-exp
docker起動
$ bash run.sh apr
docker上でビルド
root@360a1f066293:~# source util.sh;
root@360a1f066293:~# build kgp
root@360a1f066293:~# build astor
root@360a1f066293:~# build d4j
root@360a1f066293:~# checkout math $(seq 1 106)
各種APR実行
root@360a1f066293:~# run math 85 kgp 1
root@360a1f066293:~# run math 73 genp 1
ベース作成
sudo yum update -y
sudo yum install -y git
sudo yum install -y tmux
sudo amazon-linux-extras install docker -y
sudo service docker start
NVMeストレージのマウント
sudo mkfs -t ext4 /dev/nvme1n1
sudo mkdir /opt/apr-data
sudo mount /dev/nvme1n1 /opt/apr-data
dockerのパーミッション
sudo usermod -a -G docker ec2-user
exit
再ログイン
ssh ec2-user@...
astorのためのタイムゾーン設定
sudo timedatectl set-timezone Asia/Tokyo
dockerの設定
mkdir -p ~/.docker
echo '{"detachKeys": "ctrl-q"}' > ~/.docker/config.json
マシン固有の実験設定
echo 'export APR=astor' >> ~/.bashrc
echo 'export SEED=1' >> ~/.bashrc
echo 'PS1="\e[37m\e[41m[aws $APR-$SEED]\e[0m\]$ "' >> ~/.bashrc
source ~/.bashrc
tmuxの設定
echo 'set -g prefix C-u' > ~/.tmux.conf
aprの実験準備
git clone https://github.com/kusumotolab/kGenProg-exp apr-exp
cd apr-exp
tmux
./run.sh
docker上で準備
# source util.sh ;
# build kgp; build astor; build d4j; checkout math $(seq 1 104);
実験実行
# source util.sh ;
# for i in {1..104}; do run math $i; done
awsインスタンスのip
genp=(
13.230.213.7
13.230.160.85
18.179.207.88
13.231.119.253
13.231.97.56
13.231.157.145
54.238.109.252
54.178.17.35
13.114.16.117
13.115.43.0
)
kgp=(
52.194.236.208
54.238.203.4
13.112.136.252
18.182.39.76
13.115.253.105
54.249.63.120
52.68.33.92
52.194.236.124
54.64.0.228
54.199.204.111
)
実験結果の取り出し
$ /d/apr-exp/out/
$ for m in ${genp[@]}; do scp -C -i ~/.ssh/apr.pem ec2-user@$m:/opt/apr-data/out/* out-genp/; done
$ for m in ${kgp[@]}; do scp -C -i ~/.ssh/apr.pem ec2-user@$m:/opt/apr-data/out/* out-kgp; done
javaプロセスkill
ps -aux | grep java | grep apr-data | awk '{print $2}' | xargs sudo kill
全VMのapr実行をkill
for m in ${genp[@]}; do ssh -i ~/.ssh/apr.pem ec2-user@$m 'ps aux | grep java | grep apr-data | awk '\''{print $2}'\'' | xargs sudo kill ' ; done
docker kill all
docker kill $(docker ps -q)
前の実験結果クリア
sudo rm -rf /opt/apr-data/out/
(find /opt/apr-data/out/ -type f | sort | while read line do printf "$(basename $line) " cat $line | grep '^real' done ) | tee /tmp/x