diff --git a/.buildkite/pipeline.yaml b/.buildkite/pipeline.yaml index b778dd258..af12a47f0 100644 --- a/.buildkite/pipeline.yaml +++ b/.buildkite/pipeline.yaml @@ -634,7 +634,7 @@ steps: command: make -i benchmark-platforms BENCHMARKS_FILTER="Continuous" BENCHMARKS_SUITE=httpd BENCHMARKS_TARGETS=test/benchmarks/network:httpd_test - <<: *benchmarks label: ":piedpiper: iperf benchmarks" - command: make -i benchmark-platforms BENCHMARKS_SUITE=iperf BENCHMARKS_TARGETS=test/benchmarks/network:iperf_test BENCHMARKS_FILTER=BenchmarkIperf$ + command: make -i benchmark-platforms BENCHMARKS_SUITE=iperf BENCHMARKS_TARGETS=test/benchmarks/network:iperf_test BENCHMARKS_FILTER=BenchmarkIperfOneConnection - <<: *benchmarks label: ":nginx: nginx benchmarks" command: make -i benchmark-platforms BENCHMARKS_FILTER="Continuous" BENCHMARKS_SUITE=nginx BENCHMARKS_TARGETS=test/benchmarks/network:nginx_test diff --git a/test/benchmarks/network/iperf_test.go b/test/benchmarks/network/iperf_test.go index 0db1178df..3e4906873 100644 --- a/test/benchmarks/network/iperf_test.go +++ b/test/benchmarks/network/iperf_test.go @@ -26,7 +26,7 @@ import ( "gvisor.dev/gvisor/test/benchmarks/tools" ) -func BenchmarkIperf(b *testing.B) { +func BenchmarkIperfOneConnection(b *testing.B) { clientMachine, err := harness.GetMachine() if err != nil { b.Fatalf("failed to get machine: %v", err) @@ -106,7 +106,7 @@ func BenchmarkIperf(b *testing.B) { } } -func BenchmarkIperfParameterized(b *testing.B) { +func BenchmarkIperfManyConnections(b *testing.B) { clientMachine, err := harness.GetMachine() if err != nil { b.Fatalf("failed to get machine: %v", err) @@ -131,85 +131,37 @@ func BenchmarkIperfParameterized(b *testing.B) { // server. { name: "Upload", - length: 4, - parallel: 1, + parallel: 4, clientFunc: clientMachine.GetContainer, serverFunc: serverMachine.GetNativeContainer, }, { - name: "Upload", - length: 64, - parallel: 1, - clientFunc: clientMachine.GetContainer, - serverFunc: serverMachine.GetNativeContainer, + name: "Download", + parallel: 4, + clientFunc: clientMachine.GetNativeContainer, + serverFunc: serverMachine.GetContainer, }, { name: "Upload", - length: 1024, - parallel: 1, - clientFunc: clientMachine.GetContainer, - serverFunc: serverMachine.GetNativeContainer, - }, - { - name: "Upload", - length: 4, - parallel: 16, - clientFunc: clientMachine.GetContainer, - serverFunc: serverMachine.GetNativeContainer, - }, - { - name: "Upload", - length: 64, - parallel: 16, - clientFunc: clientMachine.GetContainer, - serverFunc: serverMachine.GetNativeContainer, - }, - { - name: "Upload", - length: 1024, parallel: 16, clientFunc: clientMachine.GetContainer, serverFunc: serverMachine.GetNativeContainer, }, { name: "Download", - length: 4, - parallel: 1, - clientFunc: clientMachine.GetNativeContainer, - serverFunc: serverMachine.GetContainer, - }, - { - name: "Download", - length: 64, - parallel: 1, - clientFunc: clientMachine.GetNativeContainer, - serverFunc: serverMachine.GetContainer, - }, - { - name: "Download", - length: 1024, - parallel: 1, - clientFunc: clientMachine.GetNativeContainer, - serverFunc: serverMachine.GetContainer, - }, - { - name: "Download", - length: 4, parallel: 16, clientFunc: clientMachine.GetNativeContainer, serverFunc: serverMachine.GetContainer, }, { - name: "Download", - length: 64, - parallel: 16, - clientFunc: clientMachine.GetNativeContainer, - serverFunc: serverMachine.GetContainer, + name: "Upload", + parallel: 64, + clientFunc: clientMachine.GetContainer, + serverFunc: serverMachine.GetNativeContainer, }, { name: "Download", - length: 1024, - parallel: 16, + parallel: 64, clientFunc: clientMachine.GetNativeContainer, serverFunc: serverMachine.GetContainer, }, @@ -217,9 +169,6 @@ func BenchmarkIperfParameterized(b *testing.B) { name, err := tools.ParametersToName(tools.Parameter{ Name: "operation", Value: bm.name, - }, tools.Parameter{ - Name: "length", - Value: fmt.Sprintf("%dK", bm.length), }, tools.Parameter{ Name: "parallel", Value: fmt.Sprintf("%d", bm.parallel), @@ -249,8 +198,7 @@ func BenchmarkIperfParameterized(b *testing.B) { } iperf := tools.Iperf{ - Num: b.N, // KB for the client to send. - Length: bm.length, // KB for length. + Num: b.N, // KB for the client to send. Parallel: bm.parallel, } diff --git a/test/benchmarks/tools/iperf.go b/test/benchmarks/tools/iperf.go index 7f873f6b3..567ae4a43 100644 --- a/test/benchmarks/tools/iperf.go +++ b/test/benchmarks/tools/iperf.go @@ -24,21 +24,20 @@ import ( // Iperf is for the client side of `iperf`. type Iperf struct { Num int // Number of bytes to send in KB. - Length int // Length in KB. Parallel int // Number of parallel threads. } // MakeCmd returns a iperf client command. func (i *Iperf) MakeCmd(host string, port int) []string { cmd := []string{"iperf"} - cmd = append(cmd, "--format", "K") // Output in KBytes. - cmd = append(cmd, "--realtime") // Measured in realtime. - cmd = append(cmd, "--num", fmt.Sprintf("%dK", i.Num)) // Number of bytes to send in KB. - len := 128 - if i.Length > 0 { - len = i.Length + cmd = append(cmd, "--format", "K") // Output in KBytes. + cmd = append(cmd, "--realtime") // Measured in realtime. + cmd = append(cmd, "--len", "128K") // Length of data buffer per request. + n := i.Num + if i.Parallel > 0 { + n = i.Num / i.Parallel } - cmd = append(cmd, "--len", fmt.Sprintf("%dK", len)) // Length in KB. + cmd = append(cmd, "--num", fmt.Sprintf("%dK", n)) // Number of requests to send. cmd = append(cmd, "--client", host) cmd = append(cmd, "--port", fmt.Sprintf("%d", port)) if i.Parallel > 0 { @@ -55,7 +54,7 @@ func (i *Iperf) Report(b *testing.B, output string) { if err != nil { b.Fatalf("failed to parse bandwitdth from %s: %v", output, err) } - b.SetBytes(int64(i.Length) * 1024) // Measure Bytes/sec for b.N, although below is iperf output. + b.SetBytes(128 * 1024) // Measure Bytes/sec for b.N, although below is iperf output. ReportCustomMetric(b, bW*1024, "bandwidth" /*metric name*/, "bytes_per_second" /*unit*/) }