diff options
author | Zach Koopmans <zkoopmans@google.com> | 2020-12-09 11:55:06 -0800 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2020-12-09 15:56:08 -0800 |
commit | 992769c7748d886e7ee1580f0c6cfdfa7ce0eb75 (patch) | |
tree | d8cc08dbd93588c7badde91ca1d9dea4ea9edfd7 | |
parent | 45619ded38b9c9f24b2b7ade812fd903e09ac1b9 (diff) |
Add tensorflow, ffmpeg, and redis jobs.
PiperOrigin-RevId: 346603153
-rw-r--r-- | BUILD | 6 | ||||
-rw-r--r-- | test/benchmarks/database/BUILD | 3 | ||||
-rw-r--r-- | test/benchmarks/database/database.go | 15 | ||||
-rw-r--r-- | test/benchmarks/database/redis_test.go | 33 | ||||
-rw-r--r-- | test/benchmarks/media/BUILD | 5 | ||||
-rw-r--r-- | test/benchmarks/media/ffmpeg_test.go | 12 | ||||
-rw-r--r-- | test/benchmarks/media/media.go | 15 | ||||
-rw-r--r-- | test/benchmarks/ml/BUILD | 5 | ||||
-rw-r--r-- | test/benchmarks/ml/ml.go | 15 | ||||
-rw-r--r-- | test/benchmarks/ml/tensorflow_test.go | 12 | ||||
-rw-r--r-- | test/benchmarks/tools/redis.go | 6 |
11 files changed, 50 insertions, 77 deletions
@@ -67,11 +67,11 @@ build_test( "//test/benchmarks/base:startup_test", "//test/benchmarks/base:size_test", "//test/benchmarks/base:sysbench_test", - "//test/benchmarks/database:database_test", + "//test/benchmarks/database:redis_test", "//test/benchmarks/fs:bazel_test", "//test/benchmarks/fs:fio_test", - "//test/benchmarks/media:media_test", - "//test/benchmarks/ml:ml_test", + "//test/benchmarks/media:ffmpeg_test", + "//test/benchmarks/ml:tensorflow_test", "//test/benchmarks/network:network_test", ], ) diff --git a/test/benchmarks/database/BUILD b/test/benchmarks/database/BUILD index bfa7f71b6..0b1743603 100644 --- a/test/benchmarks/database/BUILD +++ b/test/benchmarks/database/BUILD @@ -7,11 +7,10 @@ go_library( name = "database", testonly = 1, srcs = ["database.go"], - deps = ["//test/benchmarks/harness"], ) benchmark_test( - name = "database_test", + name = "redis_test", size = "enormous", srcs = ["redis_test.go"], library = ":database", diff --git a/test/benchmarks/database/database.go b/test/benchmarks/database/database.go index 9eeb59f9a..c15ca661c 100644 --- a/test/benchmarks/database/database.go +++ b/test/benchmarks/database/database.go @@ -14,18 +14,3 @@ // Package database holds benchmarks around database applications. package database - -import ( - "os" - "testing" - - "gvisor.dev/gvisor/test/benchmarks/harness" -) - -var h harness.Harness - -// TestMain is the main method for package database. -func TestMain(m *testing.M) { - h.Init() - os.Exit(m.Run()) -} diff --git a/test/benchmarks/database/redis_test.go b/test/benchmarks/database/redis_test.go index 02e67154e..f8075a04b 100644 --- a/test/benchmarks/database/redis_test.go +++ b/test/benchmarks/database/redis_test.go @@ -16,6 +16,7 @@ package database import ( "context" + "os" "testing" "time" @@ -24,6 +25,8 @@ import ( "gvisor.dev/gvisor/test/benchmarks/tools" ) +var h harness.Harness + // All possible operations from redis. Note: "ping" will // run both PING_INLINE and PING_BUILD. var operations []string = []string{ @@ -111,21 +114,23 @@ func BenchmarkRedis(b *testing.B) { // Reset profiles and timer to begin the measurement. server.RestartProfiles() b.ResetTimer() - for i := 0; i < b.N; i++ { - client := clientMachine.GetNativeContainer(ctx, b) - defer client.CleanUp(ctx) - out, err := client.Run(ctx, dockerutil.RunOpts{ - Image: "benchmarks/redis", - }, redis.MakeCmd(ip, serverPort)...) - if err != nil { - b.Fatalf("redis-benchmark failed with: %v", err) - } - - // Stop time while we parse results. - b.StopTimer() - redis.Report(b, out) - b.StartTimer() + client := clientMachine.GetNativeContainer(ctx, b) + defer client.CleanUp(ctx) + out, err := client.Run(ctx, dockerutil.RunOpts{ + Image: "benchmarks/redis", + }, redis.MakeCmd(ip, serverPort, b.N /*requests*/)...) + if err != nil { + b.Fatalf("redis-benchmark failed with: %v", err) } + + // Stop time while we parse results. + b.StopTimer() + redis.Report(b, out) }) } } + +func TestMain(m *testing.M) { + h.Init() + os.Exit(m.Run()) +} diff --git a/test/benchmarks/media/BUILD b/test/benchmarks/media/BUILD index 46e8dc8b5..380783f0b 100644 --- a/test/benchmarks/media/BUILD +++ b/test/benchmarks/media/BUILD @@ -7,12 +7,11 @@ go_library( name = "media", testonly = 1, srcs = ["media.go"], - deps = ["//test/benchmarks/harness"], ) benchmark_test( - name = "media_test", - size = "large", + name = "ffmpeg_test", + size = "enormous", srcs = ["ffmpeg_test.go"], library = ":media", visibility = ["//:sandbox"], diff --git a/test/benchmarks/media/ffmpeg_test.go b/test/benchmarks/media/ffmpeg_test.go index 7822dfad7..a462ec2a6 100644 --- a/test/benchmarks/media/ffmpeg_test.go +++ b/test/benchmarks/media/ffmpeg_test.go @@ -15,6 +15,7 @@ package media import ( "context" + "os" "strings" "testing" @@ -22,6 +23,8 @@ import ( "gvisor.dev/gvisor/test/benchmarks/harness" ) +var h harness.Harness + // BenchmarkFfmpeg runs ffmpeg in a container and records runtime. // BenchmarkFfmpeg should run as root to drop caches. func BenchmarkFfmpeg(b *testing.B) { @@ -32,13 +35,13 @@ func BenchmarkFfmpeg(b *testing.B) { defer machine.CleanUp() ctx := context.Background() - container := machine.GetContainer(ctx, b) - defer container.CleanUp(ctx) cmd := strings.Split("ffmpeg -i video.mp4 -c:v libx264 -preset veryslow output.mp4", " ") b.ResetTimer() for i := 0; i < b.N; i++ { b.StopTimer() + container := machine.GetContainer(ctx, b) + defer container.CleanUp(ctx) if err := harness.DropCaches(machine); err != nil { b.Skipf("failed to drop caches: %v. You probably need root.", err) } @@ -51,3 +54,8 @@ func BenchmarkFfmpeg(b *testing.B) { } } } + +func TestMain(m *testing.M) { + h.Init() + os.Exit(m.Run()) +} diff --git a/test/benchmarks/media/media.go b/test/benchmarks/media/media.go index c7b35b758..ed7b24651 100644 --- a/test/benchmarks/media/media.go +++ b/test/benchmarks/media/media.go @@ -14,18 +14,3 @@ // Package media holds benchmarks around media processing applications. package media - -import ( - "os" - "testing" - - "gvisor.dev/gvisor/test/benchmarks/harness" -) - -var h harness.Harness - -// TestMain is the main method for package media. -func TestMain(m *testing.M) { - h.Init() - os.Exit(m.Run()) -} diff --git a/test/benchmarks/ml/BUILD b/test/benchmarks/ml/BUILD index 02ff6966f..285ec35d9 100644 --- a/test/benchmarks/ml/BUILD +++ b/test/benchmarks/ml/BUILD @@ -7,12 +7,11 @@ go_library( name = "ml", testonly = 1, srcs = ["ml.go"], - deps = ["//test/benchmarks/harness"], ) benchmark_test( - name = "ml_test", - size = "large", + name = "tensorflow_test", + size = "enormous", srcs = ["tensorflow_test.go"], library = ":ml", visibility = ["//:sandbox"], diff --git a/test/benchmarks/ml/ml.go b/test/benchmarks/ml/ml.go index 13282d7bb..d5fc5b7da 100644 --- a/test/benchmarks/ml/ml.go +++ b/test/benchmarks/ml/ml.go @@ -14,18 +14,3 @@ // Package ml holds benchmarks around machine learning performance. package ml - -import ( - "os" - "testing" - - "gvisor.dev/gvisor/test/benchmarks/harness" -) - -var h harness.Harness - -// TestMain is the main method for package ml. -func TestMain(m *testing.M) { - h.Init() - os.Exit(m.Run()) -} diff --git a/test/benchmarks/ml/tensorflow_test.go b/test/benchmarks/ml/tensorflow_test.go index f7746897d..a55329d82 100644 --- a/test/benchmarks/ml/tensorflow_test.go +++ b/test/benchmarks/ml/tensorflow_test.go @@ -15,12 +15,15 @@ package ml import ( "context" + "os" "testing" "gvisor.dev/gvisor/pkg/test/dockerutil" "gvisor.dev/gvisor/test/benchmarks/harness" ) +var h harness.Harness + // BenchmarkTensorflow runs workloads from a TensorFlow tutorial. // See: https://github.com/aymericdamien/TensorFlow-Examples func BenchmarkTensorflow(b *testing.B) { @@ -44,12 +47,12 @@ func BenchmarkTensorflow(b *testing.B) { for name, workload := range workloads { b.Run(name, func(b *testing.B) { ctx := context.Background() - container := machine.GetContainer(ctx, b) - defer container.CleanUp(ctx) b.ResetTimer() for i := 0; i < b.N; i++ { b.StopTimer() + container := machine.GetContainer(ctx, b) + defer container.CleanUp(ctx) if err := harness.DropCaches(machine); err != nil { b.Skipf("failed to drop caches: %v. You probably need root.", err) } @@ -67,3 +70,8 @@ func BenchmarkTensorflow(b *testing.B) { } } + +func TestMain(m *testing.M) { + h.Init() + os.Exit(m.Run()) +} diff --git a/test/benchmarks/tools/redis.go b/test/benchmarks/tools/redis.go index e35886437..a42e3456e 100644 --- a/test/benchmarks/tools/redis.go +++ b/test/benchmarks/tools/redis.go @@ -29,17 +29,17 @@ type Redis struct { } // MakeCmd returns a redis-benchmark client command. -func (r *Redis) MakeCmd(ip net.IP, port int) []string { +func (r *Redis) MakeCmd(ip net.IP, port, requests int) []string { // There is no -t PING_BULK for redis-benchmark, so adjust the command in that case. // Note that "ping" will run both PING_INLINE and PING_BULK. if r.Operation == "PING_BULK" { return strings.Split( - fmt.Sprintf("redis-benchmark --csv -t ping -h %s -p %d", ip, port), " ") + fmt.Sprintf("redis-benchmark --csv -t ping -h %s -p %d -n %d", ip, port, requests), " ") } // runs redis-benchmark -t operation for 100K requests against server. return strings.Split( - fmt.Sprintf("redis-benchmark --csv -t %s -h %s -p %d", r.Operation, ip, port), " ") + fmt.Sprintf("redis-benchmark --csv -t %s -h %s -p %d -n %d", r.Operation, ip, port, requests), " ") } // Report parses output from redis-benchmark client and reports metrics. |