Browse Source

Dockerization, with run-experiments script

Ian Goldberg 8 months ago
parent
commit
2dcc1d246a
5 changed files with 72 additions and 0 deletions
  1. 19 0
      docker/Dockerfile
  2. 9 0
      docker/build-docker
  3. 32 0
      docker/run-experiments
  4. 8 0
      docker/start-docker
  5. 4 0
      docker/stop-docker

+ 19 - 0
docker/Dockerfile

@@ -0,0 +1,19 @@
+# https://edp.fortanix.com/docs/installation/guide/
+#FROM teems
+FROM ubuntu:22.04
+RUN apt update && apt install -y curl git pkg-config libssl-dev \
+    protobuf-compiler python3 build-essential numactl
+WORKDIR /root
+RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup-init.sh
+RUN bash rustup-init.sh -y
+ENV PATH=/root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+RUN rustup default nightly
+RUN rustup target add x86_64-fortanix-unknown-sgx --toolchain nightly
+RUN cargo install fortanix-sgx-tools sgxs-tools
+COPY . sparta-experiments
+WORKDIR /root/sparta-experiments
+RUN git submodule init
+RUN git submodule update
+WORKDIR /root/sparta-experiments/sparta
+RUN make
+WORKDIR /root/sparta-experiments

+ 9 - 0
docker/build-docker

@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# cd into the directory containing this script (from the bash faq 028)
+if [[ $BASH_SOURCE = */* ]]; then
+  cd -- "${BASH_SOURCE%/*}/" || exit
+fi
+
+cd ..
+docker build $* -t ${SPARTA_DOCKER_PREFIX}sparta -f docker/Dockerfile .

+ 32 - 0
docker/run-experiments

@@ -0,0 +1,32 @@
+#!/bin/bash
+
+# cd into the directory containing this script (from the bash faq 028)
+if [[ $BASH_SOURCE = */* ]]; then
+  cd -- "${BASH_SOURCE%/*}/" || exit
+fi
+
+./start-docker
+
+if [ "$1" == "" ]; then
+    niters=1
+else
+    niters="$1"
+fi
+
+if [ "$2" == "" ]; then
+    ncores=1
+else
+    ncores="$2"
+fi
+
+for iter in $(seq 1 $niters); do
+    for expon in 15 16 17 18 19 20; do
+        sends=$((1<<expon))
+        docker exec -it ${SPARTA_DOCKER_PREFIX}sparta \
+            numactl -C 0-$((ncores-1)) ftxsgx-runner \
+            sparta/target/x86_64-fortanix-unknown-sgx/release/sparta.sgxs \
+            -- $sends $sends $ncores $sends 5 -r 10 -w 0
+    done
+done
+
+./stop-docker

+ 8 - 0
docker/start-docker

@@ -0,0 +1,8 @@
+#!/bin/bash
+
+docker run -d --rm \
+    --device /dev/sgx_enclave --device /dev/sgx_provision \
+    -v /var/run/aesmd:/var/run/aesmd  \
+    --name ${SPARTA_DOCKER_PREFIX}sparta \
+    -h ${SPARTA_DOCKER_PREFIX}sparta -t \
+    ${SPARTA_DOCKER_PREFIX}sparta bash

+ 4 - 0
docker/stop-docker

@@ -0,0 +1,4 @@
+#!/bin/bash
+
+docker stop -t 0 ${SPARTA_DOCKER_PREFIX}sparta
+