소스 검색

basic dockerization

avadapal 1 년 전
부모
커밋
2055738ad2
7개의 변경된 파일63개의 추가작업 그리고 0개의 파일을 삭제
  1. 8 0
      Docker/Dockerfile
  2. 4 0
      Docker/build-docker
  3. 14 0
      Docker/run-experiment
  4. 15 0
      Docker/set-networking
  5. 11 0
      Docker/start-docker
  6. 6 0
      Docker/stop-docker
  7. 5 0
      Docker/unset-networking

+ 8 - 0
Docker/Dockerfile

@@ -0,0 +1,8 @@
+FROM ubuntu:20.04
+ARG DEBIAN_FRONTEND=noninteractive 
+#the above line is avoid interaction
+RUN apt update && apt install -y wget git build-essential net-tools iproute2 iperf iputils-ping libgmp-dev libbsd-dev libssl-dev libboost-all-dev iproute2 iperf iputils-ping wget cargo cmake numactl time
+WORKDIR /root
+COPY . ramen
+WORKDIR /root/ramen
+RUN cargo build --release --example=bench_doram

+ 4 - 0
Docker/build-docker

@@ -0,0 +1,4 @@
+#!/bin/bash
+
+cd ..
+docker build $* -t ramen -f Docker/Dockerfile .

+ 14 - 0
Docker/run-experiment

@@ -0,0 +1,14 @@
+#!/bin/bash
+
+# Get the IP addresses
+p0addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' ramen_p0)
+p1addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' ramen_p1)
+p2addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' ramen_p2)
+echo $p0addr;
+echo $p1addr;
+echo $p2addr;
+docker exec -w /root/ramen ramen_p2 ./target/release/examples/bench_doram -i 2 -s 10 -l $p2addr -p 6000 -c 0:$p0addr:8000 --connect-timeout-seconds 10 &
+sleep 2 
+docker exec -w /root/ramen ramen_p1 ./target/release/examples/bench_doram -i 1 -s 10 -l $p1addr -p 7000 -c 2:$p2addr:6000 --connect-timeout-seconds 10 &
+sleep 1
+docker exec -w /root/ramen ramen_p0 ./target/release/examples/bench_doram -i 0 -s 10 -l $p0addr -p 8000 -c 1:$p1addr:7000 --connect-timeout-seconds 10 &

+ 15 - 0
Docker/set-networking

@@ -0,0 +1,15 @@
+#!/bin/bash
+
+latency=30ms
+bw=100mbit
+
+if [ "$1" != "" ]; then
+    latency="$1"
+fi
+if [ "$2" != "" ]; then
+    bw="$2"
+fi
+./unset-networking
+docker exec --privileged ramen_p0 tc qdisc add dev eth0 root netem delay $latency rate $bw
+docker exec --privileged ramen_p1 tc qdisc add dev eth0 root netem delay $latency rate $bw
+docker exec --privileged ramen_p2 tc qdisc add dev eth0 root netem delay $latency rate $bw

+ 11 - 0
Docker/start-docker

@@ -0,0 +1,11 @@
+#!/bin/bash
+
+
+# The SYS_NICE capability allows you to use numactl to pin processes to
+# NUMA nodes and/or individual cores
+
+docker run -d --cap-add SYS_NICE --rm --name ramen_p0 -h ramen_p0 -t ramen
+docker run -d --cap-add SYS_NICE --rm --name ramen_p1 -h ramen_p1 -t ramen
+docker run -d --cap-add SYS_NICE --rm --name ramen_p2 -h ramen_p2 -t ramen
+
+echo "All dockers launched"

+ 6 - 0
Docker/stop-docker

@@ -0,0 +1,6 @@
+#!/bin/bash
+
+docker stop ramen_p0 &
+docker stop ramen_p1 &
+docker stop ramen_p2 &
+wait

+ 5 - 0
Docker/unset-networking

@@ -0,0 +1,5 @@
+#!/bin/bash
+
+for ctnr in duoram_p0 duoram_p1 duoram_p2; do
+    docker exec --privileged $ctnr bash -c "if tc qdisc list dev eth0 | grep -q netem; then tc qdisc del dev eth0 root; fi"
+done