Add runsc build benchmark.

PiperOrigin-RevId: 324071377
This commit is contained in:
Zach Koopmans
2020-07-30 13:37:21 -07:00
committed by gVisor bot
parent ab4bb38455
commit 78f1a18ab3
2 changed files with 41 additions and 8 deletions
+24
View File
@@ -0,0 +1,24 @@
FROM ubuntu:18.04
RUN set -x \
&& apt-get update \
&& apt-get install -y \
wget \
git \
pkg-config \
zip \
g++ \
zlib1g-dev \
unzip \
python-minimal \
python3 \
python3-pip \
&& rm -rf /var/lib/apt/lists/*
RUN wget https://github.com/bazelbuild/bazel/releases/download/3.4.1/bazel-3.4.1-installer-linux-x86_64.sh
RUN chmod +x bazel-3.4.1-installer-linux-x86_64.sh
RUN ./bazel-3.4.1-installer-linux-x86_64.sh
# Download release-20200601.0
RUN mkdir gvisor && cd gvisor \
&& git init && git remote add origin https://github.com/google/gvisor.git \
&& git fetch --depth 1 origin a9b47390c821942d60784e308f681f213645049c && git checkout FETCH_HEAD
+17 -8
View File
@@ -24,7 +24,18 @@ import (
)
// Note: CleanCache versions of this test require running with root permissions.
func BenchmarkABSL(b *testing.B) {
func BenchmarkBuildABSL(b *testing.B) {
runBuildBenchmark(b, "benchmarks/absl", "/abseil-cpp", "absl/base/...")
}
// Note: CleanCache versions of this test require running with root permissions.
// Note: This test takes on the order of 10m per permutation for runsc on kvm.
func BenchmarkBuildRunsc(b *testing.B) {
runBuildBenchmark(b, "benchmarks/runsc", "/gvisor", "runsc:runsc")
}
func runBuildBenchmark(b *testing.B, image, workdir, target string) {
b.Helper()
// Get a machine from the Harness on which to run.
machine, err := h.GetMachine()
if err != nil {
@@ -51,20 +62,18 @@ func BenchmarkABSL(b *testing.B) {
container := machine.GetContainer(ctx, b)
defer container.CleanUp(ctx)
workdir := "/abseil-cpp"
// Start a container and sleep by an order of b.N.
if err := container.Spawn(ctx, dockerutil.RunOpts{
Image: "benchmarks/absl",
Image: image,
}, "sleep", fmt.Sprintf("%d", 1000000)); err != nil {
b.Fatalf("run failed with: %v", err)
}
// If we are running on a tmpfs, copy to /tmp which is a tmpfs.
if bm.tmpfs {
if _, err := container.Exec(ctx, dockerutil.ExecOpts{},
"cp", "-r", "/abseil-cpp", "/tmp/."); err != nil {
b.Fatal("failed to copy directory: %v", err)
if out, err := container.Exec(ctx, dockerutil.ExecOpts{},
"cp", "-r", workdir, "/tmp/."); err != nil {
b.Fatal("failed to copy directory: %v %s", err, out)
}
workdir = "/tmp" + workdir
}
@@ -86,7 +95,7 @@ func BenchmarkABSL(b *testing.B) {
got, err := container.Exec(ctx, dockerutil.ExecOpts{
WorkDir: workdir,
}, "bazel", "build", "-c", "opt", "absl/base/...")
}, "bazel", "build", "-c", "opt", target)
if err != nil {
b.Fatalf("build failed with: %v", err)
}