Merge "veyron2/ipc: Change ReflectInvoker to return an error."
diff --git a/lib/testutil/stats.go b/lib/testutil/benchmark/stats.go
similarity index 62%
rename from lib/testutil/stats.go
rename to lib/testutil/benchmark/stats.go
index d3d3397..62790a6 100644
--- a/lib/testutil/stats.go
+++ b/lib/testutil/benchmark/stats.go
@@ -1,4 +1,4 @@
-package testutil
+package benchmark
import (
"bytes"
@@ -10,9 +10,9 @@
"v.io/core/veyron/lib/stats/histogram"
)
-// BenchStats is a simple helper for gathering additional statistics
-// like histogram during benchmarks. This is not thread safe.
-type BenchStats struct {
+// Stats is a simple helper for gathering additional statistics like histogram
+// during benchmarks. This is not thread safe.
+type Stats struct {
numBuckets int
unit time.Duration
min, max int64
@@ -24,35 +24,36 @@
type durationSlice []time.Duration
-// NewBenchStats creates a new BenchStats instance. If numBuckets is not
-// positive, the default value (16) will be used.
-func NewBenchStats(numBuckets int) *BenchStats {
+// NewStats creates a new Stats instance. If numBuckets is not positive,
+// the default value (16) will be used.
+func NewStats(numBuckets int) *Stats {
if numBuckets <= 0 {
numBuckets = 16
}
- return &BenchStats{
+ return &Stats{
// Use one more bucket for the last unbounded bucket.
numBuckets: numBuckets + 1,
durations: make(durationSlice, 0, 100000),
}
}
-// Add adds an elapsed time per operation to the BenchStats.
-func (stats *BenchStats) Add(d time.Duration) {
+// Add adds an elapsed time per operation to the stats.
+func (stats *Stats) Add(d time.Duration) {
stats.durations = append(stats.durations, d)
stats.dirty = true
}
// Clear resets the stats, removing all values.
-func (stats *BenchStats) Clear() {
+func (stats *Stats) Clear() {
stats.durations = stats.durations[:0]
- stats.dirty = true
+ stats.histogram = nil
+ stats.dirty = false
}
// maybeUpdate updates internal stat data if there was any newly added
// stats since this was updated.
-func (stats *BenchStats) maybeUpdate() {
- if !stats.dirty || len(stats.durations) == 0 {
+func (stats *Stats) maybeUpdate() {
+ if !stats.dirty {
return
}
@@ -79,9 +80,12 @@
// Adjust the min/max according to the new unit.
stats.min /= int64(stats.unit)
stats.max /= int64(stats.unit)
-
+ numBuckets := stats.numBuckets
+ if n := int(stats.max - stats.min + 1); n < numBuckets {
+ numBuckets = n
+ }
stats.histogram = histogram.New(histogram.Options{
- NumBuckets: stats.numBuckets,
+ NumBuckets: numBuckets,
// max(i.e., Nth lower bound) = min + (1 + growthFactor)^(numBuckets-2).
GrowthFactor: math.Pow(float64(stats.max-stats.min), 1/float64(stats.numBuckets-2)) - 1,
SmallestBucketSize: 1.0,
@@ -94,16 +98,20 @@
stats.dirty = false
}
-// Print writes textual output of the BenchStats.
-func (stats *BenchStats) Print(w io.Writer) {
+// Print writes textual output of the Stats.
+func (stats *Stats) Print(w io.Writer) {
stats.maybeUpdate()
- fmt.Fprintf(w, "Histogram (unit: %s)\n", fmt.Sprintf("%v", stats.unit)[1:])
- stats.histogram.Value().Print(w)
+ if stats.histogram == nil {
+ fmt.Fprint(w, "Histogram (empty)\n")
+ } else {
+ fmt.Fprintf(w, "Histogram (unit: %s)\n", fmt.Sprintf("%v", stats.unit)[1:])
+ stats.histogram.Value().Print(w)
+ }
}
-// String returns the textual output of the BenchStats as string.
-func (stats *BenchStats) String() string {
+// String returns the textual output of the Stats as string.
+func (stats *Stats) String() string {
var b bytes.Buffer
stats.Print(&b)
return b.String()
diff --git a/lib/testutil/benchmark/stats_test.go b/lib/testutil/benchmark/stats_test.go
new file mode 100644
index 0000000..7072963
--- /dev/null
+++ b/lib/testutil/benchmark/stats_test.go
@@ -0,0 +1,29 @@
+package benchmark_test
+
+import (
+ "strings"
+ "testing"
+ "time"
+
+ "v.io/core/veyron/lib/testutil/benchmark"
+)
+
+func TestStatsBasic(t *testing.T) {
+ stats := benchmark.NewStats(16)
+ if !strings.Contains(stats.String(), "Histogram (empty)") {
+ t.Errorf("unexpect stats output:\n%s\n", stats.String())
+ }
+
+ for i := time.Duration(1); i <= 10; i++ {
+ stats.Add(i * time.Millisecond)
+ }
+
+ if !strings.Contains(stats.String(), "Count: 10 ") {
+ t.Errorf("unexpect stats output:\n%s\n", stats.String())
+ }
+
+ stats.Clear()
+ if !strings.Contains(stats.String(), "Histogram (empty)") {
+ t.Errorf("unexpect stats output:\n%s\n", stats.String())
+ }
+}
diff --git a/lib/testutil/benchmark/util.go b/lib/testutil/benchmark/util.go
new file mode 100644
index 0000000..ef76c2a
--- /dev/null
+++ b/lib/testutil/benchmark/util.go
@@ -0,0 +1,191 @@
+package benchmark
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+ "os"
+ "runtime"
+ "sort"
+ "strings"
+ "sync"
+ "testing"
+)
+
+var (
+ curB *testing.B
+ curBenchName string
+ curStats map[string]*Stats
+
+ orgStdout *os.File
+ nextOutPos int
+
+ injectCond *sync.Cond
+ injectDone chan struct{}
+)
+
+// AddStats adds a new unnamed Stats instance to the current benchmark. You need
+// to run benchmarks by calling RunTestMain() to inject the stats to the
+// benchmark results. If numBuckets is not positive, the default value (16) will
+// be used. Please note that this calls b.ResetTimer() since it may be blocked
+// until the previous benchmark stats is printed out. So AddStats() should
+// typically be called at the very beginning of each benchmark function.
+func AddStats(b *testing.B, numBuckets int) *Stats {
+ return AddStatsWithName(b, "", numBuckets)
+}
+
+// AddStatsWithName adds a new named Stats instance to the current benchmark.
+// With this, you can add multiple stats in a single benchmark. You need
+// to run benchmarks by calling RunTestMain() to inject the stats to the
+// benchmark results. If numBuckets is not positive, the default value (16) will
+// be used. Please note that this calls b.ResetTimer() since it may be blocked
+// until the previous benchmark stats is printed out. So AddStatsWithName()
+// should typically be called at the very beginning of each benchmark function.
+func AddStatsWithName(b *testing.B, name string, numBuckets int) *Stats {
+ var benchName string
+ for i := 1; ; i++ {
+ pc, _, _, ok := runtime.Caller(i)
+ if !ok {
+ panic("benchmark function not found")
+ }
+ p := strings.Split(runtime.FuncForPC(pc).Name(), ".")
+ benchName = p[len(p)-1]
+ if strings.HasPrefix(benchName, "Benchmark") {
+ break
+ }
+ }
+ procs := runtime.GOMAXPROCS(-1)
+ if procs != 1 {
+ benchName = fmt.Sprintf("%s-%d", benchName, procs)
+ }
+
+ stats := NewStats(numBuckets)
+
+ if injectCond != nil {
+ // We need to wait until the previous benchmark stats is printed out.
+ injectCond.L.Lock()
+ for curB != nil && curBenchName != benchName {
+ injectCond.Wait()
+ }
+
+ curB = b
+ curBenchName = benchName
+ curStats[name] = stats
+
+ injectCond.L.Unlock()
+ }
+
+ b.ResetTimer()
+ return stats
+}
+
+// RunTestMain runs the tests with enabling injection of benchmark stats. It
+// returns an exit code to pass to os.Exit.
+func RunTestMain(m *testing.M) int {
+ startStatsInjector()
+ defer stopStatsInjector()
+ return m.Run()
+}
+
+// startStatsInjector starts stats injection to benchmark results.
+func startStatsInjector() {
+ orgStdout = os.Stdout
+ r, w, _ := os.Pipe()
+ os.Stdout = w
+ nextOutPos = 0
+
+ resetCurBenchStats()
+
+ injectCond = sync.NewCond(&sync.Mutex{})
+ injectDone = make(chan struct{})
+ go func() {
+ defer close(injectDone)
+
+ scanner := bufio.NewScanner(r)
+ scanner.Split(splitLines)
+ for scanner.Scan() {
+ injectStatsIfFinished(scanner.Text())
+ }
+ if err := scanner.Err(); err != nil {
+ panic(err)
+ }
+ }()
+}
+
+// stopStatsInjector stops stats injection and restores os.Stdout.
+func stopStatsInjector() {
+ os.Stdout.Close()
+ <-injectDone
+ injectCond = nil
+ os.Stdout = orgStdout
+}
+
+// splitLines is a split function for a bufio.Scanner that returns each line
+// of text, teeing texts to the original stdout even before each line ends.
+func splitLines(data []byte, eof bool) (advance int, token []byte, err error) {
+ if eof && len(data) == 0 {
+ return 0, nil, nil
+ }
+
+ if i := bytes.IndexByte(data, '\n'); i >= 0 {
+ orgStdout.Write(data[nextOutPos : i+1])
+ nextOutPos = 0
+ return i + 1, data[0:i], nil
+ }
+
+ orgStdout.Write(data[nextOutPos:])
+ nextOutPos = len(data)
+
+ if eof {
+ // This is a final, non-terminated line. Return it.
+ return len(data), data, nil
+ }
+
+ return 0, nil, nil
+}
+
+// injectStatsIfFinished prints out the stats if the current benchmark finishes.
+func injectStatsIfFinished(line string) {
+ injectCond.L.Lock()
+ defer injectCond.L.Unlock()
+
+ // We assume that the benchmark results start with the benchmark name.
+ if curB == nil || !strings.HasPrefix(line, curBenchName) {
+ return
+ }
+
+ if !curB.Failed() {
+ // Output all stats in alphabetical order.
+ names := make([]string, 0, len(curStats))
+ for name := range curStats {
+ names = append(names, name)
+ }
+ sort.Strings(names)
+ for _, name := range names {
+ stats := curStats[name]
+ // The output of stats starts with a header like "Histogram (unit: ms)"
+ // followed by statistical properties and the buckets. Add the stats name
+ // if it is a named stats and indent them as Go testing outputs.
+ lines := strings.Split(stats.String(), "\n")
+ if n := len(lines); n > 0 {
+ if name != "" {
+ name = ": " + name
+ }
+ fmt.Fprintf(orgStdout, "--- %s%s\n", lines[0], name)
+ for _, line := range lines[1 : n-1] {
+ fmt.Fprintf(orgStdout, "\t%s\n", line)
+ }
+ }
+ }
+ }
+
+ resetCurBenchStats()
+ injectCond.Signal()
+}
+
+// resetCurBenchStats resets the current benchmark stats.
+func resetCurBenchStats() {
+ curB = nil
+ curBenchName = ""
+ curStats = make(map[string]*Stats)
+}
diff --git a/lib/testutil/benchmark/util_test.go b/lib/testutil/benchmark/util_test.go
new file mode 100644
index 0000000..bc10242
--- /dev/null
+++ b/lib/testutil/benchmark/util_test.go
@@ -0,0 +1,73 @@
+package benchmark
+
+import (
+ "bytes"
+ "fmt"
+ "io"
+ "os"
+ "regexp"
+ "strings"
+ "testing"
+ "time"
+)
+
+func BenchmarkTest(b *testing.B) {
+ stats := AddStats(b, 0)
+ for i := 1; i <= b.N; i++ {
+ time.Sleep(1 * time.Microsecond)
+ stats.Add(time.Duration(i) * time.Microsecond)
+ }
+}
+
+func BenchmarkTestMulti(b *testing.B) {
+ stats1 := AddStatsWithName(b, "S1", 0)
+ stats2 := AddStatsWithName(b, "S2", 0)
+ for i := 1; i <= b.N; i++ {
+ time.Sleep(1 * time.Microsecond)
+ stats1.Add(time.Duration(i) * time.Microsecond)
+ stats2.Add(time.Duration(i) * time.Millisecond)
+ }
+}
+
+func TestStatsInjection(t *testing.T) {
+ stdout := os.Stdout
+ r, w, _ := os.Pipe()
+ os.Stdout = w
+
+ outC := make(chan string)
+ go func() {
+ b := new(bytes.Buffer)
+ io.Copy(b, r)
+ r.Close()
+ outC <- b.String()
+ }()
+
+ startStatsInjector()
+
+ fmt.Printf("%s\t", "BenchmarkTest")
+ result := testing.Benchmark(BenchmarkTest)
+ fmt.Println(result.String())
+
+ fmt.Printf("%s\t", "BenchmarkTestMulti")
+ result = testing.Benchmark(BenchmarkTestMulti)
+ fmt.Println(result.String())
+
+ stopStatsInjector()
+
+ w.Close()
+ os.Stdout = stdout
+ out := <-outC
+
+ if strings.Count(out, "Histogram") != 3 {
+ t.Errorf("unexpected stats output:\n%s", out)
+ }
+ if matched, _ := regexp.MatchString("Histogram.*\\)\n", out); !matched {
+ t.Errorf("unnamed stats not found:\n%s", out)
+ }
+ if matched, _ := regexp.MatchString("Histogram.*\\): S1\n", out); !matched {
+ t.Errorf("stats S1 not found:\n%s", out)
+ }
+ if matched, _ := regexp.MatchString("Histogram.*\\): S2\n", out); !matched {
+ t.Errorf("stats S2 not found:\n%s", out)
+ }
+}
diff --git a/runtimes/google/ipc/benchmark/README.txt b/runtimes/google/ipc/benchmark/README.txt
new file mode 100644
index 0000000..f3fa1fc
--- /dev/null
+++ b/runtimes/google/ipc/benchmark/README.txt
@@ -0,0 +1,129 @@
+This directory contains code uses to measure the performance of the Vanadium IPC
+stack.
+
+================================================================================
+
+The ipc_test.go file uses GO's testing package to run benchmarks. Each
+benchmark involves one server and one client. The server has two very simple
+methods that echo the data received from the client back to the client.
+
+client ---- Echo(payload) ----> server
+client <--- return payload ---- server
+
+There are two versions of the Echo method:
+ - Echo(payload []byte) ([]byte], error)
+ - EchoStream() <[]byte,[]byte> error
+
+The first benchmarks use the non-streaming version of Echo with a varying
+payload size. The second benchmarks use the streaming version with varying
+number of chunks and payload sizes. The third one is for measuring the
+performance with multiple clients hosted in the same process.
+
+This test creates a VC before the benchmark begins. So, the VC creation
+overhead is excluded.
+
+$ v23 go test -bench=. -timeout=1h -cpu=1 -benchtime=5s \
+ v.io/core/veyron/runtimes/google/ipc/benchmark
+PASS
+Benchmark____1B 1000 8301357 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 7 Max: 17 Avg: 7.89
+ ------------------------------------------------------------
+ [ 7, 8) 505 50.5% 50.5% #####
+ [ 8, 9) 389 38.9% 89.4% ####
+ [ 9, 10) 38 3.8% 93.2%
+ [ 10, 11) 12 1.2% 94.4%
+ [ 11, 12) 4 0.4% 94.8%
+ [ 12, 14) 19 1.9% 96.7%
+ [ 14, 16) 23 2.3% 99.0%
+ [ 16, 18) 10 1.0% 100.0%
+ [ 18, 21) 0 0.0% 100.0%
+ [ 21, 24) 0 0.0% 100.0%
+ [ 24, inf) 0 0.0% 100.0%
+Benchmark___10B 1000 8587341 ns/op 0.00 MB/s
+...
+
+RESULTS.txt has the full benchmark results.
+
+================================================================================
+
+bmserver/main.go and bmclient/main.go are simple command-line tools to run the
+benchmark server and client as separate processes. Unlike the benchmarks above,
+this test includes the startup cost of name resolution, creating the VC, etc. in
+the first RPC.
+
+$ v23 go run bmserver/main.go \
+ -veyron.tcp.address=localhost:8888 -acl='{"In":{"...":"R"}}'
+
+(In a different shell)
+$ v23 go run bmclient/main.go \
+ -server=/localhost:8888 -iterations=100 -chunk_count=0 -payload_size=10
+iterations: 100 chunk_count: 0 payload_size: 10
+elapsed time: 1.369034277s
+Histogram (unit: ms)
+Count: 100 Min: 7 Max: 94 Avg: 13.17
+------------------------------------------------------------
+[ 7, 8) 1 1.0% 1.0%
+[ 8, 9) 4 4.0% 5.0%
+[ 9, 10) 17 17.0% 22.0% ##
+[ 10, 12) 24 24.0% 46.0% ##
+[ 12, 15) 24 24.0% 70.0% ##
+[ 15, 19) 28 28.0% 98.0% ###
+[ 19, 24) 1 1.0% 99.0%
+[ 24, 32) 0 0.0% 99.0%
+[ 32, 42) 0 0.0% 99.0%
+[ 42, 56) 0 0.0% 99.0%
+[ 56, 75) 0 0.0% 99.0%
+[ 75, 101) 1 1.0% 100.0%
+[101, 136) 0 0.0% 100.0%
+[136, 183) 0 0.0% 100.0%
+[183, 247) 0 0.0% 100.0%
+[247, 334) 0 0.0% 100.0%
+[334, inf) 0 0.0% 100.0%
+
+
+On a Raspberry Pi, everything is much slower. The same tests show the following
+results:
+
+$ ./benchmarks.test -test.bench=. -test.cpu=1 -test.benchtime=5s 2>/dev/null
+PASS
+Benchmark____1B 500 21316148 ns/op
+Benchmark___10B 500 23304638 ns/op
+Benchmark__100B 500 21860446 ns/op
+Benchmark___1KB 500 24000346 ns/op
+Benchmark__10KB 200 37530575 ns/op
+Benchmark_100KB 100 136243310 ns/op
+Benchmark_N_RPCs____1_chunk_____1B 500 19957506 ns/op
+Benchmark_N_RPCs____1_chunk____10B 500 22868392 ns/op
+Benchmark_N_RPCs____1_chunk___100B 500 19635412 ns/op
+Benchmark_N_RPCs____1_chunk____1KB 500 22572190 ns/op
+Benchmark_N_RPCs____1_chunk___10KB 500 37570948 ns/op
+Benchmark_N_RPCs___10_chunks___1KB 100 51670740 ns/op
+Benchmark_N_RPCs__100_chunks___1KB 50 364938740 ns/op
+Benchmark_N_RPCs_1000_chunks___1KB 2 3586374500 ns/op
+Benchmark_1_RPC_N_chunks_____1B 10000 1034042 ns/op
+Benchmark_1_RPC_N_chunks____10B 5000 1894875 ns/op
+Benchmark_1_RPC_N_chunks___100B 5000 2857289 ns/op
+Benchmark_1_RPC_N_chunks____1KB 5000 6465839 ns/op
+Benchmark_1_RPC_N_chunks___10KB 100 80019430 ns/op
+Benchmark_1_RPC_N_chunks__100KB Killed
+
+The simple 1 KB RPCs take an average of 24 ms. The streaming equivalent takes
+about 22 ms, and streaming many 1 KB chunks takes about 6.5 ms per chunk.
+
+
+$ ./bmserver --address=localhost:8888 --acl='{"...":"A"}'
+
+$ ./bmclient --server=/localhost:8888 --count=10 --payload_size=1000
+CallEcho 0 2573406000
+CallEcho 1 44669000
+CallEcho 2 54442000
+CallEcho 3 33934000
+CallEcho 4 47985000
+CallEcho 5 61324000
+CallEcho 6 51654000
+CallEcho 7 47043000
+CallEcho 8 44995000
+CallEcho 9 53166000
+
+On the pi, the first RPC takes ~2.5 sec to execute.
diff --git a/runtimes/google/ipc/benchmark/RESULTS.txt b/runtimes/google/ipc/benchmark/RESULTS.txt
new file mode 100644
index 0000000..b884698
--- /dev/null
+++ b/runtimes/google/ipc/benchmark/RESULTS.txt
@@ -0,0 +1,1532 @@
+* 'Benchmark___NNB' shows the average time to execute a simple Echo RPC with a payload
+ of NN bytes.
+* 'Benchmark___CC_chunk____NNB' shows the average time to execute a streaming RPC with
+ a payload of CC chunks of NN bytes.
+* 'Benchmark__per_chunk___NNB' shows the average time to send one chunk of NN bytes.
+* 'Benchmark___NNB_mux___CC_chunks___MMB' shows the average time to execute a simple
+ Echo RPC with a payload of NN bytes while streaming payloads of CC chunks of MM bytes
+ continuously in the same process.
+
+================================================================================
+Date: 01/06/2015
+Platform: Intel(R) Xeon(R) CPU E5-2689 0 @ 2.60GHz, 66114888KB Memory
+
+Benchmark____1B 2000 5135719 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 6 Avg: 4.50
+ ------------------------------------------------------------
+ [ 4, 5) 1077 53.9% 53.9% #####
+ [ 5, 6) 843 42.2% 96.0% ####
+ [ 6, inf) 80 4.0% 100.0%
+Benchmark____1B-2 2000 4968273 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 6 Avg: 4.32
+ ------------------------------------------------------------
+ [ 4, 5) 1364 68.2% 68.2% #######
+ [ 5, 6) 628 31.4% 99.6% ###
+ [ 6, inf) 8 0.4% 100.0%
+Benchmark___10B 2000 5207706 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 7 Avg: 4.58
+ ------------------------------------------------------------
+ [ 4, 5) 1380 69.0% 69.0% #######
+ [ 5, 6) 137 6.9% 75.9% #
+ [ 6, 7) 424 21.2% 97.1% ##
+ [ 7, inf) 59 3.0% 100.0%
+Benchmark___10B-2 2000 5012485 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 7 Avg: 4.35
+ ------------------------------------------------------------
+ [ 4, 5) 1541 77.1% 77.1% ########
+ [ 5, 6) 221 11.1% 88.1% #
+ [ 6, 7) 236 11.8% 99.9% #
+ [ 7, inf) 2 0.1% 100.0%
+Benchmark__100B 2000 5313342 ns/op 0.04 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 10 Avg: 4.62
+ ------------------------------------------------------------
+ [ 4, 5) 1505 75.2% 75.2% ########
+ [ 5, 6) 122 6.1% 81.4% #
+ [ 6, 7) 56 2.8% 84.2%
+ [ 7, 8) 259 13.0% 97.1% #
+ [ 8, 9) 57 2.9% 100.0%
+ [ 9, 10) 0 0.0% 100.0%
+ [ 10, inf) 1 0.1% 100.0%
+Benchmark__100B-2 2000 4997534 ns/op 0.04 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 7 Avg: 4.34
+ ------------------------------------------------------------
+ [ 4, 5) 1649 82.5% 82.5% ########
+ [ 5, 6) 18 0.9% 83.4%
+ [ 6, 7) 332 16.6% 100.0% ##
+ [ 7, inf) 1 0.1% 100.0%
+Benchmark___1KB 2000 5247848 ns/op 0.38 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 9 Avg: 4.62
+ ------------------------------------------------------------
+ [ 4, 5) 1626 81.3% 81.3% ########
+ [ 5, 6) 67 3.4% 84.7%
+ [ 6, 7) 12 0.6% 85.2%
+ [ 7, 8) 64 3.2% 88.5%
+ [ 8, 9) 196 9.8% 98.2% #
+ [ 9, inf) 35 1.8% 100.0%
+Benchmark___1KB-2 2000 4925061 ns/op 0.41 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 7 Avg: 4.31
+ ------------------------------------------------------------
+ [ 4, 5) 1720 86.0% 86.0% #########
+ [ 5, 6) 12 0.6% 86.6%
+ [ 6, 7) 198 9.9% 96.5% #
+ [ 7, inf) 70 3.5% 100.0%
+Benchmark__10KB 2000 5498704 ns/op 3.64 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 11 Avg: 4.79
+ ------------------------------------------------------------
+ [ 4, 5) 1577 78.9% 78.9% ########
+ [ 5, 6) 94 4.7% 83.6%
+ [ 6, 7) 47 2.4% 85.9%
+ [ 7, 8) 0 0.0% 85.9%
+ [ 8, 9) 89 4.5% 90.4%
+ [ 9, 10) 123 6.2% 96.5% #
+ [ 10, 12) 70 3.5% 100.0%
+ [ 12, inf) 0 0.0% 100.0%
+Benchmark__10KB-2 2000 5046850 ns/op 3.96 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 9 Avg: 4.42
+ ------------------------------------------------------------
+ [ 4, 5) 1689 84.5% 84.5% ########
+ [ 5, 6) 50 2.5% 87.0%
+ [ 6, 7) 0 0.0% 87.0%
+ [ 7, 8) 251 12.6% 99.5% #
+ [ 8, 9) 7 0.4% 99.9%
+ [ 9, inf) 3 0.2% 100.0%
+Benchmark_100KB 1000 7995692 ns/op 25.01 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 6 Max: 13 Avg: 7.50
+ ------------------------------------------------------------
+ [ 6, 7) 685 68.5% 68.5% #######
+ [ 7, 8) 55 5.5% 74.0% #
+ [ 8, 9) 17 1.7% 75.7%
+ [ 9, 10) 0 0.0% 75.7%
+ [ 10, 11) 0 0.0% 75.7%
+ [ 11, 12) 63 6.3% 82.0% #
+ [ 12, 14) 180 18.0% 100.0% ##
+ [ 14, inf) 0 0.0% 100.0%
+Benchmark_100KB-2 1000 6064046 ns/op 32.98 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 5 Max: 9 Avg: 5.77
+ ------------------------------------------------------------
+ [ 5, 6) 762 76.2% 76.2% ########
+ [ 6, 7) 3 0.3% 76.5%
+ [ 7, 8) 0 0.0% 76.5%
+ [ 8, 9) 173 17.3% 93.8% ##
+ [ 9, inf) 62 6.2% 100.0% #
+
+Benchmark____1_chunk_____1B 2000 5445727 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 7 Avg: 4.87
+ ------------------------------------------------------------
+ [ 4, 5) 664 33.2% 33.2% ###
+ [ 5, 6) 940 47.0% 80.2% #####
+ [ 6, 7) 395 19.8% 100.0% ##
+ [ 7, inf) 1 0.1% 100.0%
+Benchmark____1_chunk_____1B-2 2000 5178446 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 6 Avg: 4.46
+ ------------------------------------------------------------
+ [ 4, 5) 1130 56.5% 56.5% ######
+ [ 5, 6) 825 41.2% 97.8% ####
+ [ 6, inf) 45 2.2% 100.0%
+Benchmark____1_chunk____10B 2000 5545419 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 7 Avg: 4.89
+ ------------------------------------------------------------
+ [ 4, 5) 985 49.2% 49.2% #####
+ [ 5, 6) 473 23.7% 72.9% ##
+ [ 6, 7) 321 16.1% 89.0% ##
+ [ 7, inf) 221 11.1% 100.0% #
+Benchmark____1_chunk____10B-2 2000 5217440 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 6 Avg: 4.55
+ ------------------------------------------------------------
+ [ 4, 5) 1311 65.5% 65.5% #######
+ [ 5, 6) 279 14.0% 79.5% #
+ [ 6, inf) 410 20.5% 100.0% ##
+Benchmark____1_chunk___100B 2000 5607749 ns/op 0.04 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 9 Avg: 5.00
+ ------------------------------------------------------------
+ [ 4, 5) 981 49.1% 49.1% #####
+ [ 5, 6) 614 30.7% 79.8% ###
+ [ 6, 7) 10 0.5% 80.2%
+ [ 7, 8) 216 10.8% 91.1% #
+ [ 8, 9) 178 8.9% 100.0% #
+ [ 9, inf) 1 0.1% 100.0%
+Benchmark____1_chunk___100B-2 2000 5221803 ns/op 0.04 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 7 Avg: 4.48
+ ------------------------------------------------------------
+ [ 4, 5) 1421 71.0% 71.0% #######
+ [ 5, 6) 223 11.2% 82.2% #
+ [ 6, 7) 329 16.4% 98.7% ##
+ [ 7, inf) 27 1.4% 100.0%
+Benchmark____1_chunk____1KB 2000 5499778 ns/op 0.36 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 10 Avg: 4.74
+ ------------------------------------------------------------
+ [ 4, 5) 1456 72.8% 72.8% #######
+ [ 5, 6) 214 10.7% 83.5% #
+ [ 6, 7) 12 0.6% 84.1%
+ [ 7, 8) 72 3.6% 87.7%
+ [ 8, 9) 205 10.2% 98.0% #
+ [ 9, 10) 40 2.0% 100.0%
+ [ 10, inf) 1 0.1% 100.0%
+Benchmark____1_chunk____1KB-2 2000 5131389 ns/op 0.39 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 7 Avg: 4.41
+ ------------------------------------------------------------
+ [ 4, 5) 1621 81.1% 81.1% ########
+ [ 5, 6) 89 4.5% 85.5%
+ [ 6, 7) 149 7.5% 93.0% #
+ [ 7, inf) 141 7.1% 100.0% #
+Benchmark____1_chunk___10KB 2000 5747560 ns/op 3.48 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 11 Avg: 5.12
+ ------------------------------------------------------------
+ [ 4, 5) 1023 51.2% 51.2% #####
+ [ 5, 6) 598 29.9% 81.1% ###
+ [ 6, 7) 78 3.9% 85.0%
+ [ 7, 8) 1 0.1% 85.0%
+ [ 8, 9) 72 3.6% 88.6%
+ [ 9, 10) 164 8.2% 96.8% #
+ [ 10, 12) 64 3.2% 100.0%
+ [ 12, inf) 0 0.0% 100.0%
+Benchmark____1_chunk___10KB-2 2000 5240887 ns/op 3.82 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 4 Max: 10 Avg: 4.55
+ ------------------------------------------------------------
+ [ 4, 5) 1515 75.8% 75.8% ########
+ [ 5, 6) 208 10.4% 86.2% #
+ [ 6, 7) 0 0.0% 86.2%
+ [ 7, 8) 231 11.6% 97.7% #
+ [ 8, 9) 29 1.5% 99.2%
+ [ 9, 10) 16 0.8% 100.0%
+ [ 10, inf) 1 0.1% 100.0%
+Benchmark____1_chunk__100KB 1000 8096470 ns/op 24.70 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 6 Max: 13 Avg: 7.54
+ ------------------------------------------------------------
+ [ 6, 7) 687 68.7% 68.7% #######
+ [ 7, 8) 64 6.4% 75.1% #
+ [ 8, 9) 1 0.1% 75.2%
+ [ 9, 10) 0 0.0% 75.2%
+ [ 10, 11) 0 0.0% 75.2%
+ [ 11, 12) 24 2.4% 77.6%
+ [ 12, 14) 224 22.4% 100.0% ##
+ [ 14, inf) 0 0.0% 100.0%
+Benchmark____1_chunk__100KB-2 1000 6401830 ns/op 31.24 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 5 Max: 11 Avg: 5.91
+ ------------------------------------------------------------
+ [ 5, 6) 748 74.8% 74.8% #######
+ [ 6, 7) 14 1.4% 76.2%
+ [ 7, 8) 1 0.1% 76.3%
+ [ 8, 9) 106 10.6% 86.9% #
+ [ 9, 10) 81 8.1% 95.0% #
+ [ 10, 11) 46 4.6% 99.6%
+ [ 11, inf) 4 0.4% 100.0%
+Benchmark___10_chunk_____1B 1000 7091901 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 5 Max: 14 Avg: 6.78
+ ------------------------------------------------------------
+ [ 5, 6) 28 2.8% 2.8%
+ [ 6, 7) 819 81.9% 84.7% ########
+ [ 7, 8) 10 1.0% 85.7%
+ [ 8, 9) 25 2.5% 88.2%
+ [ 9, 10) 0 0.0% 88.2%
+ [ 10, 12) 30 3.0% 91.2%
+ [ 12, 14) 86 8.6% 99.8% #
+ [ 14, 16) 2 0.2% 100.0%
+ [ 16, 19) 0 0.0% 100.0%
+ [ 19, inf) 0 0.0% 100.0%
+Benchmark___10_chunk_____1B-2 1000 6297751 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 5 Max: 11 Avg: 5.68
+ ------------------------------------------------------------
+ [ 5, 6) 759 75.9% 75.9% ########
+ [ 6, 7) 118 11.8% 87.7% #
+ [ 7, 8) 0 0.0% 87.7%
+ [ 8, 9) 14 1.4% 89.1%
+ [ 9, 10) 40 4.0% 93.1%
+ [ 10, 11) 51 5.1% 98.2% #
+ [ 11, inf) 18 1.8% 100.0%
+Benchmark___10_chunk____10B 1000 7358008 ns/op 0.03 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 6 Max: 16 Avg: 6.88
+ ------------------------------------------------------------
+ [ 6, 7) 845 84.5% 84.5% ########
+ [ 7, 8) 9 0.9% 85.4%
+ [ 8, 9) 28 2.8% 88.2%
+ [ 9, 10) 0 0.0% 88.2%
+ [ 10, 11) 0 0.0% 88.2%
+ [ 11, 13) 29 2.9% 91.1%
+ [ 13, 15) 86 8.6% 99.7% #
+ [ 15, 17) 3 0.3% 100.0%
+ [ 17, 20) 0 0.0% 100.0%
+ [ 20, 23) 0 0.0% 100.0%
+ [ 23, inf) 0 0.0% 100.0%
+Benchmark___10_chunk____10B-2 1000 6307487 ns/op 0.03 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 5 Max: 12 Avg: 5.67
+ ------------------------------------------------------------
+ [ 5, 6) 779 77.9% 77.9% ########
+ [ 6, 7) 103 10.3% 88.2% #
+ [ 7, 8) 2 0.2% 88.4%
+ [ 8, 9) 9 0.9% 89.3%
+ [ 9, 10) 40 4.0% 93.3%
+ [ 10, 11) 32 3.2% 96.5%
+ [ 11, 13) 35 3.5% 100.0%
+ [ 13, inf) 0 0.0% 100.0%
+Benchmark___10_chunk___100B 1000 7583639 ns/op 0.26 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 6 Max: 16 Avg: 6.96
+ ------------------------------------------------------------
+ [ 6, 7) 833 83.3% 83.3% ########
+ [ 7, 8) 27 2.7% 86.0%
+ [ 8, 9) 22 2.2% 88.2%
+ [ 9, 10) 5 0.5% 88.7%
+ [ 10, 11) 0 0.0% 88.7%
+ [ 11, 13) 26 2.6% 91.3%
+ [ 13, 15) 68 6.8% 98.1% #
+ [ 15, 17) 19 1.9% 100.0%
+ [ 17, 20) 0 0.0% 100.0%
+ [ 20, 23) 0 0.0% 100.0%
+ [ 23, inf) 0 0.0% 100.0%
+Benchmark___10_chunk___100B-2 1000 6213319 ns/op 0.32 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 5 Max: 11 Avg: 5.56
+ ------------------------------------------------------------
+ [ 5, 6) 831 83.1% 83.1% ########
+ [ 6, 7) 58 5.8% 88.9% #
+ [ 7, 8) 0 0.0% 88.9%
+ [ 8, 9) 0 0.0% 88.9%
+ [ 9, 10) 58 5.8% 94.7% #
+ [ 10, 11) 52 5.2% 99.9% #
+ [ 11, inf) 1 0.1% 100.0%
+Benchmark___10_chunk____1KB 1000 7839146 ns/op 2.55 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 6 Max: 17 Avg: 7.15
+ ------------------------------------------------------------
+ [ 6, 7) 793 79.3% 79.3% ########
+ [ 7, 8) 60 6.0% 85.3% #
+ [ 8, 9) 4 0.4% 85.7%
+ [ 9, 10) 26 2.6% 88.3%
+ [ 10, 11) 1 0.1% 88.4%
+ [ 11, 13) 0 0.0% 88.4%
+ [ 13, 15) 31 3.1% 91.5%
+ [ 15, 18) 85 8.5% 100.0% #
+ [ 18, 21) 0 0.0% 100.0%
+ [ 21, 25) 0 0.0% 100.0%
+ [ 25, 29) 0 0.0% 100.0%
+ [ 29, inf) 0 0.0% 100.0%
+Benchmark___10_chunk____1KB-2 1000 6437679 ns/op 3.11 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 5 Max: 13 Avg: 5.79
+ ------------------------------------------------------------
+ [ 5, 6) 757 75.7% 75.7% ########
+ [ 6, 7) 129 12.9% 88.6% #
+ [ 7, 8) 1 0.1% 88.7%
+ [ 8, 9) 0 0.0% 88.7%
+ [ 9, 10) 17 1.7% 90.4%
+ [ 10, 12) 51 5.1% 95.5% #
+ [ 12, 14) 45 4.5% 100.0%
+ [ 14, 16) 0 0.0% 100.0%
+ [ 16, inf) 0 0.0% 100.0%
+Benchmark___10_chunk___10KB 1000 10124684 ns/op 19.75 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 8 Max: 20 Avg: 9.76
+ ------------------------------------------------------------
+ [ 8, 9) 746 74.6% 74.6% #######
+ [ 9, 10) 6 0.6% 75.2%
+ [ 10, 11) 53 5.3% 80.5% #
+ [ 11, 12) 3 0.3% 80.8%
+ [ 12, 13) 0 0.0% 80.8%
+ [ 13, 15) 0 0.0% 80.8%
+ [ 15, 17) 56 5.6% 86.4% #
+ [ 17, 20) 135 13.5% 99.9% #
+ [ 20, 23) 1 0.1% 100.0%
+ [ 23, 27) 0 0.0% 100.0%
+ [ 27, 32) 0 0.0% 100.0%
+ [ 32, 38) 0 0.0% 100.0%
+ [ 38, inf) 0 0.0% 100.0%
+Benchmark___10_chunk___10KB-2 1000 7345578 ns/op 27.23 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 5 Max: 14 Avg: 6.95
+ ------------------------------------------------------------
+ [ 5, 6) 153 15.3% 15.3% ##
+ [ 6, 7) 616 61.6% 76.9% ######
+ [ 7, 8) 43 4.3% 81.2%
+ [ 8, 9) 2 0.2% 81.4%
+ [ 9, 10) 1 0.1% 81.5%
+ [ 10, 12) 73 7.3% 88.8% #
+ [ 12, 14) 104 10.4% 99.2% #
+ [ 14, 16) 8 0.8% 100.0%
+ [ 16, 19) 0 0.0% 100.0%
+ [ 19, inf) 0 0.0% 100.0%
+Benchmark___10_chunk__100KB 200 31538364 ns/op 63.41 MB/s
+--- Histogram (unit: ms)
+ Count: 200 Min: 24 Max: 37 Avg: 31.07
+ ------------------------------------------------------------
+ [ 24, 25) 5 2.5% 2.5%
+ [ 25, 26) 60 30.0% 32.5% ###
+ [ 26, 27) 2 1.0% 33.5%
+ [ 27, 28) 0 0.0% 33.5%
+ [ 28, 29) 0 0.0% 33.5%
+ [ 29, 31) 0 0.0% 33.5%
+ [ 31, 33) 0 0.0% 33.5%
+ [ 33, 36) 129 64.5% 98.0% ######
+ [ 36, 39) 4 2.0% 100.0%
+ [ 39, 43) 0 0.0% 100.0%
+ [ 43, 48) 0 0.0% 100.0%
+ [ 48, 54) 0 0.0% 100.0%
+ [ 54, 61) 0 0.0% 100.0%
+ [ 61, inf) 0 0.0% 100.0%
+Benchmark___10_chunk__100KB-2 500 19099352 ns/op 104.72 MB/s
+--- Histogram (unit: ms)
+ Count: 500 Min: 14 Max: 27 Avg: 18.58
+ ------------------------------------------------------------
+ [ 14, 15) 53 10.6% 10.6% #
+ [ 15, 16) 109 21.8% 32.4% ##
+ [ 16, 17) 15 3.0% 35.4%
+ [ 17, 18) 0 0.0% 35.4%
+ [ 18, 19) 2 0.4% 35.8%
+ [ 19, 21) 161 32.2% 68.0% ###
+ [ 21, 23) 141 28.2% 96.2% ###
+ [ 23, 26) 18 3.6% 99.8%
+ [ 26, 29) 1 0.2% 100.0%
+ [ 29, 33) 0 0.0% 100.0%
+ [ 33, 38) 0 0.0% 100.0%
+ [ 38, 44) 0 0.0% 100.0%
+ [ 44, 51) 0 0.0% 100.0%
+ [ 51, inf) 0 0.0% 100.0%
+Benchmark__100_chunk_____1B 500 19824819 ns/op 0.01 MB/s
+--- Histogram (unit: ms)
+ Count: 500 Min: 16 Max: 34 Avg: 19.44
+ ------------------------------------------------------------
+ [ 16, 17) 272 54.4% 54.4% #####
+ [ 17, 18) 15 3.0% 57.4%
+ [ 18, 19) 2 0.4% 57.8%
+ [ 19, 20) 38 7.6% 65.4% #
+ [ 20, 22) 33 6.6% 72.0% #
+ [ 22, 24) 23 4.6% 76.6%
+ [ 24, 27) 41 8.2% 84.8% #
+ [ 27, 30) 64 12.8% 97.6% #
+ [ 30, 34) 11 2.2% 99.8%
+ [ 34, 39) 1 0.2% 100.0%
+ [ 39, 45) 0 0.0% 100.0%
+ [ 45, 53) 0 0.0% 100.0%
+ [ 53, 63) 0 0.0% 100.0%
+ [ 63, 75) 0 0.0% 100.0%
+ [ 75, 89) 0 0.0% 100.0%
+ [ 89, 106) 0 0.0% 100.0%
+ [106, inf) 0 0.0% 100.0%
+Benchmark__100_chunk_____1B-2 500 14793583 ns/op 0.01 MB/s
+--- Histogram (unit: ms)
+ Count: 500 Min: 11 Max: 23 Avg: 14.28
+ ------------------------------------------------------------
+ [ 11, 12) 15 3.0% 3.0%
+ [ 12, 13) 210 42.0% 45.0% ####
+ [ 13, 14) 107 21.4% 66.4% ##
+ [ 14, 15) 19 3.8% 70.2%
+ [ 15, 16) 1 0.2% 70.4%
+ [ 16, 18) 23 4.6% 75.0%
+ [ 18, 20) 91 18.2% 93.2% ##
+ [ 20, 23) 31 6.2% 99.4% #
+ [ 23, 26) 3 0.6% 100.0%
+ [ 26, 30) 0 0.0% 100.0%
+ [ 30, 35) 0 0.0% 100.0%
+ [ 35, 41) 0 0.0% 100.0%
+ [ 41, inf) 0 0.0% 100.0%
+Benchmark__100_chunk____10B 300 24818102 ns/op 0.08 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 20 Max: 35 Avg: 24.38
+ ------------------------------------------------------------
+ [ 20, 21) 7 2.3% 2.3%
+ [ 21, 22) 145 48.3% 50.7% #####
+ [ 22, 23) 29 9.7% 60.3% #
+ [ 23, 24) 4 1.3% 61.7%
+ [ 24, 26) 25 8.3% 70.0% #
+ [ 26, 28) 4 1.3% 71.3%
+ [ 28, 30) 24 8.0% 79.3% #
+ [ 30, 33) 43 14.3% 93.7% #
+ [ 33, 37) 19 6.3% 100.0% #
+ [ 37, 42) 0 0.0% 100.0%
+ [ 42, 48) 0 0.0% 100.0%
+ [ 48, 55) 0 0.0% 100.0%
+ [ 55, 63) 0 0.0% 100.0%
+ [ 63, 73) 0 0.0% 100.0%
+ [ 73, 85) 0 0.0% 100.0%
+ [ 85, inf) 0 0.0% 100.0%
+Benchmark__100_chunk____10B-2 500 15081537 ns/op 0.13 MB/s
+--- Histogram (unit: ms)
+ Count: 500 Min: 11 Max: 25 Avg: 14.57
+ ------------------------------------------------------------
+ [ 11, 12) 1 0.2% 0.2%
+ [ 12, 13) 182 36.4% 36.6% ####
+ [ 13, 14) 143 28.6% 65.2% ###
+ [ 14, 15) 23 4.6% 69.8%
+ [ 15, 17) 7 1.4% 71.2%
+ [ 17, 19) 51 10.2% 81.4% #
+ [ 19, 21) 55 11.0% 92.4% #
+ [ 21, 24) 34 6.8% 99.2% #
+ [ 24, 28) 4 0.8% 100.0%
+ [ 28, 32) 0 0.0% 100.0%
+ [ 32, 37) 0 0.0% 100.0%
+ [ 37, 43) 0 0.0% 100.0%
+ [ 43, 51) 0 0.0% 100.0%
+ [ 51, 60) 0 0.0% 100.0%
+ [ 60, inf) 0 0.0% 100.0%
+Benchmark__100_chunk___100B 300 27491526 ns/op 0.73 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 23 Max: 38 Avg: 26.94
+ ------------------------------------------------------------
+ [ 23, 24) 104 34.7% 34.7% ###
+ [ 24, 25) 67 22.3% 57.0% ##
+ [ 25, 26) 10 3.3% 60.3%
+ [ 26, 27) 8 2.7% 63.0%
+ [ 27, 29) 23 7.7% 70.7% #
+ [ 29, 31) 0 0.0% 70.7%
+ [ 31, 33) 22 7.3% 78.0% #
+ [ 33, 36) 57 19.0% 97.0% ##
+ [ 36, 40) 9 3.0% 100.0%
+ [ 40, 45) 0 0.0% 100.0%
+ [ 45, 51) 0 0.0% 100.0%
+ [ 51, 58) 0 0.0% 100.0%
+ [ 58, 66) 0 0.0% 100.0%
+ [ 66, 76) 0 0.0% 100.0%
+ [ 76, 88) 0 0.0% 100.0%
+ [ 88, inf) 0 0.0% 100.0%
+Benchmark__100_chunk___100B-2 500 15897395 ns/op 1.26 MB/s
+--- Histogram (unit: ms)
+ Count: 500 Min: 12 Max: 24 Avg: 15.40
+ ------------------------------------------------------------
+ [ 12, 13) 5 1.0% 1.0%
+ [ 13, 14) 226 45.2% 46.2% #####
+ [ 14, 15) 107 21.4% 67.6% ##
+ [ 15, 16) 16 3.2% 70.8%
+ [ 16, 17) 0 0.0% 70.8%
+ [ 17, 19) 12 2.4% 73.2%
+ [ 19, 21) 92 18.4% 91.6% ##
+ [ 21, 24) 35 7.0% 98.6% #
+ [ 24, 27) 7 1.4% 100.0%
+ [ 27, 31) 0 0.0% 100.0%
+ [ 31, 36) 0 0.0% 100.0%
+ [ 36, 42) 0 0.0% 100.0%
+ [ 42, inf) 0 0.0% 100.0%
+Benchmark__100_chunk____1KB 200 30390593 ns/op 6.58 MB/s
+--- Histogram (unit: ms)
+ Count: 200 Min: 25 Max: 41 Avg: 29.77
+ ------------------------------------------------------------
+ [ 25, 26) 68 34.0% 34.0% ###
+ [ 26, 27) 26 13.0% 47.0% #
+ [ 27, 28) 8 4.0% 51.0%
+ [ 28, 29) 9 4.5% 55.5%
+ [ 29, 31) 18 9.0% 64.5% #
+ [ 31, 33) 1 0.5% 65.0%
+ [ 33, 36) 24 12.0% 77.0% #
+ [ 36, 39) 39 19.5% 96.5% ##
+ [ 39, 43) 7 3.5% 100.0%
+ [ 43, 48) 0 0.0% 100.0%
+ [ 48, 54) 0 0.0% 100.0%
+ [ 54, 61) 0 0.0% 100.0%
+ [ 61, 70) 0 0.0% 100.0%
+ [ 70, 81) 0 0.0% 100.0%
+ [ 81, 94) 0 0.0% 100.0%
+ [ 94, 110) 0 0.0% 100.0%
+ [110, inf) 0 0.0% 100.0%
+Benchmark__100_chunk____1KB-2 500 17949156 ns/op 11.14 MB/s
+--- Histogram (unit: ms)
+ Count: 500 Min: 14 Max: 26 Avg: 17.41
+ ------------------------------------------------------------
+ [ 14, 15) 120 24.0% 24.0% ##
+ [ 15, 16) 169 33.8% 57.8% ###
+ [ 16, 17) 28 5.6% 63.4% #
+ [ 17, 18) 6 1.2% 64.6%
+ [ 18, 19) 2 0.4% 65.0%
+ [ 19, 21) 19 3.8% 68.8%
+ [ 21, 23) 87 17.4% 86.2% ##
+ [ 23, 26) 66 13.2% 99.4% #
+ [ 26, 29) 3 0.6% 100.0%
+ [ 29, 33) 0 0.0% 100.0%
+ [ 33, 38) 0 0.0% 100.0%
+ [ 38, 44) 0 0.0% 100.0%
+ [ 44, inf) 0 0.0% 100.0%
+Benchmark__100_chunk___10KB 100 51722516 ns/op 38.67 MB/s
+--- Histogram (unit: ms)
+ Count: 100 Min: 42 Max: 57 Avg: 51.22
+ ------------------------------------------------------------
+ [ 42, 43) 1 1.0% 1.0%
+ [ 43, 44) 0 0.0% 1.0%
+ [ 44, 45) 14 14.0% 15.0% #
+ [ 45, 46) 1 1.0% 16.0%
+ [ 46, 48) 2 2.0% 18.0%
+ [ 48, 50) 0 0.0% 18.0%
+ [ 50, 52) 17 17.0% 35.0% ##
+ [ 52, 55) 58 58.0% 93.0% ######
+ [ 55, 59) 7 7.0% 100.0% #
+ [ 59, 64) 0 0.0% 100.0%
+ [ 64, 70) 0 0.0% 100.0%
+ [ 70, 77) 0 0.0% 100.0%
+ [ 77, 85) 0 0.0% 100.0%
+ [ 85, 95) 0 0.0% 100.0%
+ [ 95, 107) 0 0.0% 100.0%
+ [107, inf) 0 0.0% 100.0%
+Benchmark__100_chunk___10KB-2 300 28968863 ns/op 69.04 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 22 Max: 34 Avg: 28.47
+ ------------------------------------------------------------
+ [ 22, 23) 30 10.0% 10.0% #
+ [ 23, 24) 18 6.0% 16.0% #
+ [ 24, 25) 6 2.0% 18.0%
+ [ 25, 26) 0 0.0% 18.0%
+ [ 26, 27) 0 0.0% 18.0%
+ [ 27, 29) 63 21.0% 39.0% ##
+ [ 29, 31) 102 34.0% 73.0% ###
+ [ 31, 34) 77 25.7% 98.7% ###
+ [ 34, 37) 4 1.3% 100.0%
+ [ 37, 41) 0 0.0% 100.0%
+ [ 41, 46) 0 0.0% 100.0%
+ [ 46, 52) 0 0.0% 100.0%
+ [ 52, inf) 0 0.0% 100.0%
+Benchmark__100_chunk__100KB 30 251752470 ns/op 79.44 MB/s
+--- Histogram (unit: ms)
+ Count: 30 Min: 243 Max: 257 Avg: 251.23
+ ------------------------------------------------------------
+ [243, 244) 5 16.7% 16.7% ##
+ [244, 245) 1 3.3% 20.0%
+ [245, 246) 4 13.3% 33.3% #
+ [246, 247) 0 0.0% 33.3%
+ [247, 249) 0 0.0% 33.3%
+ [249, 251) 0 0.0% 33.3%
+ [251, 253) 0 0.0% 33.3%
+ [253, 256) 14 46.7% 80.0% #####
+ [256, 260) 6 20.0% 100.0% ##
+ [260, 264) 0 0.0% 100.0%
+ [264, 269) 0 0.0% 100.0%
+ [269, 275) 0 0.0% 100.0%
+ [275, 283) 0 0.0% 100.0%
+ [283, 292) 0 0.0% 100.0%
+ [292, inf) 0 0.0% 100.0%
+Benchmark__100_chunk__100KB-2 50 131868524 ns/op 151.67 MB/s
+--- Histogram (unit: ms)
+ Count: 50 Min: 127 Max: 137 Avg: 131.44
+ ------------------------------------------------------------
+ [127, 128) 3 6.0% 6.0% #
+ [128, 129) 13 26.0% 32.0% ###
+ [129, 130) 9 18.0% 50.0% ##
+ [130, 131) 1 2.0% 52.0%
+ [131, 132) 1 2.0% 54.0%
+ [132, 134) 2 4.0% 58.0%
+ [134, 136) 14 28.0% 86.0% ###
+ [136, 138) 7 14.0% 100.0% #
+ [138, 141) 0 0.0% 100.0%
+ [141, 144) 0 0.0% 100.0%
+ [144, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk_____1B 50 147894706 ns/op 0.01 MB/s
+--- Histogram (unit: ms)
+ Count: 50 Min: 123 Max: 195 Avg: 147.42
+ ------------------------------------------------------------
+ [123, 124) 1 2.0% 2.0%
+ [124, 125) 0 0.0% 2.0%
+ [125, 126) 0 0.0% 2.0%
+ [126, 128) 0 0.0% 2.0%
+ [128, 131) 0 0.0% 2.0%
+ [131, 135) 1 2.0% 4.0%
+ [135, 140) 20 40.0% 44.0% ####
+ [140, 147) 19 38.0% 82.0% ####
+ [147, 156) 1 2.0% 84.0%
+ [156, 169) 0 0.0% 84.0%
+ [169, 186) 2 4.0% 88.0%
+ [186, 209) 6 12.0% 100.0% #
+ [209, 239) 0 0.0% 100.0%
+ [239, 279) 0 0.0% 100.0%
+ [279, 333) 0 0.0% 100.0%
+ [333, 404) 0 0.0% 100.0%
+ [404, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk_____1B-2 100 112701633 ns/op 0.02 MB/s
+--- Histogram (unit: ms)
+ Count: 100 Min: 109 Max: 128 Avg: 112.17
+ ------------------------------------------------------------
+ [109, 110) 4 4.0% 4.0%
+ [110, 111) 17 17.0% 21.0% ##
+ [111, 112) 31 31.0% 52.0% ###
+ [112, 113) 16 16.0% 68.0% ##
+ [113, 115) 21 21.0% 89.0% ##
+ [115, 117) 4 4.0% 93.0%
+ [117, 120) 5 5.0% 98.0% #
+ [120, 123) 1 1.0% 99.0%
+ [123, 127) 0 0.0% 99.0%
+ [127, 132) 1 1.0% 100.0%
+ [132, 139) 0 0.0% 100.0%
+ [139, 147) 0 0.0% 100.0%
+ [147, 157) 0 0.0% 100.0%
+ [157, 169) 0 0.0% 100.0%
+ [169, 184) 0 0.0% 100.0%
+ [184, 202) 0 0.0% 100.0%
+ [202, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk____10B 30 210652536 ns/op 0.09 MB/s
+--- Histogram (unit: ms)
+ Count: 30 Min: 205 Max: 216 Avg: 210.23
+ ------------------------------------------------------------
+ [205, 206) 1 3.3% 3.3%
+ [206, 207) 3 10.0% 13.3% #
+ [207, 208) 4 13.3% 26.7% #
+ [208, 209) 3 10.0% 36.7% #
+ [209, 210) 0 0.0% 36.7%
+ [210, 212) 6 20.0% 56.7% ##
+ [212, 214) 10 33.3% 90.0% ###
+ [214, 217) 3 10.0% 100.0% #
+ [217, 220) 0 0.0% 100.0%
+ [220, 224) 0 0.0% 100.0%
+ [224, 228) 0 0.0% 100.0%
+ [228, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk____10B-2 100 121674848 ns/op 0.16 MB/s
+--- Histogram (unit: ms)
+ Count: 100 Min: 113 Max: 132 Avg: 121.15
+ ------------------------------------------------------------
+ [113, 114) 4 4.0% 4.0%
+ [114, 115) 9 9.0% 13.0% #
+ [115, 116) 5 5.0% 18.0% #
+ [116, 117) 3 3.0% 21.0%
+ [117, 119) 7 7.0% 28.0% #
+ [119, 121) 14 14.0% 42.0% #
+ [121, 124) 24 24.0% 66.0% ##
+ [124, 127) 25 25.0% 91.0% ###
+ [127, 131) 8 8.0% 99.0% #
+ [131, 136) 1 1.0% 100.0%
+ [136, 143) 0 0.0% 100.0%
+ [143, 151) 0 0.0% 100.0%
+ [151, 161) 0 0.0% 100.0%
+ [161, 173) 0 0.0% 100.0%
+ [173, 188) 0 0.0% 100.0%
+ [188, 206) 0 0.0% 100.0%
+ [206, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk___100B 30 238543410 ns/op 0.84 MB/s
+--- Histogram (unit: ms)
+ Count: 30 Min: 230 Max: 250 Avg: 238.03
+ ------------------------------------------------------------
+ [230, 231) 3 10.0% 10.0% #
+ [231, 232) 0 0.0% 10.0%
+ [232, 233) 1 3.3% 13.3%
+ [233, 234) 2 6.7% 20.0% #
+ [234, 236) 5 16.7% 36.7% ##
+ [236, 238) 4 13.3% 50.0% #
+ [238, 241) 5 16.7% 66.7% ##
+ [241, 245) 7 23.3% 90.0% ##
+ [245, 249) 2 6.7% 96.7% #
+ [249, 255) 1 3.3% 100.0%
+ [255, 262) 0 0.0% 100.0%
+ [262, 270) 0 0.0% 100.0%
+ [270, 280) 0 0.0% 100.0%
+ [280, 293) 0 0.0% 100.0%
+ [293, 309) 0 0.0% 100.0%
+ [309, 328) 0 0.0% 100.0%
+ [328, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk___100B-2 50 138412318 ns/op 1.44 MB/s
+--- Histogram (unit: ms)
+ Count: 50 Min: 126 Max: 149 Avg: 137.94
+ ------------------------------------------------------------
+ [126, 127) 1 2.0% 2.0%
+ [127, 128) 0 0.0% 2.0%
+ [128, 129) 0 0.0% 2.0%
+ [129, 130) 0 0.0% 2.0%
+ [130, 132) 3 6.0% 8.0% #
+ [132, 134) 6 12.0% 20.0% #
+ [134, 137) 11 22.0% 42.0% ##
+ [137, 141) 12 24.0% 66.0% ##
+ [141, 146) 14 28.0% 94.0% ###
+ [146, 152) 3 6.0% 100.0% #
+ [152, 160) 0 0.0% 100.0%
+ [160, 169) 0 0.0% 100.0%
+ [169, 181) 0 0.0% 100.0%
+ [181, 196) 0 0.0% 100.0%
+ [196, 214) 0 0.0% 100.0%
+ [214, 236) 0 0.0% 100.0%
+ [236, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk____1KB 30 276508870 ns/op 7.23 MB/s
+--- Histogram (unit: ms)
+ Count: 30 Min: 264 Max: 299 Avg: 275.97
+ ------------------------------------------------------------
+ [264, 265) 1 3.3% 3.3%
+ [265, 266) 0 0.0% 3.3%
+ [266, 267) 1 3.3% 6.7%
+ [267, 269) 3 10.0% 16.7% #
+ [269, 271) 5 16.7% 33.3% ##
+ [271, 274) 7 23.3% 56.7% ##
+ [274, 278) 2 6.7% 63.3% #
+ [278, 283) 7 23.3% 86.7% ##
+ [283, 289) 1 3.3% 90.0%
+ [289, 297) 1 3.3% 93.3%
+ [297, 307) 2 6.7% 100.0% #
+ [307, 320) 0 0.0% 100.0%
+ [320, 337) 0 0.0% 100.0%
+ [337, 358) 0 0.0% 100.0%
+ [358, 385) 0 0.0% 100.0%
+ [385, 419) 0 0.0% 100.0%
+ [419, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk____1KB-2 50 156292302 ns/op 12.80 MB/s
+--- Histogram (unit: ms)
+ Count: 50 Min: 144 Max: 169 Avg: 155.82
+ ------------------------------------------------------------
+ [144, 145) 1 2.0% 2.0%
+ [145, 146) 0 0.0% 2.0%
+ [146, 147) 1 2.0% 4.0%
+ [147, 148) 0 0.0% 4.0%
+ [148, 150) 3 6.0% 10.0% #
+ [150, 152) 5 10.0% 20.0% #
+ [152, 155) 14 28.0% 48.0% ###
+ [155, 159) 12 24.0% 72.0% ##
+ [159, 164) 8 16.0% 88.0% ##
+ [164, 170) 6 12.0% 100.0% #
+ [170, 178) 0 0.0% 100.0%
+ [178, 188) 0 0.0% 100.0%
+ [188, 201) 0 0.0% 100.0%
+ [201, 217) 0 0.0% 100.0%
+ [217, 237) 0 0.0% 100.0%
+ [237, 261) 0 0.0% 100.0%
+ [261, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk___10KB 20 468904636 ns/op 42.65 MB/s
+--- Histogram (unit: ms)
+ Count: 20 Min: 458 Max: 491 Avg: 468.40
+ ------------------------------------------------------------
+ [458, 459) 2 10.0% 10.0% #
+ [459, 460) 2 10.0% 20.0% #
+ [460, 461) 2 10.0% 30.0% #
+ [461, 463) 1 5.0% 35.0% #
+ [463, 465) 1 5.0% 40.0% #
+ [465, 468) 2 10.0% 50.0% #
+ [468, 472) 2 10.0% 60.0% #
+ [472, 477) 6 30.0% 90.0% ###
+ [477, 483) 0 0.0% 90.0%
+ [483, 491) 1 5.0% 95.0% #
+ [491, 501) 1 5.0% 100.0% #
+ [501, 513) 0 0.0% 100.0%
+ [513, 529) 0 0.0% 100.0%
+ [529, 549) 0 0.0% 100.0%
+ [549, 575) 0 0.0% 100.0%
+ [575, 608) 0 0.0% 100.0%
+ [608, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk___10KB-2 30 263653358 ns/op 75.86 MB/s
+--- Histogram (unit: ms)
+ Count: 30 Min: 242 Max: 275 Avg: 263.13
+ ------------------------------------------------------------
+ [242, 243) 2 6.7% 6.7% #
+ [243, 244) 0 0.0% 6.7%
+ [244, 245) 0 0.0% 6.7%
+ [245, 247) 0 0.0% 6.7%
+ [247, 249) 0 0.0% 6.7%
+ [249, 252) 0 0.0% 6.7%
+ [252, 256) 3 10.0% 16.7% #
+ [256, 261) 5 16.7% 33.3% ##
+ [261, 267) 8 26.7% 60.0% ###
+ [267, 275) 11 36.7% 96.7% ####
+ [275, 285) 1 3.3% 100.0%
+ [285, 297) 0 0.0% 100.0%
+ [297, 313) 0 0.0% 100.0%
+ [313, 333) 0 0.0% 100.0%
+ [333, 359) 0 0.0% 100.0%
+ [359, 392) 0 0.0% 100.0%
+ [392, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk__100KB 3 2573103606 ns/op 77.73 MB/s
+--- Histogram (unit: s)
+ Count: 3 Min: 2 Max: 2 Avg: 2.00
+ ------------------------------------------------------------
+ [ 2, inf) 3 100.0% 100.0% ##########
+Benchmark___1K_chunk__100KB-2 5 1337696624 ns/op 149.51 MB/s
+--- Histogram (unit: s)
+ Count: 5 Min: 1 Max: 1 Avg: 1.00
+ ------------------------------------------------------------
+ [ 1, inf) 5 100.0% 100.0% ##########
+
+Benchmark__per_chunk____1B 50000 192129 ns/op 0.01 MB/s
+Benchmark__per_chunk____1B-2 50000 131601 ns/op 0.02 MB/s
+Benchmark__per_chunk___10B 20000 372009 ns/op 0.05 MB/s
+Benchmark__per_chunk___10B-2 30000 222774 ns/op 0.09 MB/s
+Benchmark__per_chunk__100B 20000 434465 ns/op 0.46 MB/s
+Benchmark__per_chunk__100B-2 30000 238245 ns/op 0.84 MB/s
+Benchmark__per_chunk___1KB 20000 464091 ns/op 4.31 MB/s
+Benchmark__per_chunk___1KB-2 30000 253694 ns/op 7.88 MB/s
+Benchmark__per_chunk__10KB 10000 650380 ns/op 30.75 MB/s
+Benchmark__per_chunk__10KB-2 20000 357218 ns/op 55.99 MB/s
+Benchmark__per_chunk_100KB 3000 2728670 ns/op 73.30 MB/s
+Benchmark__per_chunk_100KB-2 5000 1380520 ns/op 144.87 MB/s
+
+Benchmark___10B_mux__100_chunks___10B 300 26348223 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 9 Max: 30 Avg: 25.79
+ ------------------------------------------------------------
+ [ 9, 10) 19 6.3% 6.3% #
+ [ 10, 11) 5 1.7% 8.0%
+ [ 11, 12) 0 0.0% 8.0%
+ [ 12, 13) 0 0.0% 8.0%
+ [ 13, 15) 0 0.0% 8.0%
+ [ 15, 17) 0 0.0% 8.0%
+ [ 17, 20) 1 0.3% 8.3%
+ [ 20, 24) 10 3.3% 11.7%
+ [ 24, 29) 233 77.7% 89.3% ########
+ [ 29, 35) 32 10.7% 100.0% #
+ [ 35, 42) 0 0.0% 100.0%
+ [ 42, 51) 0 0.0% 100.0%
+ [ 51, 62) 0 0.0% 100.0%
+ [ 62, 75) 0 0.0% 100.0%
+ [ 75, 92) 0 0.0% 100.0%
+ [ 92, 112) 0 0.0% 100.0%
+ [112, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks___10B-2 1000 9053248 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 4 Max: 17 Avg: 8.54
+ ------------------------------------------------------------
+ [ 4, 5) 3 0.3% 0.3%
+ [ 5, 6) 48 4.8% 5.1%
+ [ 6, 7) 166 16.6% 21.7% ##
+ [ 7, 8) 206 20.6% 42.3% ##
+ [ 8, 9) 179 17.9% 60.2% ##
+ [ 9, 11) 186 18.6% 78.8% ##
+ [ 11, 13) 111 11.1% 89.9% #
+ [ 13, 16) 96 9.6% 99.5% #
+ [ 16, 19) 5 0.5% 100.0%
+ [ 19, 23) 0 0.0% 100.0%
+ [ 23, 28) 0 0.0% 100.0%
+ [ 28, 34) 0 0.0% 100.0%
+ [ 34, 41) 0 0.0% 100.0%
+ [ 41, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks__100B 300 29202434 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 9 Max: 34 Avg: 28.80
+ ------------------------------------------------------------
+ [ 9, 10) 4 1.3% 1.3%
+ [ 10, 11) 10 3.3% 4.7%
+ [ 11, 12) 6 2.0% 6.7%
+ [ 12, 13) 0 0.0% 6.7%
+ [ 13, 15) 0 0.0% 6.7%
+ [ 15, 17) 0 0.0% 6.7%
+ [ 17, 20) 0 0.0% 6.7%
+ [ 20, 24) 0 0.0% 6.7%
+ [ 24, 29) 20 6.7% 13.3% #
+ [ 29, 35) 260 86.7% 100.0% #########
+ [ 35, 43) 0 0.0% 100.0%
+ [ 43, 53) 0 0.0% 100.0%
+ [ 53, 66) 0 0.0% 100.0%
+ [ 66, 82) 0 0.0% 100.0%
+ [ 82, 102) 0 0.0% 100.0%
+ [102, 126) 0 0.0% 100.0%
+ [126, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks__100B-2 1000 10238260 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 5 Max: 21 Avg: 9.74
+ ------------------------------------------------------------
+ [ 5, 6) 39 3.9% 3.9%
+ [ 6, 7) 118 11.8% 15.7% #
+ [ 7, 8) 123 12.3% 28.0% #
+ [ 8, 9) 141 14.1% 42.1% #
+ [ 9, 11) 217 21.7% 63.8% ##
+ [ 11, 13) 152 15.2% 79.0% ##
+ [ 13, 16) 157 15.7% 94.7% ##
+ [ 16, 19) 50 5.0% 99.7% #
+ [ 19, 23) 3 0.3% 100.0%
+ [ 23, 28) 0 0.0% 100.0%
+ [ 28, 34) 0 0.0% 100.0%
+ [ 34, 41) 0 0.0% 100.0%
+ [ 41, 50) 0 0.0% 100.0%
+ [ 50, 61) 0 0.0% 100.0%
+ [ 61, 74) 0 0.0% 100.0%
+ [ 74, 90) 0 0.0% 100.0%
+ [ 90, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks___1KB 300 30121503 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 9 Max: 38 Avg: 29.57
+ ------------------------------------------------------------
+ [ 9, 10) 7 2.3% 2.3%
+ [ 10, 11) 13 4.3% 6.7%
+ [ 11, 12) 5 1.7% 8.3%
+ [ 12, 13) 3 1.0% 9.3%
+ [ 13, 15) 3 1.0% 10.3%
+ [ 15, 18) 0 0.0% 10.3%
+ [ 18, 21) 0 0.0% 10.3%
+ [ 21, 25) 0 0.0% 10.3%
+ [ 25, 31) 33 11.0% 21.3% #
+ [ 31, 38) 235 78.3% 99.7% ########
+ [ 38, 47) 1 0.3% 100.0%
+ [ 47, 58) 0 0.0% 100.0%
+ [ 58, 72) 0 0.0% 100.0%
+ [ 72, 90) 0 0.0% 100.0%
+ [ 90, 113) 0 0.0% 100.0%
+ [113, 141) 0 0.0% 100.0%
+ [141, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks___1KB-2 1000 11123358 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 4 Max: 22 Avg: 10.61
+ ------------------------------------------------------------
+ [ 4, 5) 21 2.1% 2.1%
+ [ 5, 6) 66 6.6% 8.7% #
+ [ 6, 7) 110 11.0% 19.7% #
+ [ 7, 8) 88 8.8% 28.5% #
+ [ 8, 10) 175 17.5% 46.0% ##
+ [ 10, 12) 152 15.2% 61.2% ##
+ [ 12, 15) 168 16.8% 78.0% ##
+ [ 15, 18) 150 15.0% 93.0% ##
+ [ 18, 22) 69 6.9% 99.9% #
+ [ 22, 27) 1 0.1% 100.0%
+ [ 27, 33) 0 0.0% 100.0%
+ [ 33, 41) 0 0.0% 100.0%
+ [ 41, 51) 0 0.0% 100.0%
+ [ 51, 63) 0 0.0% 100.0%
+ [ 63, 77) 0 0.0% 100.0%
+ [ 77, 94) 0 0.0% 100.0%
+ [ 94, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks__10KB 200 44810613 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 200 Min: 9 Max: 57 Avg: 44.30
+ ------------------------------------------------------------
+ [ 9, 10) 1 0.5% 0.5%
+ [ 10, 11) 9 4.5% 5.0%
+ [ 11, 12) 1 0.5% 5.5%
+ [ 12, 14) 11 5.5% 11.0% #
+ [ 14, 16) 7 3.5% 14.5%
+ [ 16, 19) 2 1.0% 15.5%
+ [ 19, 23) 0 0.0% 15.5%
+ [ 23, 29) 0 0.0% 15.5%
+ [ 29, 36) 0 0.0% 15.5%
+ [ 36, 46) 21 10.5% 26.0% #
+ [ 46, 59) 148 74.0% 100.0% #######
+ [ 59, 76) 0 0.0% 100.0%
+ [ 76, 98) 0 0.0% 100.0%
+ [ 98, 126) 0 0.0% 100.0%
+ [126, 163) 0 0.0% 100.0%
+ [163, 210) 0 0.0% 100.0%
+ [210, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks__10KB-2 300 23793028 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 4 Max: 41 Avg: 23.28
+ ------------------------------------------------------------
+ [ 4, 5) 1 0.3% 0.3%
+ [ 5, 6) 3 1.0% 1.3%
+ [ 6, 7) 2 0.7% 2.0%
+ [ 7, 9) 9 3.0% 5.0%
+ [ 9, 11) 9 3.0% 8.0%
+ [ 11, 14) 21 7.0% 15.0% #
+ [ 14, 18) 19 6.3% 21.3% #
+ [ 18, 23) 51 17.0% 38.3% ##
+ [ 23, 29) 108 36.0% 74.3% ####
+ [ 29, 37) 70 23.3% 97.7% ##
+ [ 37, 48) 7 2.3% 100.0%
+ [ 48, 62) 0 0.0% 100.0%
+ [ 62, 79) 0 0.0% 100.0%
+ [ 79, 101) 0 0.0% 100.0%
+ [101, 130) 0 0.0% 100.0%
+ [130, 166) 0 0.0% 100.0%
+ [166, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks___10B 100 131543346 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 100 Min: 12 Max: 215 Avg: 131.05
+ ------------------------------------------------------------
+ [ 12, 13) 1 1.0% 1.0%
+ [ 13, 14) 0 0.0% 1.0%
+ [ 14, 16) 0 0.0% 1.0%
+ [ 16, 18) 0 0.0% 1.0%
+ [ 18, 22) 2 2.0% 3.0%
+ [ 22, 27) 0 0.0% 3.0%
+ [ 27, 35) 2 2.0% 5.0%
+ [ 35, 46) 0 0.0% 5.0%
+ [ 46, 63) 3 3.0% 8.0%
+ [ 63, 87) 18 18.0% 26.0% ##
+ [ 87, 121) 21 21.0% 47.0% ##
+ [121, 170) 16 16.0% 63.0% ##
+ [170, 240) 37 37.0% 100.0% ####
+ [240, 339) 0 0.0% 100.0%
+ [339, 481) 0 0.0% 100.0%
+ [481, 684) 0 0.0% 100.0%
+ [684, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks___10B-2 300 26865810 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 5 Max: 108 Avg: 26.37
+ ------------------------------------------------------------
+ [ 5, 6) 18 6.0% 6.0% #
+ [ 6, 7) 10 3.3% 9.3%
+ [ 7, 8) 22 7.3% 16.7% #
+ [ 8, 10) 50 16.7% 33.3% ##
+ [ 10, 13) 62 20.7% 54.0% ##
+ [ 13, 17) 43 14.3% 68.3% #
+ [ 17, 23) 21 7.0% 75.3% #
+ [ 23, 31) 5 1.7% 77.0%
+ [ 31, 42) 5 1.7% 78.7%
+ [ 42, 58) 4 1.3% 80.0%
+ [ 58, 79) 19 6.3% 86.3% #
+ [ 79, 108) 40 13.3% 99.7% #
+ [108, 148) 1 0.3% 100.0%
+ [148, 203) 0 0.0% 100.0%
+ [203, 278) 0 0.0% 100.0%
+ [278, 380) 0 0.0% 100.0%
+ [380, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks__100B 50 160157465 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 50 Min: 73 Max: 233 Avg: 159.76
+ ------------------------------------------------------------
+ [ 73, 74) 1 2.0% 2.0%
+ [ 74, 75) 0 0.0% 2.0%
+ [ 75, 76) 0 0.0% 2.0%
+ [ 76, 78) 0 0.0% 2.0%
+ [ 78, 81) 2 4.0% 6.0%
+ [ 81, 86) 3 6.0% 12.0% #
+ [ 86, 93) 2 4.0% 16.0%
+ [ 93, 103) 4 8.0% 24.0% #
+ [103, 117) 4 8.0% 32.0% #
+ [117, 138) 5 10.0% 42.0% #
+ [138, 167) 8 16.0% 58.0% ##
+ [167, 208) 2 4.0% 62.0%
+ [208, 265) 19 38.0% 100.0% ####
+ [265, 346) 0 0.0% 100.0%
+ [346, 460) 0 0.0% 100.0%
+ [460, 619) 0 0.0% 100.0%
+ [619, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks__100B-2 200 38107608 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 200 Min: 4 Max: 124 Avg: 37.60
+ ------------------------------------------------------------
+ [ 4, 5) 1 0.5% 0.5%
+ [ 5, 6) 9 4.5% 5.0%
+ [ 6, 7) 2 1.0% 6.0%
+ [ 7, 9) 9 4.5% 10.5%
+ [ 9, 12) 28 14.0% 24.5% #
+ [ 12, 16) 36 18.0% 42.5% ##
+ [ 16, 22) 40 20.0% 62.5% ##
+ [ 22, 31) 13 6.5% 69.0% #
+ [ 31, 43) 6 3.0% 72.0%
+ [ 43, 60) 3 1.5% 73.5%
+ [ 60, 84) 5 2.5% 76.0%
+ [ 84, 117) 44 22.0% 98.0% ##
+ [117, 163) 4 2.0% 100.0%
+ [163, 226) 0 0.0% 100.0%
+ [226, 313) 0 0.0% 100.0%
+ [313, 432) 0 0.0% 100.0%
+ [432, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks___1KB 100 163950952 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 100 Min: 9 Max: 265 Avg: 163.45
+ ------------------------------------------------------------
+ [ 9, 10) 2 2.0% 2.0%
+ [ 10, 11) 0 0.0% 2.0%
+ [ 11, 13) 0 0.0% 2.0%
+ [ 13, 16) 1 1.0% 3.0%
+ [ 16, 20) 1 1.0% 4.0%
+ [ 20, 26) 0 0.0% 4.0%
+ [ 26, 35) 1 1.0% 5.0%
+ [ 35, 48) 3 3.0% 8.0%
+ [ 48, 67) 0 0.0% 8.0%
+ [ 67, 94) 9 9.0% 17.0% #
+ [ 94, 134) 21 21.0% 38.0% ##
+ [134, 192) 28 28.0% 66.0% ###
+ [192, 276) 34 34.0% 100.0% ###
+ [276, 398) 0 0.0% 100.0%
+ [398, 574) 0 0.0% 100.0%
+ [574, 829) 0 0.0% 100.0%
+ [829, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks___1KB-2 200 43634458 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 200 Min: 4 Max: 137 Avg: 43.13
+ ------------------------------------------------------------
+ [ 4, 5) 7 3.5% 3.5%
+ [ 5, 6) 15 7.5% 11.0% #
+ [ 6, 7) 2 1.0% 12.0%
+ [ 7, 9) 9 4.5% 16.5%
+ [ 9, 12) 20 10.0% 26.5% #
+ [ 12, 17) 22 11.0% 37.5% #
+ [ 17, 24) 27 13.5% 51.0% #
+ [ 24, 33) 17 8.5% 59.5% #
+ [ 33, 46) 14 7.0% 66.5% #
+ [ 46, 64) 9 4.5% 71.0%
+ [ 64, 90) 13 6.5% 77.5% #
+ [ 90, 126) 35 17.5% 95.0% ##
+ [126, 176) 10 5.0% 100.0% #
+ [176, 245) 0 0.0% 100.0%
+ [245, 340) 0 0.0% 100.0%
+ [340, 473) 0 0.0% 100.0%
+ [473, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks__10KB 100 93479160 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 100 Min: 8 Max: 138 Avg: 92.97
+ ------------------------------------------------------------
+ [ 8, 9) 1 1.0% 1.0%
+ [ 9, 10) 0 0.0% 1.0%
+ [ 10, 11) 0 0.0% 1.0%
+ [ 11, 13) 0 0.0% 1.0%
+ [ 13, 16) 0 0.0% 1.0%
+ [ 16, 21) 3 3.0% 4.0%
+ [ 21, 28) 3 3.0% 7.0%
+ [ 28, 37) 2 2.0% 9.0%
+ [ 37, 50) 3 3.0% 12.0%
+ [ 50, 68) 12 12.0% 24.0% #
+ [ 68, 93) 12 12.0% 36.0% #
+ [ 93, 128) 55 55.0% 91.0% ######
+ [128, 177) 9 9.0% 100.0% #
+ [177, 244) 0 0.0% 100.0%
+ [244, 337) 0 0.0% 100.0%
+ [337, 466) 0 0.0% 100.0%
+ [466, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks__10KB-2 100 54432420 ns/op 0.00 MB/s
+--- Histogram (unit: ms)
+ Count: 100 Min: 5 Max: 89 Avg: 53.92
+ ------------------------------------------------------------
+ [ 5, 6) 1 1.0% 1.0%
+ [ 6, 7) 2 2.0% 3.0%
+ [ 7, 8) 1 1.0% 4.0%
+ [ 8, 10) 2 2.0% 6.0%
+ [ 10, 13) 3 3.0% 9.0%
+ [ 13, 17) 1 1.0% 10.0%
+ [ 17, 22) 6 6.0% 16.0% #
+ [ 22, 29) 2 2.0% 18.0%
+ [ 29, 39) 8 8.0% 26.0% #
+ [ 39, 53) 12 12.0% 38.0% #
+ [ 53, 72) 38 38.0% 76.0% ####
+ [ 72, 97) 24 24.0% 100.0% ##
+ [ 97, 131) 0 0.0% 100.0%
+ [131, 177) 0 0.0% 100.0%
+ [177, 239) 0 0.0% 100.0%
+ [239, 322) 0 0.0% 100.0%
+ [322, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks___10B 300 26012216 ns/op 0.08 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 8 Max: 32 Avg: 25.48
+ ------------------------------------------------------------
+ [ 8, 9) 2 0.7% 0.7%
+ [ 9, 10) 0 0.0% 0.7%
+ [ 10, 11) 0 0.0% 0.7%
+ [ 11, 12) 10 3.3% 4.0%
+ [ 12, 14) 0 0.0% 4.0%
+ [ 14, 16) 1 0.3% 4.3%
+ [ 16, 19) 0 0.0% 4.3%
+ [ 19, 23) 9 3.0% 7.3%
+ [ 23, 28) 202 67.3% 74.7% #######
+ [ 28, 34) 76 25.3% 100.0% ###
+ [ 34, 42) 0 0.0% 100.0%
+ [ 42, 52) 0 0.0% 100.0%
+ [ 52, 64) 0 0.0% 100.0%
+ [ 64, 79) 0 0.0% 100.0%
+ [ 79, 98) 0 0.0% 100.0%
+ [ 98, 122) 0 0.0% 100.0%
+ [122, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks___10B-2 1000 7943170 ns/op 0.25 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 4 Max: 22 Avg: 7.46
+ ------------------------------------------------------------
+ [ 4, 5) 10 1.0% 1.0%
+ [ 5, 6) 233 23.3% 24.3% ##
+ [ 6, 7) 284 28.4% 52.7% ###
+ [ 7, 8) 126 12.6% 65.3% #
+ [ 8, 10) 155 15.5% 80.8% ##
+ [ 10, 12) 87 8.7% 89.5% #
+ [ 12, 15) 82 8.2% 97.7% #
+ [ 15, 18) 19 1.9% 99.6%
+ [ 18, 22) 3 0.3% 99.9%
+ [ 22, 27) 1 0.1% 100.0%
+ [ 27, 33) 0 0.0% 100.0%
+ [ 33, 41) 0 0.0% 100.0%
+ [ 41, 51) 0 0.0% 100.0%
+ [ 51, 63) 0 0.0% 100.0%
+ [ 63, 77) 0 0.0% 100.0%
+ [ 77, 94) 0 0.0% 100.0%
+ [ 94, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks__100B 300 26131776 ns/op 0.08 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 8 Max: 35 Avg: 25.63
+ ------------------------------------------------------------
+ [ 8, 9) 1 0.3% 0.3%
+ [ 9, 10) 0 0.0% 0.3%
+ [ 10, 11) 0 0.0% 0.3%
+ [ 11, 12) 0 0.0% 0.3%
+ [ 12, 14) 0 0.0% 0.3%
+ [ 14, 17) 0 0.0% 0.3%
+ [ 17, 20) 1 0.3% 0.7%
+ [ 20, 24) 126 42.0% 42.7% ####
+ [ 24, 29) 86 28.7% 71.3% ###
+ [ 29, 36) 86 28.7% 100.0% ###
+ [ 36, 45) 0 0.0% 100.0%
+ [ 45, 56) 0 0.0% 100.0%
+ [ 56, 69) 0 0.0% 100.0%
+ [ 69, 86) 0 0.0% 100.0%
+ [ 86, 107) 0 0.0% 100.0%
+ [107, 134) 0 0.0% 100.0%
+ [134, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks__100B-2 1000 8434636 ns/op 0.24 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 4 Max: 23 Avg: 7.96
+ ------------------------------------------------------------
+ [ 4, 5) 6 0.6% 0.6%
+ [ 5, 6) 165 16.5% 17.1% ##
+ [ 6, 7) 286 28.6% 45.7% ###
+ [ 7, 8) 152 15.2% 60.9% ##
+ [ 8, 10) 151 15.1% 76.0% ##
+ [ 10, 12) 97 9.7% 85.7% #
+ [ 12, 15) 91 9.1% 94.8% #
+ [ 15, 18) 43 4.3% 99.1%
+ [ 18, 22) 7 0.7% 99.8%
+ [ 22, 27) 2 0.2% 100.0%
+ [ 27, 34) 0 0.0% 100.0%
+ [ 34, 42) 0 0.0% 100.0%
+ [ 42, 52) 0 0.0% 100.0%
+ [ 52, 64) 0 0.0% 100.0%
+ [ 64, 79) 0 0.0% 100.0%
+ [ 79, 97) 0 0.0% 100.0%
+ [ 97, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks___1KB 200 31946178 ns/op 0.06 MB/s
+--- Histogram (unit: ms)
+ Count: 200 Min: 9 Max: 44 Avg: 31.49
+ ------------------------------------------------------------
+ [ 9, 10) 12 6.0% 6.0% #
+ [ 10, 11) 1 0.5% 6.5%
+ [ 11, 12) 0 0.0% 6.5%
+ [ 12, 14) 4 2.0% 8.5%
+ [ 14, 16) 0 0.0% 8.5%
+ [ 16, 19) 2 1.0% 9.5%
+ [ 19, 23) 0 0.0% 9.5%
+ [ 23, 28) 13 6.5% 16.0% #
+ [ 28, 34) 93 46.5% 62.5% #####
+ [ 34, 42) 71 35.5% 98.0% ####
+ [ 42, 52) 4 2.0% 100.0%
+ [ 52, 65) 0 0.0% 100.0%
+ [ 65, 82) 0 0.0% 100.0%
+ [ 82, 103) 0 0.0% 100.0%
+ [103, 130) 0 0.0% 100.0%
+ [130, 164) 0 0.0% 100.0%
+ [164, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks___1KB-2 1000 11688416 ns/op 0.17 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 4 Max: 28 Avg: 11.20
+ ------------------------------------------------------------
+ [ 4, 5) 5 0.5% 0.5%
+ [ 5, 6) 69 6.9% 7.4% #
+ [ 6, 7) 75 7.5% 14.9% #
+ [ 7, 8) 121 12.1% 27.0% #
+ [ 8, 10) 171 17.1% 44.1% ##
+ [ 10, 12) 134 13.4% 57.5% #
+ [ 12, 15) 172 17.2% 74.7% ##
+ [ 15, 19) 170 17.0% 91.7% ##
+ [ 19, 24) 79 7.9% 99.6% #
+ [ 24, 30) 4 0.4% 100.0%
+ [ 30, 38) 0 0.0% 100.0%
+ [ 38, 48) 0 0.0% 100.0%
+ [ 48, 60) 0 0.0% 100.0%
+ [ 60, 75) 0 0.0% 100.0%
+ [ 75, 94) 0 0.0% 100.0%
+ [ 94, 118) 0 0.0% 100.0%
+ [118, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks__10KB 200 48210454 ns/op 0.04 MB/s
+--- Histogram (unit: ms)
+ Count: 200 Min: 9 Max: 61 Avg: 47.74
+ ------------------------------------------------------------
+ [ 9, 10) 1 0.5% 0.5%
+ [ 10, 11) 0 0.0% 0.5%
+ [ 11, 12) 0 0.0% 0.5%
+ [ 12, 14) 14 7.0% 7.5% #
+ [ 14, 16) 9 4.5% 12.0%
+ [ 16, 19) 5 2.5% 14.5%
+ [ 19, 23) 2 1.0% 15.5%
+ [ 23, 29) 0 0.0% 15.5%
+ [ 29, 37) 0 0.0% 15.5%
+ [ 37, 47) 7 3.5% 19.0%
+ [ 47, 60) 159 79.5% 98.5% ########
+ [ 60, 78) 3 1.5% 100.0%
+ [ 78, 101) 0 0.0% 100.0%
+ [101, 131) 0 0.0% 100.0%
+ [131, 170) 0 0.0% 100.0%
+ [170, 222) 0 0.0% 100.0%
+ [222, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks__10KB-2 300 24547213 ns/op 0.08 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 4 Max: 42 Avg: 24.07
+ ------------------------------------------------------------
+ [ 4, 5) 1 0.3% 0.3%
+ [ 5, 6) 8 2.7% 3.0%
+ [ 6, 7) 1 0.3% 3.3%
+ [ 7, 9) 6 2.0% 5.3%
+ [ 9, 11) 14 4.7% 10.0%
+ [ 11, 14) 24 8.0% 18.0% #
+ [ 14, 18) 13 4.3% 22.3%
+ [ 18, 23) 37 12.3% 34.7% #
+ [ 23, 29) 67 22.3% 57.0% ##
+ [ 29, 37) 120 40.0% 97.0% ####
+ [ 37, 48) 9 3.0% 100.0%
+ [ 48, 62) 0 0.0% 100.0%
+ [ 62, 80) 0 0.0% 100.0%
+ [ 80, 103) 0 0.0% 100.0%
+ [103, 132) 0 0.0% 100.0%
+ [132, 169) 0 0.0% 100.0%
+ [169, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks___10B 100 131862174 ns/op 0.02 MB/s
+--- Histogram (unit: ms)
+ Count: 100 Min: 10 Max: 209 Avg: 131.34
+ ------------------------------------------------------------
+ [ 10, 11) 1 1.0% 1.0%
+ [ 11, 12) 1 1.0% 2.0%
+ [ 12, 14) 0 0.0% 2.0%
+ [ 14, 16) 0 0.0% 2.0%
+ [ 16, 20) 1 1.0% 3.0%
+ [ 20, 25) 0 0.0% 3.0%
+ [ 25, 33) 0 0.0% 3.0%
+ [ 33, 44) 0 0.0% 3.0%
+ [ 44, 60) 4 4.0% 7.0%
+ [ 60, 83) 16 16.0% 23.0% ##
+ [ 83, 117) 18 18.0% 41.0% ##
+ [117, 165) 24 24.0% 65.0% ##
+ [165, 234) 35 35.0% 100.0% ####
+ [234, 332) 0 0.0% 100.0%
+ [332, 471) 0 0.0% 100.0%
+ [471, 669) 0 0.0% 100.0%
+ [669, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks___10B-2 300 23370846 ns/op 0.09 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 4 Max: 101 Avg: 22.88
+ ------------------------------------------------------------
+ [ 4, 5) 1 0.3% 0.3%
+ [ 5, 6) 24 8.0% 8.3% #
+ [ 6, 7) 49 16.3% 24.7% ##
+ [ 7, 9) 48 16.0% 40.7% ##
+ [ 9, 12) 26 8.7% 49.3% #
+ [ 12, 16) 53 17.7% 67.0% ##
+ [ 16, 22) 36 12.0% 79.0% #
+ [ 22, 30) 5 1.7% 80.7%
+ [ 30, 41) 4 1.3% 82.0%
+ [ 41, 56) 3 1.0% 83.0%
+ [ 56, 77) 21 7.0% 90.0% #
+ [ 77, 105) 30 10.0% 100.0% #
+ [105, 143) 0 0.0% 100.0%
+ [143, 195) 0 0.0% 100.0%
+ [195, 266) 0 0.0% 100.0%
+ [266, 362) 0 0.0% 100.0%
+ [362, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks__100B 50 138026822 ns/op 0.01 MB/s
+--- Histogram (unit: ms)
+ Count: 50 Min: 22 Max: 222 Avg: 137.50
+ ------------------------------------------------------------
+ [ 22, 23) 1 2.0% 2.0%
+ [ 23, 24) 1 2.0% 4.0%
+ [ 24, 26) 0 0.0% 4.0%
+ [ 26, 28) 0 0.0% 4.0%
+ [ 28, 32) 0 0.0% 4.0%
+ [ 32, 37) 0 0.0% 4.0%
+ [ 37, 45) 0 0.0% 4.0%
+ [ 45, 56) 2 4.0% 8.0%
+ [ 56, 72) 2 4.0% 12.0%
+ [ 72, 96) 7 14.0% 26.0% #
+ [ 96, 130) 11 22.0% 48.0% ##
+ [130, 178) 10 20.0% 68.0% ##
+ [178, 247) 16 32.0% 100.0% ###
+ [247, 345) 0 0.0% 100.0%
+ [345, 485) 0 0.0% 100.0%
+ [485, 684) 0 0.0% 100.0%
+ [684, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks__100B-2 200 29916622 ns/op 0.07 MB/s
+--- Histogram (unit: ms)
+ Count: 200 Min: 5 Max: 117 Avg: 29.41
+ ------------------------------------------------------------
+ [ 5, 6) 8 4.0% 4.0%
+ [ 6, 7) 19 9.5% 13.5% #
+ [ 7, 8) 15 7.5% 21.0% #
+ [ 8, 10) 31 15.5% 36.5% ##
+ [ 10, 13) 25 12.5% 49.0% #
+ [ 13, 17) 37 18.5% 67.5% ##
+ [ 17, 23) 15 7.5% 75.0% #
+ [ 23, 32) 4 2.0% 77.0%
+ [ 32, 44) 2 1.0% 78.0%
+ [ 44, 60) 0 0.0% 78.0%
+ [ 60, 83) 4 2.0% 80.0%
+ [ 83, 114) 38 19.0% 99.0% ##
+ [114, 157) 2 1.0% 100.0%
+ [157, 216) 0 0.0% 100.0%
+ [216, 297) 0 0.0% 100.0%
+ [297, 408) 0 0.0% 100.0%
+ [408, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks___1KB 50 165938483 ns/op 0.01 MB/s
+--- Histogram (unit: ms)
+ Count: 50 Min: 19 Max: 292 Avg: 165.50
+ ------------------------------------------------------------
+ [ 19, 20) 1 2.0% 2.0%
+ [ 20, 21) 0 0.0% 2.0%
+ [ 21, 23) 0 0.0% 2.0%
+ [ 23, 26) 0 0.0% 2.0%
+ [ 26, 30) 0 0.0% 2.0%
+ [ 30, 36) 0 0.0% 2.0%
+ [ 36, 45) 0 0.0% 2.0%
+ [ 45, 58) 1 2.0% 4.0%
+ [ 58, 77) 0 0.0% 4.0%
+ [ 77, 105) 10 20.0% 24.0% ##
+ [105, 147) 11 22.0% 46.0% ##
+ [147, 208) 14 28.0% 74.0% ###
+ [208, 296) 13 26.0% 100.0% ###
+ [296, 425) 0 0.0% 100.0%
+ [425, 612) 0 0.0% 100.0%
+ [612, 884) 0 0.0% 100.0%
+ [884, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks___1KB-2 200 44332653 ns/op 0.05 MB/s
+--- Histogram (unit: ms)
+ Count: 200 Min: 5 Max: 136 Avg: 43.85
+ ------------------------------------------------------------
+ [ 5, 6) 10 5.0% 5.0% #
+ [ 6, 7) 1 0.5% 5.5%
+ [ 7, 8) 2 1.0% 6.5%
+ [ 8, 10) 14 7.0% 13.5% #
+ [ 10, 13) 22 11.0% 24.5% #
+ [ 13, 18) 23 11.5% 36.0% #
+ [ 18, 25) 24 12.0% 48.0% #
+ [ 25, 34) 21 10.5% 58.5% #
+ [ 34, 47) 19 9.5% 68.0% #
+ [ 47, 65) 9 4.5% 72.5%
+ [ 65, 90) 10 5.0% 77.5% #
+ [ 90, 125) 38 19.0% 96.5% ##
+ [125, 174) 7 3.5% 100.0%
+ [174, 242) 0 0.0% 100.0%
+ [242, 336) 0 0.0% 100.0%
+ [336, 466) 0 0.0% 100.0%
+ [466, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks__10KB 100 97935953 ns/op 0.02 MB/s
+--- Histogram (unit: ms)
+ Count: 100 Min: 10 Max: 161 Avg: 97.40
+ ------------------------------------------------------------
+ [ 10, 11) 1 1.0% 1.0%
+ [ 11, 12) 0 0.0% 1.0%
+ [ 12, 13) 0 0.0% 1.0%
+ [ 13, 15) 1 1.0% 2.0%
+ [ 15, 18) 0 0.0% 2.0%
+ [ 18, 23) 0 0.0% 2.0%
+ [ 23, 30) 1 1.0% 3.0%
+ [ 30, 40) 4 4.0% 7.0%
+ [ 40, 54) 4 4.0% 11.0%
+ [ 54, 74) 17 17.0% 28.0% ##
+ [ 74, 102) 20 20.0% 48.0% ##
+ [102, 141) 45 45.0% 93.0% #####
+ [141, 196) 7 7.0% 100.0% #
+ [196, 273) 0 0.0% 100.0%
+ [273, 381) 0 0.0% 100.0%
+ [381, 531) 0 0.0% 100.0%
+ [531, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks__10KB-2 100 59656535 ns/op 0.03 MB/s
+--- Histogram (unit: ms)
+ Count: 100 Min: 5 Max: 111 Avg: 59.16
+ ------------------------------------------------------------
+ [ 5, 6) 2 2.0% 2.0%
+ [ 6, 7) 0 0.0% 2.0%
+ [ 7, 8) 0 0.0% 2.0%
+ [ 8, 10) 0 0.0% 2.0%
+ [ 10, 13) 2 2.0% 4.0%
+ [ 13, 17) 3 3.0% 7.0%
+ [ 17, 23) 2 2.0% 9.0%
+ [ 23, 31) 9 9.0% 18.0% #
+ [ 31, 43) 5 5.0% 23.0% #
+ [ 43, 59) 17 17.0% 40.0% ##
+ [ 59, 81) 47 47.0% 87.0% #####
+ [ 81, 111) 12 12.0% 99.0% #
+ [111, 152) 1 1.0% 100.0%
+ [152, 208) 0 0.0% 100.0%
+ [208, 285) 0 0.0% 100.0%
+ [285, 390) 0 0.0% 100.0%
+ [390, inf) 0 0.0% 100.0%
diff --git a/runtimes/google/ipc/benchmark/benchmark_test.go b/runtimes/google/ipc/benchmark/benchmark_test.go
new file mode 100644
index 0000000..cb459f3
--- /dev/null
+++ b/runtimes/google/ipc/benchmark/benchmark_test.go
@@ -0,0 +1,121 @@
+package benchmark
+
+import (
+ "os"
+ "testing"
+
+ "v.io/core/veyron/lib/testutil/benchmark"
+ "v.io/core/veyron/profiles"
+
+ "v.io/core/veyron2"
+ "v.io/core/veyron2/rt"
+)
+
+var (
+ vrt veyron2.Runtime
+ serverAddr string
+)
+
+// Benchmarks for non-streaming RPC.
+func runEcho(b *testing.B, payloadSize int) {
+ CallEcho(b, vrt.NewContext(), serverAddr, b.N, payloadSize, benchmark.AddStats(b, 16))
+}
+
+func Benchmark____1B(b *testing.B) { runEcho(b, 1) }
+func Benchmark___10B(b *testing.B) { runEcho(b, 10) }
+func Benchmark__100B(b *testing.B) { runEcho(b, 100) }
+func Benchmark___1KB(b *testing.B) { runEcho(b, 1000) }
+func Benchmark__10KB(b *testing.B) { runEcho(b, 10000) }
+func Benchmark_100KB(b *testing.B) { runEcho(b, 100000) }
+
+// Benchmarks for streaming RPC.
+func runEchoStream(b *testing.B, chunkCnt, payloadSize int) {
+ CallEchoStream(b, vrt.NewContext(), serverAddr, b.N, chunkCnt, payloadSize, benchmark.AddStats(b, 16))
+}
+
+func Benchmark____1_chunk_____1B(b *testing.B) { runEchoStream(b, 1, 1) }
+func Benchmark____1_chunk____10B(b *testing.B) { runEchoStream(b, 1, 10) }
+func Benchmark____1_chunk___100B(b *testing.B) { runEchoStream(b, 1, 100) }
+func Benchmark____1_chunk____1KB(b *testing.B) { runEchoStream(b, 1, 1000) }
+func Benchmark____1_chunk___10KB(b *testing.B) { runEchoStream(b, 1, 10000) }
+func Benchmark____1_chunk__100KB(b *testing.B) { runEchoStream(b, 1, 100000) }
+func Benchmark___10_chunk_____1B(b *testing.B) { runEchoStream(b, 10, 1) }
+func Benchmark___10_chunk____10B(b *testing.B) { runEchoStream(b, 10, 10) }
+func Benchmark___10_chunk___100B(b *testing.B) { runEchoStream(b, 10, 100) }
+func Benchmark___10_chunk____1KB(b *testing.B) { runEchoStream(b, 10, 1000) }
+func Benchmark___10_chunk___10KB(b *testing.B) { runEchoStream(b, 10, 10000) }
+func Benchmark___10_chunk__100KB(b *testing.B) { runEchoStream(b, 10, 100000) }
+func Benchmark__100_chunk_____1B(b *testing.B) { runEchoStream(b, 100, 1) }
+func Benchmark__100_chunk____10B(b *testing.B) { runEchoStream(b, 100, 10) }
+func Benchmark__100_chunk___100B(b *testing.B) { runEchoStream(b, 100, 100) }
+func Benchmark__100_chunk____1KB(b *testing.B) { runEchoStream(b, 100, 1000) }
+func Benchmark__100_chunk___10KB(b *testing.B) { runEchoStream(b, 100, 10000) }
+func Benchmark__100_chunk__100KB(b *testing.B) { runEchoStream(b, 100, 100000) }
+func Benchmark___1K_chunk_____1B(b *testing.B) { runEchoStream(b, 1000, 1) }
+func Benchmark___1K_chunk____10B(b *testing.B) { runEchoStream(b, 1000, 10) }
+func Benchmark___1K_chunk___100B(b *testing.B) { runEchoStream(b, 1000, 100) }
+func Benchmark___1K_chunk____1KB(b *testing.B) { runEchoStream(b, 1000, 1000) }
+func Benchmark___1K_chunk___10KB(b *testing.B) { runEchoStream(b, 1000, 10000) }
+func Benchmark___1K_chunk__100KB(b *testing.B) { runEchoStream(b, 1000, 100000) }
+
+// Benchmarks for per-chunk throughput in streaming RPC.
+func runPerChunk(b *testing.B, payloadSize int) {
+ CallEchoStream(b, vrt.NewContext(), serverAddr, 1, b.N, payloadSize, benchmark.NewStats(1))
+}
+
+func Benchmark__per_chunk____1B(b *testing.B) { runPerChunk(b, 1) }
+func Benchmark__per_chunk___10B(b *testing.B) { runPerChunk(b, 10) }
+func Benchmark__per_chunk__100B(b *testing.B) { runPerChunk(b, 100) }
+func Benchmark__per_chunk___1KB(b *testing.B) { runPerChunk(b, 1000) }
+func Benchmark__per_chunk__10KB(b *testing.B) { runPerChunk(b, 10000) }
+func Benchmark__per_chunk_100KB(b *testing.B) { runPerChunk(b, 100000) }
+
+// Benchmarks for non-streaming RPC while running streaming RPC in background.
+func runMux(b *testing.B, payloadSize, chunkCntB, payloadSizeB int) {
+ _, stop := StartEchoStream(&testing.B{}, vrt.NewContext(), serverAddr, 0, chunkCntB, payloadSizeB, benchmark.NewStats(1))
+ CallEcho(b, vrt.NewContext(), serverAddr, b.N, payloadSize, benchmark.AddStats(b, 16))
+ stop()
+}
+
+func Benchmark___10B_mux__100_chunks___10B(b *testing.B) { runMux(b, 10, 100, 10) }
+func Benchmark___10B_mux__100_chunks__100B(b *testing.B) { runMux(b, 10, 100, 100) }
+func Benchmark___10B_mux__100_chunks___1KB(b *testing.B) { runMux(b, 10, 100, 1000) }
+func Benchmark___10B_mux__100_chunks__10KB(b *testing.B) { runMux(b, 10, 100, 10000) }
+func Benchmark___10B_mux___1K_chunks___10B(b *testing.B) { runMux(b, 10, 1000, 10) }
+func Benchmark___10B_mux___1K_chunks__100B(b *testing.B) { runMux(b, 10, 1000, 100) }
+func Benchmark___10B_mux___1K_chunks___1KB(b *testing.B) { runMux(b, 10, 1000, 1000) }
+func Benchmark___10B_mux___1K_chunks__10KB(b *testing.B) { runMux(b, 10, 1000, 10000) }
+func Benchmark___1KB_mux__100_chunks___10B(b *testing.B) { runMux(b, 1000, 100, 10) }
+func Benchmark___1KB_mux__100_chunks__100B(b *testing.B) { runMux(b, 1000, 100, 100) }
+func Benchmark___1KB_mux__100_chunks___1KB(b *testing.B) { runMux(b, 1000, 100, 1000) }
+func Benchmark___1KB_mux__100_chunks__10KB(b *testing.B) { runMux(b, 1000, 100, 10000) }
+func Benchmark___1KB_mux___1K_chunks___10B(b *testing.B) { runMux(b, 1000, 1000, 10) }
+func Benchmark___1KB_mux___1K_chunks__100B(b *testing.B) { runMux(b, 1000, 1000, 100) }
+func Benchmark___1KB_mux___1K_chunks___1KB(b *testing.B) { runMux(b, 1000, 1000, 1000) }
+func Benchmark___1KB_mux___1K_chunks__10KB(b *testing.B) { runMux(b, 1000, 1000, 10000) }
+
+// A single empty test to avoid:
+// testing: warning: no tests to run
+// from showing up when running benchmarks in this package via "go test"
+func TestNoOp(t *testing.T) {}
+
+func TestMain(m *testing.M) {
+ var err error
+ vrt, err = rt.New()
+ if err != nil {
+ panic(err)
+ }
+
+ var serverStop func()
+ serverAddr, serverStop = StartServer(vrt, profiles.LocalListenSpec)
+
+ // Create a VC to exclude the VC setup time from the benchmark.
+ CallEcho(&testing.B{}, vrt.NewContext(), serverAddr, 1, 0, benchmark.NewStats(1))
+
+ r := benchmark.RunTestMain(m)
+
+ serverStop()
+ vrt.Cleanup()
+
+ os.Exit(r)
+}
diff --git a/runtimes/google/ipc/benchmarks/bmclient/main.go b/runtimes/google/ipc/benchmark/bmclient/main.go
similarity index 77%
rename from runtimes/google/ipc/benchmarks/bmclient/main.go
rename to runtimes/google/ipc/benchmark/bmclient/main.go
index 091421b..e6fc5d3 100644
--- a/runtimes/google/ipc/benchmarks/bmclient/main.go
+++ b/runtimes/google/ipc/benchmark/bmclient/main.go
@@ -8,12 +8,12 @@
"testing"
"time"
+ tbm "v.io/core/veyron/lib/testutil/benchmark"
+ _ "v.io/core/veyron/profiles"
+ "v.io/core/veyron/runtimes/google/ipc/benchmark"
+
"v.io/core/veyron2/rt"
"v.io/core/veyron2/vlog"
-
- "v.io/core/veyron/lib/testutil"
- _ "v.io/core/veyron/profiles"
- "v.io/core/veyron/runtimes/google/ipc/benchmarks"
)
var (
@@ -36,20 +36,20 @@
if *chunkCntMux > 0 && *payloadSizeMux > 0 {
dummyB := testing.B{}
- _, stop := benchmarks.StartEchoStream(&dummyB, vrt.NewContext(), *server, 0, *chunkCntMux, *payloadSizeMux, nil)
+ _, stop := benchmark.StartEchoStream(&dummyB, vrt.NewContext(), *server, 0, *chunkCntMux, *payloadSizeMux, nil)
defer stop()
vlog.Infof("Started background streaming (chunk_size=%d, payload_size=%d)", *chunkCntMux, *payloadSizeMux)
}
dummyB := testing.B{}
- stats := testutil.NewBenchStats(16)
+ stats := tbm.NewStats(16)
now := time.Now()
ctx := vrt.NewContext()
if *chunkCnt == 0 {
- benchmarks.CallEcho(&dummyB, ctx, *server, *iterations, *payloadSize, stats)
+ benchmark.CallEcho(&dummyB, ctx, *server, *iterations, *payloadSize, stats)
} else {
- benchmarks.CallEchoStream(&dummyB, ctx, *server, *iterations, *chunkCnt, *payloadSize, stats)
+ benchmark.CallEchoStream(&dummyB, ctx, *server, *iterations, *chunkCnt, *payloadSize, stats)
}
elapsed := time.Since(now)
diff --git a/runtimes/google/ipc/benchmarks/bmserver/main.go b/runtimes/google/ipc/benchmark/bmserver/main.go
similarity index 78%
rename from runtimes/google/ipc/benchmarks/bmserver/main.go
rename to runtimes/google/ipc/benchmark/bmserver/main.go
index f621c7b..6b68072 100644
--- a/runtimes/google/ipc/benchmarks/bmserver/main.go
+++ b/runtimes/google/ipc/benchmark/bmserver/main.go
@@ -2,12 +2,12 @@
package main
import (
- "v.io/core/veyron2/rt"
- "v.io/core/veyron2/vlog"
-
"v.io/core/veyron/lib/signals"
"v.io/core/veyron/profiles/roaming"
- "v.io/core/veyron/runtimes/google/ipc/benchmarks"
+ "v.io/core/veyron/runtimes/google/ipc/benchmark"
+
+ "v.io/core/veyron2/rt"
+ "v.io/core/veyron2/vlog"
)
func main() {
@@ -17,7 +17,7 @@
}
defer vrt.Cleanup()
- addr, stop := benchmarks.StartServer(vrt, roaming.ListenSpec)
+ addr, stop := benchmark.StartServer(vrt, roaming.ListenSpec)
vlog.Infof("Listening on %s", addr)
defer stop()
<-signals.ShutdownOnSignals(vrt)
diff --git a/runtimes/google/ipc/benchmarks/client.go b/runtimes/google/ipc/benchmark/client.go
similarity index 72%
rename from runtimes/google/ipc/benchmarks/client.go
rename to runtimes/google/ipc/benchmark/client.go
index c920458..2ecdae8 100644
--- a/runtimes/google/ipc/benchmarks/client.go
+++ b/runtimes/google/ipc/benchmark/client.go
@@ -1,4 +1,4 @@
-package benchmarks
+package benchmark
import (
"bytes"
@@ -6,25 +6,20 @@
"testing"
"time"
- "v.io/core/veyron/lib/testutil"
+ "v.io/core/veyron/lib/testutil/benchmark"
"v.io/core/veyron2/context"
"v.io/core/veyron2/vlog"
)
-// CallEcho calls 'Echo' method 'iterations' times with the given payload
-// size, and optionally updates the stats.
-func CallEcho(b *testing.B, ctx *context.T, address string, iterations, payloadSize int, stats *testutil.BenchStats) {
+// CallEcho calls 'Echo' method 'iterations' times with the given payload size.
+func CallEcho(b *testing.B, ctx *context.T, address string, iterations, payloadSize int, stats *benchmark.Stats) {
stub := BenchmarkClient(address)
payload := make([]byte, payloadSize)
for i := range payload {
payload[i] = byte(i & 0xff)
}
- if stats != nil {
- stats.Clear()
- }
-
b.SetBytes(int64(payloadSize) * 2) // 2 for round trip of each payload.
b.ResetTimer() // Exclude setup time from measurement.
@@ -44,38 +39,31 @@
vlog.Fatalf("Echo returned %v, but expected %v", r, payload)
}
- if stats != nil {
- stats.Add(elapsed)
- }
+ stats.Add(elapsed)
}
}
-// CallEchoStream calls 'EchoStream' method 'iterations' times. Each iteration
-// sends 'chunkCnt' chunks on the stream and receives the same number of chunks
-// back. Each chunk has the given payload size. Optionally updates the stats.
-func CallEchoStream(b *testing.B, ctx *context.T, address string, iterations, chunkCnt, payloadSize int, stats *testutil.BenchStats) {
+// CallEchoStream calls 'EchoStream' method 'iterations' times. Each iteration sends
+// 'chunkCnt' chunks on the stream and receives the same number of chunks back. Each
+// chunk has the given payload size.
+func CallEchoStream(b *testing.B, ctx *context.T, address string, iterations, chunkCnt, payloadSize int, stats *benchmark.Stats) {
done, _ := StartEchoStream(b, ctx, address, iterations, chunkCnt, payloadSize, stats)
<-done
}
-// StartEchoStream starts to call 'EchoStream' method 'iterations' times.
-// This does not block, and returns a channel that will receive the number
-// of iterations when it's done. It also returns a callback function to stop
-// the streaming. Each iteration requests 'chunkCnt' chunks on the stream and
-// receives that number of chunks back. Each chunk has the given payload size.
-// Optionally updates the stats. Zero 'iterations' means unlimited.
-func StartEchoStream(b *testing.B, ctx *context.T, address string, iterations, chunkCnt, payloadSize int, stats *testutil.BenchStats) (<-chan int, func()) {
+// StartEchoStream starts to call 'EchoStream' method 'iterations' times. This does
+// not block, and returns a channel that will receive the number of iterations when
+// it's done. It also returns a callback function to stop the streaming. Each iteration
+// requests 'chunkCnt' chunks on the stream and receives that number of chunks back.
+// Each chunk has the given payload size. Zero 'iterations' means unlimited.
+func StartEchoStream(b *testing.B, ctx *context.T, address string, iterations, chunkCnt, payloadSize int, stats *benchmark.Stats) (<-chan int, func()) {
stub := BenchmarkClient(address)
payload := make([]byte, payloadSize)
for i := range payload {
payload[i] = byte(i & 0xff)
}
- if stats != nil {
- stats.Clear()
- }
-
- done, stop := make(chan int, 1), make(chan struct{})
+ stop := make(chan struct{})
stopped := func() bool {
select {
case <-stop:
@@ -84,6 +72,7 @@
return false
}
}
+ done := make(chan int, 1)
if b.N > 0 {
// 2 for round trip of each payload.
@@ -145,9 +134,7 @@
elapsed := time.Since(start)
b.StopTimer()
- if stats != nil {
- stats.Add(elapsed)
- }
+ stats.Add(elapsed)
}
done <- n
diff --git a/runtimes/google/ipc/benchmarks/glob/README.txt b/runtimes/google/ipc/benchmark/glob/README.txt
similarity index 100%
rename from runtimes/google/ipc/benchmarks/glob/README.txt
rename to runtimes/google/ipc/benchmark/glob/README.txt
diff --git a/runtimes/google/ipc/benchmarks/glob/doc.go b/runtimes/google/ipc/benchmark/glob/doc.go
similarity index 100%
rename from runtimes/google/ipc/benchmarks/glob/doc.go
rename to runtimes/google/ipc/benchmark/glob/doc.go
diff --git a/runtimes/google/ipc/benchmarks/glob/glob_test.go b/runtimes/google/ipc/benchmark/glob/glob_test.go
similarity index 100%
rename from runtimes/google/ipc/benchmarks/glob/glob_test.go
rename to runtimes/google/ipc/benchmark/glob/glob_test.go
diff --git a/runtimes/google/ipc/benchmarks/server.go b/runtimes/google/ipc/benchmark/server.go
similarity index 88%
rename from runtimes/google/ipc/benchmarks/server.go
rename to runtimes/google/ipc/benchmark/server.go
index 5e4ebdb..3a55f31 100644
--- a/runtimes/google/ipc/benchmarks/server.go
+++ b/runtimes/google/ipc/benchmark/server.go
@@ -1,7 +1,7 @@
-package benchmarks
+package benchmark
import (
- sflag "v.io/core/veyron/security/flag"
+ "v.io/core/veyron/security/flag"
"v.io/core/veyron2"
"v.io/core/veyron2/ipc"
@@ -41,7 +41,7 @@
vlog.Fatalf("Listen failed: %v", err)
}
- if err := server.Serve("", BenchmarkServer(&impl{}), sflag.NewAuthorizerOrDie()); err != nil {
+ if err := server.Serve("", BenchmarkServer(&impl{}), flag.NewAuthorizerOrDie()); err != nil {
vlog.Fatalf("Serve failed: %v", err)
}
return naming.JoinAddressName(eps[0].String(), ""), func() {
diff --git a/runtimes/google/ipc/benchmarks/service.vdl b/runtimes/google/ipc/benchmark/service.vdl
similarity index 95%
rename from runtimes/google/ipc/benchmarks/service.vdl
rename to runtimes/google/ipc/benchmark/service.vdl
index d6ac0e8..3f42b77 100644
--- a/runtimes/google/ipc/benchmarks/service.vdl
+++ b/runtimes/google/ipc/benchmark/service.vdl
@@ -1,6 +1,6 @@
// package benchmark provides simple tools to measure the performance of the
// IPC system.
-package benchmarks
+package benchmark
import (
"v.io/core/veyron2/services/security/access"
diff --git a/runtimes/google/ipc/benchmarks/service.vdl.go b/runtimes/google/ipc/benchmark/service.vdl.go
similarity index 99%
rename from runtimes/google/ipc/benchmarks/service.vdl.go
rename to runtimes/google/ipc/benchmark/service.vdl.go
index 6613195..a2485f8 100644
--- a/runtimes/google/ipc/benchmarks/service.vdl.go
+++ b/runtimes/google/ipc/benchmark/service.vdl.go
@@ -3,7 +3,7 @@
// package benchmark provides simple tools to measure the performance of the
// IPC system.
-package benchmarks
+package benchmark
import (
"v.io/core/veyron2/services/security/access"
@@ -268,7 +268,7 @@
// descBenchmark hides the desc to keep godoc clean.
var descBenchmark = __ipc.InterfaceDesc{
Name: "Benchmark",
- PkgPath: "v.io/core/veyron/runtimes/google/ipc/benchmarks",
+ PkgPath: "v.io/core/veyron/runtimes/google/ipc/benchmark",
Methods: []__ipc.MethodDesc{
{
Name: "Echo",
diff --git a/runtimes/google/ipc/benchmarks/README.txt b/runtimes/google/ipc/benchmarks/README.txt
deleted file mode 100644
index e2edd4f..0000000
--- a/runtimes/google/ipc/benchmarks/README.txt
+++ /dev/null
@@ -1,155 +0,0 @@
-This directory contains code uses to measure the performance of the Veyron IPC
-stack.
-
-================================================================================
-
-The ipc_test.go file uses GO's testing package to run benchmarks. Each
-benchmark involves one server and one client. The server has two very simple
-methods that echo the data received from the client back to the client.
-
-client ---- Echo(payload) ----> server
-client <--- return payload ---- server
-
-There are two versions of the Echo method:
- - Echo(payload []byte) ([]byte], error)
- - EchoStream() <[]byte,[]byte> error
-
-The first benchmarks use the non-streaming version of Echo with a varying
-payload size. The second benchmarks use the streaming version with varying
-number of chunks and payload sizes. The third one is for measuring the
-performance with multiple clients hosted in the same process.
-
-All these benchmarks create a VC before measurements begin. So, the VC creation
-overhead is excluded.
-
-$ veyron go test -test.bench=. -timeout=1h -test.cpu=1 -test.benchtime=5s \
- veyron/runtimes/google/ipc/benchmarks
-
-Benchmark____1B 2000 5144219 ns/op 0.00 MB/s
-Benchmark___10B 2000 5526448 ns/op 0.00 MB/s
-Benchmark___1KB 2000 4528221 ns/op 0.44 MB/s
-Benchmark_100KB 1000 7569096 ns/op 26.42 MB/s
-Benchmark____1_chunk_____1B 1000 8945290 ns/op 0.00 MB/s
-Benchmark____1_chunk____10B 1000 9711084 ns/op 0.00 MB/s
-Benchmark____1_chunk____1KB 1000 8541689 ns/op 0.23 MB/s
-Benchmark____1_chunk___10KB 1000 8972995 ns/op 2.23 MB/s
-Benchmark___10_chunks____1B 1000 13114807 ns/op 0.00 MB/s
-Benchmark___10_chunks___10B 1000 13219493 ns/op 0.02 MB/s
-Benchmark___10_chunks___1KB 1000 13292236 ns/op 1.50 MB/s
-Benchmark___10_chunks__10KB 500 15733197 ns/op 12.71 MB/s
-Benchmark__100_chunks____1B 500 45078939 ns/op 0.00 MB/s
-Benchmark__100_chunks___10B 200 49113585 ns/op 0.04 MB/s
-Benchmark__100_chunks___1KB 100 57982457 ns/op 3.45 MB/s
-Benchmark__100_chunks__10KB 100 81632487 ns/op 24.50 MB/s
-Benchmark__per_chunk____1B 50000 357880 ns/op 0.01 MB/s
-Benchmark__per_chunk___10B 20000 476941 ns/op 0.04 MB/s
-Benchmark__per_chunk___1KB 10000 806491 ns/op 2.48 MB/s
-Benchmark__per_chunk__10KB 10000 1185081 ns/op 16.88 MB/s
-Benchmark____1B_mux___10_chunks___10B 1000 20235386 ns/op 0.00 MB/s
-Benchmark____1B_mux___10_chunks___1KB 500 21346428 ns/op 0.00 MB/s
-Benchmark____1B_mux__100_chunks___10B 100 72942436 ns/op 0.00 MB/s
-Benchmark____1B_mux__100_chunks___1KB 100 81538481 ns/op 0.00 MB/s
-
-'Benchmark___1KB' shows that it takes an average of 4.528 ms to
-execute a simple Echo RPC with a 1 KB payload.
-
-'Benchmark___10_chunks___1KB' shows that a streaming RPC with the
-same payload (i.e. 10 chunks of 1 KB) takes about 13.292 ms on average.
-
-'Benchmark__per_chunk___1KB' shows that sending a stream of 1 KB chunks
-takes an average of 0.806 ms per chunk.
-
-'Benchmark____1B_mux___10_chunks___1KB' shows that it takes an average
-of 21.346 ms to execute a simple Echo RPC with a 1 B payload while streaming
-10 chunks of 1 KB payloads continuously in the same process.
-
-bm/main.go does the same benchmarks as ipc_test.go but with more varying
-configurations and optional histogram outputs.
-
-$ veyron go run veyron/runtimes/google/ipc/benchmarks/bm/main.go \
- -test.cpu=1,2 -test.benchtime=5s -histogram
-
-RESULTS.txt has the latest benchmark results with main.go
-
-================================================================================
-
-bmserver/main.go and bmclient/main.go are simple command-line tools to run the
-benchmark server and client as separate processes. Unlike the benchmarks above,
-this test includes the startup cost of name resolution, creating the VC, etc. in
-the first RPC.
-
-$ veyron go run veyron/runtimes/google/ipc/benchmarks/bmserver/main.go \
- -veyron.tcp.address=localhost:8888 -acl='{"In":{"...":"R"}}'
-
-(In a different shell)
-$ veyron go run veyron/runtimes/google/ipc/benchmarks/bmclient/main.go \
- -server=/localhost:8888 -iterations=100 -chunk_count=0 -payload_size=10
-iterations: 100 chunk_count: 0 payload_size: 10
-elapsed time: 619.75741ms
-Histogram (unit: ms)
-Count: 100 Min: 4 Max: 54 Avg: 5.65
-------------------------------------------------------------
-[ 4, 5) 42 42.0% 42.0% ####
-[ 5, 6) 32 32.0% 74.0% ###
-[ 6, 7) 8 8.0% 82.0% #
-[ 7, 9) 13 13.0% 95.0% #
-[ 9, 11) 3 3.0% 98.0%
-[ 11, 14) 1 1.0% 99.0%
-[ 14, 18) 0 0.0% 99.0%
-[ 18, 24) 0 0.0% 99.0%
-[ 24, 32) 0 0.0% 99.0%
-[ 32, 42) 0 0.0% 99.0%
-[ 42, 55) 1 1.0% 100.0%
-[ 55, 72) 0 0.0% 100.0%
-[ 72, 94) 0 0.0% 100.0%
-[ 94, 123) 0 0.0% 100.0%
-[123, 161) 0 0.0% 100.0%
-[161, 211) 0 0.0% 100.0%
-[211, inf) 0 0.0% 100.0%
-
-
-On a Raspberry Pi, everything is much slower. The same tests show the following
-results:
-
-$ ./benchmarks.test -test.bench=. -test.cpu=1 -test.benchtime=5s 2>/dev/null
-PASS
-Benchmark____1B 500 21316148 ns/op
-Benchmark___10B 500 23304638 ns/op
-Benchmark__100B 500 21860446 ns/op
-Benchmark___1KB 500 24000346 ns/op
-Benchmark__10KB 200 37530575 ns/op
-Benchmark_100KB 100 136243310 ns/op
-Benchmark_N_RPCs____1_chunk_____1B 500 19957506 ns/op
-Benchmark_N_RPCs____1_chunk____10B 500 22868392 ns/op
-Benchmark_N_RPCs____1_chunk___100B 500 19635412 ns/op
-Benchmark_N_RPCs____1_chunk____1KB 500 22572190 ns/op
-Benchmark_N_RPCs____1_chunk___10KB 500 37570948 ns/op
-Benchmark_N_RPCs___10_chunks___1KB 100 51670740 ns/op
-Benchmark_N_RPCs__100_chunks___1KB 50 364938740 ns/op
-Benchmark_N_RPCs_1000_chunks___1KB 2 3586374500 ns/op
-Benchmark_1_RPC_N_chunks_____1B 10000 1034042 ns/op
-Benchmark_1_RPC_N_chunks____10B 5000 1894875 ns/op
-Benchmark_1_RPC_N_chunks___100B 5000 2857289 ns/op
-Benchmark_1_RPC_N_chunks____1KB 5000 6465839 ns/op
-Benchmark_1_RPC_N_chunks___10KB 100 80019430 ns/op
-Benchmark_1_RPC_N_chunks__100KB Killed
-
-The simple 1 KB RPCs take an average of 24 ms. The streaming equivalent takes
-about 22 ms, and streaming many 1 KB chunks takes about 6.5 ms per chunk.
-
-
-$ ./bmserver --address=localhost:8888 --acl='{"...":"A"}'
-
-$ ./bmclient --server=/localhost:8888 --count=10 --payload_size=1000
-CallEcho 0 2573406000
-CallEcho 1 44669000
-CallEcho 2 54442000
-CallEcho 3 33934000
-CallEcho 4 47985000
-CallEcho 5 61324000
-CallEcho 6 51654000
-CallEcho 7 47043000
-CallEcho 8 44995000
-CallEcho 9 53166000
-
-On the pi, the first RPC takes ~2.5 sec to execute.
diff --git a/runtimes/google/ipc/benchmarks/RESULTS.txt b/runtimes/google/ipc/benchmarks/RESULTS.txt
deleted file mode 100644
index 979b2ac..0000000
--- a/runtimes/google/ipc/benchmarks/RESULTS.txt
+++ /dev/null
@@ -1,2140 +0,0 @@
-Date: 12/14/2014
-Platform: Intel(R) Xeon(R) CPU E5-2689 0 @ 2.60GHz, 66114888KB Memory
-
-$ veyron go run veyron/runtimes/google/ipc/benchmarks/bm/main.go \
- -test.cpu=1,2 -test.benchtime=5s -histogram
-
-Benchmark____1B 3000 2260153 ns/op 0.00 MB/s
-Benchmark____1B-2 3000 2362339 ns/op 0.00 MB/s
-Benchmark___10B 3000 2595581 ns/op 0.01 MB/s
-Benchmark___10B-2 3000 2372671 ns/op 0.01 MB/s
-Benchmark__100B 3000 2690733 ns/op 0.07 MB/s
-Benchmark__100B-2 3000 2419120 ns/op 0.08 MB/s
-Benchmark___1KB 3000 2498211 ns/op 0.80 MB/s
-Benchmark___1KB-2 3000 2244818 ns/op 0.89 MB/s
-Benchmark__10KB 3000 2740536 ns/op 7.30 MB/s
-Benchmark__10KB-2 3000 2394824 ns/op 8.35 MB/s
-Benchmark_100KB 2000 5581491 ns/op 35.83 MB/s
-Benchmark_100KB-2 2000 4127286 ns/op 48.46 MB/s
-
-Benchmark____1_chunk_____1B 3000 2744128 ns/op 0.00 MB/s
-Benchmark____1_chunk_____1B-2 3000 2347418 ns/op 0.00 MB/s
-Benchmark____1_chunk____10B 3000 2857309 ns/op 0.01 MB/s
-Benchmark____1_chunk____10B-2 3000 2363346 ns/op 0.01 MB/s
-Benchmark____1_chunk___100B 3000 2922993 ns/op 0.07 MB/s
-Benchmark____1_chunk___100B-2 3000 2558699 ns/op 0.08 MB/s
-Benchmark____1_chunk____1KB 3000 2646432 ns/op 0.76 MB/s
-Benchmark____1_chunk____1KB-2 3000 2400649 ns/op 0.83 MB/s
-Benchmark____1_chunk___10KB 3000 2954627 ns/op 6.77 MB/s
-Benchmark____1_chunk___10KB-2 3000 2546084 ns/op 7.86 MB/s
-Benchmark____1_chunk__100KB 2000 5517042 ns/op 36.25 MB/s
-Benchmark____1_chunk__100KB-2 2000 4157872 ns/op 48.10 MB/s
-Benchmark___10_chunks____1B 2000 4177247 ns/op 0.00 MB/s
-Benchmark___10_chunks____1B-2 2000 3432532 ns/op 0.01 MB/s
-Benchmark___10_chunks___10B 2000 4664935 ns/op 0.04 MB/s
-Benchmark___10_chunks___10B-2 2000 3548029 ns/op 0.06 MB/s
-Benchmark___10_chunks__100B 2000 4845710 ns/op 0.41 MB/s
-Benchmark___10_chunks__100B-2 2000 3658666 ns/op 0.55 MB/s
-Benchmark___10_chunks___1KB 2000 4971196 ns/op 4.02 MB/s
-Benchmark___10_chunks___1KB-2 2000 3662827 ns/op 5.46 MB/s
-Benchmark___10_chunks__10KB 1000 7533684 ns/op 26.55 MB/s
-Benchmark___10_chunks__10KB-2 2000 4922363 ns/op 40.63 MB/s
-Benchmark___10_chunks_100KB 200 31539312 ns/op 63.41 MB/s
-Benchmark___10_chunks_100KB-2 500 18574440 ns/op 107.67 MB/s
-Benchmark__100_chunks____1B 500 18036549 ns/op 0.01 MB/s
-Benchmark__100_chunks____1B-2 1000 12395699 ns/op 0.02 MB/s
-Benchmark__100_chunks___10B 300 20669375 ns/op 0.10 MB/s
-Benchmark__100_chunks___10B-2 500 12634978 ns/op 0.16 MB/s
-Benchmark__100_chunks__100B 300 23164692 ns/op 0.86 MB/s
-Benchmark__100_chunks__100B-2 500 13821225 ns/op 1.45 MB/s
-Benchmark__100_chunks___1KB 300 26071439 ns/op 7.67 MB/s
-Benchmark__100_chunks___1KB-2 500 15738134 ns/op 12.71 MB/s
-Benchmark__100_chunks__10KB 100 50248311 ns/op 39.80 MB/s
-Benchmark__100_chunks__10KB-2 300 28614761 ns/op 69.89 MB/s
-Benchmark__100_chunks_100KB 30 272889576 ns/op 73.29 MB/s
-Benchmark__100_chunks_100KB-2 50 149680912 ns/op 133.62 MB/s
-Benchmark___1K_chunks____1B 100 111621410 ns/op 0.02 MB/s
-Benchmark___1K_chunks____1B-2 100 103311101 ns/op 0.02 MB/s
-Benchmark___1K_chunks___10B 50 189580683 ns/op 0.11 MB/s
-Benchmark___1K_chunks___10B-2 100 107068429 ns/op 0.19 MB/s
-Benchmark___1K_chunks__100B 30 223128293 ns/op 0.90 MB/s
-Benchmark___1K_chunks__100B-2 50 125690815 ns/op 1.59 MB/s
-Benchmark___1K_chunks___1KB 30 251956982 ns/op 7.94 MB/s
-Benchmark___1K_chunks___1KB-2 50 144214400 ns/op 13.87 MB/s
-Benchmark___1K_chunks__10KB 20 474946063 ns/op 42.11 MB/s
-Benchmark___1K_chunks__10KB-2 30 267531367 ns/op 74.76 MB/s
-Benchmark___1K_chunks_100KB 2 2675372295 ns/op 74.76 MB/s
-Benchmark___1K_chunks_100KB-2 5 1421481350 ns/op 140.70 MB/s
-
-Benchmark__per_chunk____1B 50000 163939 ns/op 0.01 MB/s
-Benchmark__per_chunk____1B-2 50000 118409 ns/op 0.02 MB/s
-Benchmark__per_chunk___10B 20000 321908 ns/op 0.06 MB/s
-Benchmark__per_chunk___10B-2 50000 176818 ns/op 0.11 MB/s
-Benchmark__per_chunk__100B 20000 411514 ns/op 0.49 MB/s
-Benchmark__per_chunk__100B-2 30000 231565 ns/op 0.86 MB/s
-Benchmark__per_chunk___1KB 20000 423999 ns/op 4.72 MB/s
-Benchmark__per_chunk___1KB-2 30000 248721 ns/op 8.04 MB/s
-Benchmark__per_chunk__10KB 10000 631536 ns/op 31.67 MB/s
-Benchmark__per_chunk__10KB-2 20000 346868 ns/op 57.66 MB/s
-Benchmark__per_chunk_100KB 3000 2613430 ns/op 76.53 MB/s
-Benchmark__per_chunk_100KB-2 5000 1369809 ns/op 146.01 MB/s
-
-Benchmark___10B_mux__100_chunks___10B 500 18817141 ns/op 0.00 MB/s
-Benchmark___10B_mux__100_chunks___10B-2 1000 7104449 ns/op 0.00 MB/s
-Benchmark___10B_mux__100_chunks__100B 300 21167617 ns/op 0.00 MB/s
-Benchmark___10B_mux__100_chunks__100B-2 1000 8372251 ns/op 0.00 MB/s
-Benchmark___10B_mux__100_chunks___1KB 300 22817830 ns/op 0.00 MB/s
-Benchmark___10B_mux__100_chunks___1KB-2 1000 8831943 ns/op 0.00 MB/s
-Benchmark___10B_mux___1K_chunks___10B 100 123136622 ns/op 0.00 MB/s
-Benchmark___10B_mux___1K_chunks___10B-2 300 22274569 ns/op 0.00 MB/s
-Benchmark___10B_mux___1K_chunks__100B 100 143814971 ns/op 0.00 MB/s
-Benchmark___10B_mux___1K_chunks__100B-2 200 34125016 ns/op 0.00 MB/s
-Benchmark___10B_mux___1K_chunks___1KB 100 136987808 ns/op 0.00 MB/s
-Benchmark___10B_mux___1K_chunks___1KB-2 200 35831221 ns/op 0.00 MB/s
-Benchmark__100B_mux__100_chunks___10B 500 20748811 ns/op 0.01 MB/s
-Benchmark__100B_mux__100_chunks___10B-2 1000 7604070 ns/op 0.03 MB/s
-Benchmark__100B_mux__100_chunks__100B 300 21922577 ns/op 0.01 MB/s
-Benchmark__100B_mux__100_chunks__100B-2 1000 9164254 ns/op 0.02 MB/s
-Benchmark__100B_mux__100_chunks___1KB 300 23892634 ns/op 0.01 MB/s
-Benchmark__100B_mux__100_chunks___1KB-2 1000 9288578 ns/op 0.02 MB/s
-Benchmark__100B_mux___1K_chunks___10B 100 120357166 ns/op 0.00 MB/s
-Benchmark__100B_mux___1K_chunks___10B-2 300 23110788 ns/op 0.01 MB/s
-Benchmark__100B_mux___1K_chunks__100B 100 146211502 ns/op 0.00 MB/s
-Benchmark__100B_mux___1K_chunks__100B-2 200 36485527 ns/op 0.01 MB/s
-Benchmark__100B_mux___1K_chunks___1KB 100 145242261 ns/op 0.00 MB/s
-Benchmark__100B_mux___1K_chunks___1KB-2 200 37420006 ns/op 0.01 MB/s
-
-
-% The followings are the full output with histograms.
-
-================================================================================
-Echo RPC
-================================================================================
-Benchmark____1B 3000 2260153 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 1 Max: 3 Avg: 1.54
-------------------------------------------------------------
-[ 1, 2) 1754 58.5% 58.5% ######
-[ 2, 3) 864 28.8% 87.3% ###
-[ 3, 4) 382 12.7% 100.0% #
-[ 4, 5) 0 0.0% 100.0%
-[ 5, 6) 0 0.0% 100.0%
-[ 6, 7) 0 0.0% 100.0%
-[ 7, 8) 0 0.0% 100.0%
-[ 8, 9) 0 0.0% 100.0%
-[ 9, 10) 0 0.0% 100.0%
-[ 10, 11) 0 0.0% 100.0%
-[ 11, 12) 0 0.0% 100.0%
-[ 12, 13) 0 0.0% 100.0%
-[ 13, 14) 0 0.0% 100.0%
-[ 14, 15) 0 0.0% 100.0%
-[ 15, 16) 0 0.0% 100.0%
-[ 16, 17) 0 0.0% 100.0%
-[ 17, inf) 0 0.0% 100.0%
-Benchmark____1B-2 3000 2362339 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 1 Max: 4 Avg: 1.98
-------------------------------------------------------------
-[ 1, 2) 608 20.3% 20.3% ##
-[ 2, 3) 1864 62.1% 82.4% ######
-[ 3, 4) 520 17.3% 99.7% ##
-[ 4, 5) 8 0.3% 100.0%
-[ 5, 6) 0 0.0% 100.0%
-[ 6, 7) 0 0.0% 100.0%
-[ 7, 8) 0 0.0% 100.0%
-[ 8, 9) 0 0.0% 100.0%
-[ 9, 10) 0 0.0% 100.0%
-[ 10, 11) 0 0.0% 100.0%
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 15) 0 0.0% 100.0%
-[ 15, 17) 0 0.0% 100.0%
-[ 17, 19) 0 0.0% 100.0%
-[ 19, 21) 0 0.0% 100.0%
-[ 21, 23) 0 0.0% 100.0%
-[ 23, inf) 0 0.0% 100.0%
-Benchmark___10B 3000 2595581 ns/op 0.01 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 2 Max: 5 Avg: 2.37
-------------------------------------------------------------
-[ 2, 3) 2459 82.0% 82.0% ########
-[ 3, 4) 45 1.5% 83.5%
-[ 4, 5) 437 14.6% 98.0% #
-[ 5, 6) 59 2.0% 100.0%
-[ 6, 7) 0 0.0% 100.0%
-[ 7, 8) 0 0.0% 100.0%
-[ 8, 9) 0 0.0% 100.0%
-[ 9, 10) 0 0.0% 100.0%
-[ 10, 11) 0 0.0% 100.0%
-[ 11, 12) 0 0.0% 100.0%
-[ 12, 14) 0 0.0% 100.0%
-[ 14, 16) 0 0.0% 100.0%
-[ 16, 18) 0 0.0% 100.0%
-[ 18, 20) 0 0.0% 100.0%
-[ 20, 22) 0 0.0% 100.0%
-[ 22, 24) 0 0.0% 100.0%
-[ 24, inf) 0 0.0% 100.0%
-Benchmark___10B-2 3000 2372671 ns/op 0.01 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 1 Max: 5 Avg: 1.93
-------------------------------------------------------------
-[ 1, 2) 866 28.9% 28.9% ###
-[ 2, 3) 1691 56.4% 85.2% ######
-[ 3, 4) 233 7.8% 93.0% #
-[ 4, 5) 201 6.7% 99.7% #
-[ 5, 6) 9 0.3% 100.0%
-[ 6, 7) 0 0.0% 100.0%
-[ 7, 8) 0 0.0% 100.0%
-[ 8, 9) 0 0.0% 100.0%
-[ 9, 11) 0 0.0% 100.0%
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 15) 0 0.0% 100.0%
-[ 15, 17) 0 0.0% 100.0%
-[ 17, 20) 0 0.0% 100.0%
-[ 20, 23) 0 0.0% 100.0%
-[ 23, 26) 0 0.0% 100.0%
-[ 26, 29) 0 0.0% 100.0%
-[ 29, inf) 0 0.0% 100.0%
-Benchmark__100B 3000 2690733 ns/op 0.07 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 2 Max: 7 Avg: 2.48
-------------------------------------------------------------
-[ 2, 3) 2544 84.8% 84.8% ########
-[ 3, 4) 82 2.7% 87.5%
-[ 4, 5) 0 0.0% 87.5%
-[ 5, 6) 146 4.9% 92.4%
-[ 6, 7) 226 7.5% 99.9% #
-[ 7, 8) 2 0.1% 100.0%
-[ 8, 9) 0 0.0% 100.0%
-[ 9, 11) 0 0.0% 100.0%
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 15) 0 0.0% 100.0%
-[ 15, 17) 0 0.0% 100.0%
-[ 17, 20) 0 0.0% 100.0%
-[ 20, 23) 0 0.0% 100.0%
-[ 23, 27) 0 0.0% 100.0%
-[ 27, 31) 0 0.0% 100.0%
-[ 31, 35) 0 0.0% 100.0%
-[ 35, inf) 0 0.0% 100.0%
-Benchmark__100B-2 3000 2419120 ns/op 0.08 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 1 Max: 6 Avg: 2.05
-------------------------------------------------------------
-[ 1, 2) 647 21.6% 21.6% ##
-[ 2, 3) 2027 67.6% 89.1% #######
-[ 3, 4) 1 0.0% 89.2%
-[ 4, 5) 184 6.1% 95.3% #
-[ 5, 6) 128 4.3% 99.6%
-[ 6, 7) 13 0.4% 100.0%
-[ 7, 8) 0 0.0% 100.0%
-[ 8, 10) 0 0.0% 100.0%
-[ 10, 12) 0 0.0% 100.0%
-[ 12, 14) 0 0.0% 100.0%
-[ 14, 16) 0 0.0% 100.0%
-[ 16, 19) 0 0.0% 100.0%
-[ 19, 22) 0 0.0% 100.0%
-[ 22, 26) 0 0.0% 100.0%
-[ 26, 30) 0 0.0% 100.0%
-[ 30, 34) 0 0.0% 100.0%
-[ 34, inf) 0 0.0% 100.0%
-Benchmark___1KB 3000 2498211 ns/op 0.80 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 1 Max: 10 Avg: 1.76
-------------------------------------------------------------
-[ 1, 2) 2191 73.0% 73.0% #######
-[ 2, 3) 449 15.0% 88.0% #
-[ 3, 4) 75 2.5% 90.5%
-[ 4, 5) 3 0.1% 90.6%
-[ 5, 6) 6 0.2% 90.8%
-[ 6, 8) 240 8.0% 98.8% #
-[ 8, 10) 35 1.2% 100.0%
-[ 10, 12) 1 0.0% 100.0%
-[ 12, 15) 0 0.0% 100.0%
-[ 15, 18) 0 0.0% 100.0%
-[ 18, 22) 0 0.0% 100.0%
-[ 22, 27) 0 0.0% 100.0%
-[ 27, 32) 0 0.0% 100.0%
-[ 32, 38) 0 0.0% 100.0%
-[ 38, 45) 0 0.0% 100.0%
-[ 45, 54) 0 0.0% 100.0%
-[ 54, inf) 0 0.0% 100.0%
-Benchmark___1KB-2 3000 2244818 ns/op 0.89 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 1 Max: 7 Avg: 1.62
-------------------------------------------------------------
-[ 1, 2) 1949 65.0% 65.0% ######
-[ 2, 3) 795 26.5% 91.5% ###
-[ 3, 4) 0 0.0% 91.5%
-[ 4, 5) 63 2.1% 93.6%
-[ 5, 6) 112 3.7% 97.3%
-[ 6, 7) 72 2.4% 99.7%
-[ 7, 9) 9 0.3% 100.0%
-[ 9, 11) 0 0.0% 100.0%
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 15) 0 0.0% 100.0%
-[ 15, 18) 0 0.0% 100.0%
-[ 18, 21) 0 0.0% 100.0%
-[ 21, 25) 0 0.0% 100.0%
-[ 25, 29) 0 0.0% 100.0%
-[ 29, 34) 0 0.0% 100.0%
-[ 34, 40) 0 0.0% 100.0%
-[ 40, inf) 0 0.0% 100.0%
-Benchmark__10KB 3000 2740536 ns/op 7.30 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 2 Max: 10 Avg: 2.62
-------------------------------------------------------------
-[ 2, 3) 2652 88.4% 88.4% #########
-[ 3, 4) 72 2.4% 90.8%
-[ 4, 5) 0 0.0% 90.8%
-[ 5, 6) 0 0.0% 90.8%
-[ 6, 7) 0 0.0% 90.8%
-[ 7, 9) 93 3.1% 93.9%
-[ 9, 11) 183 6.1% 100.0% #
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 16) 0 0.0% 100.0%
-[ 16, 19) 0 0.0% 100.0%
-[ 19, 23) 0 0.0% 100.0%
-[ 23, 27) 0 0.0% 100.0%
-[ 27, 32) 0 0.0% 100.0%
-[ 32, 38) 0 0.0% 100.0%
-[ 38, 44) 0 0.0% 100.0%
-[ 44, 52) 0 0.0% 100.0%
-[ 52, inf) 0 0.0% 100.0%
-Benchmark__10KB-2 3000 2394824 ns/op 8.35 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 1 Max: 8 Avg: 1.84
-------------------------------------------------------------
-[ 1, 2) 1531 51.0% 51.0% #####
-[ 2, 3) 1214 40.5% 91.5% ####
-[ 3, 4) 0 0.0% 91.5%
-[ 4, 5) 0 0.0% 91.5%
-[ 5, 6) 83 2.8% 94.3%
-[ 6, 7) 69 2.3% 96.6%
-[ 7, 9) 103 3.4% 100.0%
-[ 9, 11) 0 0.0% 100.0%
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 16) 0 0.0% 100.0%
-[ 16, 19) 0 0.0% 100.0%
-[ 19, 23) 0 0.0% 100.0%
-[ 23, 27) 0 0.0% 100.0%
-[ 27, 32) 0 0.0% 100.0%
-[ 32, 38) 0 0.0% 100.0%
-[ 38, 44) 0 0.0% 100.0%
-[ 44, inf) 0 0.0% 100.0%
-Benchmark_100KB 2000 5581491 ns/op 35.83 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 3 Max: 15 Avg: 4.93
-------------------------------------------------------------
-[ 3, 4) 1253 62.7% 62.7% ######
-[ 4, 5) 259 13.0% 75.6% #
-[ 5, 6) 124 6.2% 81.8% #
-[ 6, 7) 1 0.1% 81.9%
-[ 7, 8) 0 0.0% 81.9%
-[ 8, 10) 0 0.0% 81.9%
-[ 10, 12) 84 4.2% 86.1%
-[ 12, 15) 274 13.7% 99.8% #
-[ 15, 18) 5 0.2% 100.0%
-[ 18, 22) 0 0.0% 100.0%
-[ 22, 27) 0 0.0% 100.0%
-[ 27, 33) 0 0.0% 100.0%
-[ 33, 40) 0 0.0% 100.0%
-[ 40, 48) 0 0.0% 100.0%
-[ 48, 58) 0 0.0% 100.0%
-[ 58, 69) 0 0.0% 100.0%
-[ 69, inf) 0 0.0% 100.0%
-Benchmark_100KB-2 2000 4127286 ns/op 48.46 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 2 Max: 10 Avg: 3.78
-------------------------------------------------------------
-[ 2, 3) 373 18.7% 18.7% ##
-[ 3, 4) 1286 64.3% 83.0% ######
-[ 4, 5) 0 0.0% 83.0%
-[ 5, 6) 0 0.0% 83.0%
-[ 6, 7) 0 0.0% 83.0%
-[ 7, 9) 116 5.8% 88.8% #
-[ 9, 11) 225 11.2% 100.0% #
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 16) 0 0.0% 100.0%
-[ 16, 19) 0 0.0% 100.0%
-[ 19, 23) 0 0.0% 100.0%
-[ 23, 27) 0 0.0% 100.0%
-[ 27, 32) 0 0.0% 100.0%
-[ 32, 38) 0 0.0% 100.0%
-[ 38, 44) 0 0.0% 100.0%
-[ 44, 52) 0 0.0% 100.0%
-[ 52, inf) 0 0.0% 100.0%
-
-================================================================================
-Echo streaming RPC
-================================================================================
-Benchmark____1_chunk_____1B 3000 2744128 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 2 Max: 4 Avg: 2.31
-------------------------------------------------------------
-[ 2, 3) 2072 69.1% 69.1% #######
-[ 3, 4) 921 30.7% 99.8% ###
-[ 4, 5) 7 0.2% 100.0%
-[ 5, 6) 0 0.0% 100.0%
-[ 6, 7) 0 0.0% 100.0%
-[ 7, 8) 0 0.0% 100.0%
-[ 8, 9) 0 0.0% 100.0%
-[ 9, 10) 0 0.0% 100.0%
-[ 10, 11) 0 0.0% 100.0%
-[ 11, 12) 0 0.0% 100.0%
-[ 12, 13) 0 0.0% 100.0%
-[ 13, 14) 0 0.0% 100.0%
-[ 14, 15) 0 0.0% 100.0%
-[ 15, 16) 0 0.0% 100.0%
-[ 16, 17) 0 0.0% 100.0%
-[ 17, 18) 0 0.0% 100.0%
-[ 18, inf) 0 0.0% 100.0%
-Benchmark____1_chunk_____1B-2 3000 2347418 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 1 Max: 4 Avg: 2.18
-------------------------------------------------------------
-[ 1, 2) 46 1.5% 1.5%
-[ 2, 3) 2381 79.4% 80.9% ########
-[ 3, 4) 567 18.9% 99.8% ##
-[ 4, 5) 6 0.2% 100.0%
-[ 5, 6) 0 0.0% 100.0%
-[ 6, 7) 0 0.0% 100.0%
-[ 7, 8) 0 0.0% 100.0%
-[ 8, 9) 0 0.0% 100.0%
-[ 9, 10) 0 0.0% 100.0%
-[ 10, 11) 0 0.0% 100.0%
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 15) 0 0.0% 100.0%
-[ 15, 17) 0 0.0% 100.0%
-[ 17, 19) 0 0.0% 100.0%
-[ 19, 21) 0 0.0% 100.0%
-[ 21, 23) 0 0.0% 100.0%
-[ 23, inf) 0 0.0% 100.0%
-Benchmark____1_chunk____10B 3000 2857309 ns/op 0.01 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 2 Max: 5 Avg: 2.45
-------------------------------------------------------------
-[ 2, 3) 2387 79.6% 79.6% ########
-[ 3, 4) 88 2.9% 82.5%
-[ 4, 5) 303 10.1% 92.6% #
-[ 5, 6) 222 7.4% 100.0% #
-[ 6, 7) 0 0.0% 100.0%
-[ 7, 8) 0 0.0% 100.0%
-[ 8, 9) 0 0.0% 100.0%
-[ 9, 10) 0 0.0% 100.0%
-[ 10, 11) 0 0.0% 100.0%
-[ 11, 12) 0 0.0% 100.0%
-[ 12, 14) 0 0.0% 100.0%
-[ 14, 16) 0 0.0% 100.0%
-[ 16, 18) 0 0.0% 100.0%
-[ 18, 20) 0 0.0% 100.0%
-[ 20, 22) 0 0.0% 100.0%
-[ 22, 24) 0 0.0% 100.0%
-[ 24, inf) 0 0.0% 100.0%
-Benchmark____1_chunk____10B-2 3000 2363346 ns/op 0.01 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 1 Max: 5 Avg: 2.18
-------------------------------------------------------------
-[ 1, 2) 32 1.1% 1.1%
-[ 2, 3) 2535 84.5% 85.6% ########
-[ 3, 4) 293 9.8% 95.3% #
-[ 4, 5) 139 4.6% 100.0%
-[ 5, 6) 1 0.0% 100.0%
-[ 6, 7) 0 0.0% 100.0%
-[ 7, 8) 0 0.0% 100.0%
-[ 8, 9) 0 0.0% 100.0%
-[ 9, 11) 0 0.0% 100.0%
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 15) 0 0.0% 100.0%
-[ 15, 17) 0 0.0% 100.0%
-[ 17, 20) 0 0.0% 100.0%
-[ 20, 23) 0 0.0% 100.0%
-[ 23, 26) 0 0.0% 100.0%
-[ 26, 29) 0 0.0% 100.0%
-[ 29, inf) 0 0.0% 100.0%
-Benchmark____1_chunk___100B 3000 2922993 ns/op 0.07 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 2 Max: 7 Avg: 2.50
-------------------------------------------------------------
-[ 2, 3) 2527 84.2% 84.2% ########
-[ 3, 4) 106 3.5% 87.8%
-[ 4, 5) 0 0.0% 87.8%
-[ 5, 6) 99 3.3% 91.1%
-[ 6, 7) 255 8.5% 99.6% #
-[ 7, 8) 13 0.4% 100.0%
-[ 8, 9) 0 0.0% 100.0%
-[ 9, 11) 0 0.0% 100.0%
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 15) 0 0.0% 100.0%
-[ 15, 17) 0 0.0% 100.0%
-[ 17, 20) 0 0.0% 100.0%
-[ 20, 23) 0 0.0% 100.0%
-[ 23, 27) 0 0.0% 100.0%
-[ 27, 31) 0 0.0% 100.0%
-[ 31, 35) 0 0.0% 100.0%
-[ 35, inf) 0 0.0% 100.0%
-Benchmark____1_chunk___100B-2 3000 2558699 ns/op 0.08 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 1 Max: 6 Avg: 2.28
-------------------------------------------------------------
-[ 1, 2) 5 0.2% 0.2%
-[ 2, 3) 2673 89.1% 89.3% #########
-[ 3, 4) 2 0.1% 89.3%
-[ 4, 5) 177 5.9% 95.2% #
-[ 5, 6) 96 3.2% 98.4%
-[ 6, 7) 47 1.6% 100.0%
-[ 7, 8) 0 0.0% 100.0%
-[ 8, 10) 0 0.0% 100.0%
-[ 10, 12) 0 0.0% 100.0%
-[ 12, 14) 0 0.0% 100.0%
-[ 14, 16) 0 0.0% 100.0%
-[ 16, 19) 0 0.0% 100.0%
-[ 19, 22) 0 0.0% 100.0%
-[ 22, 26) 0 0.0% 100.0%
-[ 26, 30) 0 0.0% 100.0%
-[ 30, 34) 0 0.0% 100.0%
-[ 34, inf) 0 0.0% 100.0%
-Benchmark____1_chunk____1KB 3000 2646432 ns/op 0.76 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 2 Max: 10 Avg: 2.49
-------------------------------------------------------------
-[ 2, 3) 2647 88.2% 88.2% #########
-[ 3, 4) 71 2.4% 90.6%
-[ 4, 5) 4 0.1% 90.7%
-[ 5, 6) 0 0.0% 90.7%
-[ 6, 7) 67 2.2% 93.0%
-[ 7, 9) 209 7.0% 99.9% #
-[ 9, 11) 2 0.1% 100.0%
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 16) 0 0.0% 100.0%
-[ 16, 19) 0 0.0% 100.0%
-[ 19, 23) 0 0.0% 100.0%
-[ 23, 27) 0 0.0% 100.0%
-[ 27, 32) 0 0.0% 100.0%
-[ 32, 38) 0 0.0% 100.0%
-[ 38, 44) 0 0.0% 100.0%
-[ 44, 52) 0 0.0% 100.0%
-[ 52, inf) 0 0.0% 100.0%
-Benchmark____1_chunk____1KB-2 3000 2400649 ns/op 0.83 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 1 Max: 7 Avg: 2.01
-------------------------------------------------------------
-[ 1, 2) 864 28.8% 28.8% ###
-[ 2, 3) 1881 62.7% 91.5% ######
-[ 3, 4) 2 0.1% 91.6%
-[ 4, 5) 10 0.3% 91.9%
-[ 5, 6) 127 4.2% 96.1%
-[ 6, 7) 94 3.1% 99.3%
-[ 7, 9) 22 0.7% 100.0%
-[ 9, 11) 0 0.0% 100.0%
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 15) 0 0.0% 100.0%
-[ 15, 18) 0 0.0% 100.0%
-[ 18, 21) 0 0.0% 100.0%
-[ 21, 25) 0 0.0% 100.0%
-[ 25, 29) 0 0.0% 100.0%
-[ 29, 34) 0 0.0% 100.0%
-[ 34, 40) 0 0.0% 100.0%
-[ 40, inf) 0 0.0% 100.0%
-Benchmark____1_chunk___10KB 3000 2954627 ns/op 6.77 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 2 Max: 10 Avg: 2.65
-------------------------------------------------------------
-[ 2, 3) 2621 87.4% 87.4% #########
-[ 3, 4) 93 3.1% 90.5%
-[ 4, 5) 13 0.4% 90.9%
-[ 5, 6) 0 0.0% 90.9%
-[ 6, 7) 0 0.0% 90.9%
-[ 7, 9) 99 3.3% 94.2%
-[ 9, 11) 174 5.8% 100.0% #
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 16) 0 0.0% 100.0%
-[ 16, 19) 0 0.0% 100.0%
-[ 19, 23) 0 0.0% 100.0%
-[ 23, 27) 0 0.0% 100.0%
-[ 27, 32) 0 0.0% 100.0%
-[ 32, 38) 0 0.0% 100.0%
-[ 38, 44) 0 0.0% 100.0%
-[ 44, 52) 0 0.0% 100.0%
-[ 52, inf) 0 0.0% 100.0%
-Benchmark____1_chunk___10KB-2 3000 2546084 ns/op 7.86 MB/s
-Histogram (unit: ms)
-Count: 3000 Min: 1 Max: 8 Avg: 2.25
-------------------------------------------------------------
-[ 1, 2) 414 13.8% 13.8% #
-[ 2, 3) 2335 77.8% 91.6% ########
-[ 3, 4) 0 0.0% 91.6%
-[ 4, 5) 0 0.0% 91.6%
-[ 5, 6) 37 1.2% 92.9%
-[ 6, 7) 88 2.9% 95.8%
-[ 7, 9) 126 4.2% 100.0%
-[ 9, 11) 0 0.0% 100.0%
-[ 11, 13) 0 0.0% 100.0%
-[ 13, 16) 0 0.0% 100.0%
-[ 16, 19) 0 0.0% 100.0%
-[ 19, 23) 0 0.0% 100.0%
-[ 23, 27) 0 0.0% 100.0%
-[ 27, 32) 0 0.0% 100.0%
-[ 32, 38) 0 0.0% 100.0%
-[ 38, 44) 0 0.0% 100.0%
-[ 44, inf) 0 0.0% 100.0%
-Benchmark____1_chunk__100KB 2000 5517042 ns/op 36.25 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 3 Max: 15 Avg: 4.82
-------------------------------------------------------------
-[ 3, 4) 1247 62.4% 62.4% ######
-[ 4, 5) 256 12.8% 75.2% #
-[ 5, 6) 146 7.3% 82.5% #
-[ 6, 7) 0 0.0% 82.5%
-[ 7, 8) 0 0.0% 82.5%
-[ 8, 10) 0 0.0% 82.5%
-[ 10, 12) 132 6.6% 89.1% #
-[ 12, 15) 217 10.9% 99.9% #
-[ 15, 18) 2 0.1% 100.0%
-[ 18, 22) 0 0.0% 100.0%
-[ 22, 27) 0 0.0% 100.0%
-[ 27, 33) 0 0.0% 100.0%
-[ 33, 40) 0 0.0% 100.0%
-[ 40, 48) 0 0.0% 100.0%
-[ 48, 58) 0 0.0% 100.0%
-[ 58, 69) 0 0.0% 100.0%
-[ 69, inf) 0 0.0% 100.0%
-Benchmark____1_chunk__100KB-2 2000 4157872 ns/op 48.10 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 2 Max: 11 Avg: 3.83
-------------------------------------------------------------
-[ 2, 3) 159 8.0% 8.0% #
-[ 3, 4) 1495 74.8% 82.7% #######
-[ 4, 5) 11 0.6% 83.2%
-[ 5, 6) 0 0.0% 83.2%
-[ 6, 7) 0 0.0% 83.2%
-[ 7, 9) 167 8.3% 91.6% #
-[ 9, 11) 166 8.3% 99.9% #
-[ 11, 13) 2 0.1% 100.0%
-[ 13, 16) 0 0.0% 100.0%
-[ 16, 19) 0 0.0% 100.0%
-[ 19, 23) 0 0.0% 100.0%
-[ 23, 28) 0 0.0% 100.0%
-[ 28, 33) 0 0.0% 100.0%
-[ 33, 39) 0 0.0% 100.0%
-[ 39, 46) 0 0.0% 100.0%
-[ 46, 55) 0 0.0% 100.0%
-[ 55, inf) 0 0.0% 100.0%
-Benchmark___10_chunks____1B 2000 4177247 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 2 Max: 17 Avg: 3.75
-------------------------------------------------------------
-[ 2, 3) 49 2.5% 2.5%
-[ 3, 4) 1771 88.6% 91.0% #########
-[ 4, 5) 0 0.0% 91.0%
-[ 5, 6) 2 0.1% 91.1%
-[ 6, 8) 42 2.1% 93.2%
-[ 8, 10) 0 0.0% 93.2%
-[ 10, 12) 33 1.7% 94.9%
-[ 12, 15) 73 3.7% 98.5%
-[ 15, 19) 30 1.5% 100.0%
-[ 19, 24) 0 0.0% 100.0%
-[ 24, 30) 0 0.0% 100.0%
-[ 30, 37) 0 0.0% 100.0%
-[ 37, 45) 0 0.0% 100.0%
-[ 45, 55) 0 0.0% 100.0%
-[ 55, 67) 0 0.0% 100.0%
-[ 67, 81) 0 0.0% 100.0%
-[ 81, inf) 0 0.0% 100.0%
-Benchmark___10_chunks____1B-2 2000 3432532 ns/op 0.01 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 2 Max: 12 Avg: 2.82
-------------------------------------------------------------
-[ 2, 3) 1276 63.8% 63.8% ######
-[ 3, 4) 541 27.1% 90.9% ###
-[ 4, 5) 45 2.2% 93.1%
-[ 5, 6) 0 0.0% 93.1%
-[ 6, 7) 0 0.0% 93.1%
-[ 7, 9) 41 2.1% 95.2%
-[ 9, 11) 68 3.4% 98.6%
-[ 11, 13) 29 1.5% 100.0%
-[ 13, 16) 0 0.0% 100.0%
-[ 16, 19) 0 0.0% 100.0%
-[ 19, 23) 0 0.0% 100.0%
-[ 23, 28) 0 0.0% 100.0%
-[ 28, 34) 0 0.0% 100.0%
-[ 34, 41) 0 0.0% 100.0%
-[ 41, 49) 0 0.0% 100.0%
-[ 49, 58) 0 0.0% 100.0%
-[ 58, inf) 0 0.0% 100.0%
-Benchmark___10_chunks___10B 2000 4664935 ns/op 0.04 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 3 Max: 19 Avg: 3.94
-------------------------------------------------------------
-[ 3, 4) 1739 87.0% 87.0% #########
-[ 4, 5) 94 4.7% 91.7%
-[ 5, 6) 0 0.0% 91.7%
-[ 6, 7) 9 0.5% 92.1%
-[ 7, 9) 26 1.3% 93.4%
-[ 9, 11) 0 0.0% 93.4%
-[ 11, 14) 33 1.7% 95.1%
-[ 14, 17) 63 3.2% 98.2%
-[ 17, 21) 36 1.8% 100.0%
-[ 21, 26) 0 0.0% 100.0%
-[ 26, 32) 0 0.0% 100.0%
-[ 32, 39) 0 0.0% 100.0%
-[ 39, 48) 0 0.0% 100.0%
-[ 48, 59) 0 0.0% 100.0%
-[ 59, 72) 0 0.0% 100.0%
-[ 72, 88) 0 0.0% 100.0%
-[ 88, inf) 0 0.0% 100.0%
-Benchmark___10_chunks___10B-2 2000 3548029 ns/op 0.06 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 2 Max: 14 Avg: 3.02
-------------------------------------------------------------
-[ 2, 3) 971 48.6% 48.6% #####
-[ 3, 4) 835 41.8% 90.3% ####
-[ 4, 5) 67 3.4% 93.7%
-[ 5, 6) 0 0.0% 93.7%
-[ 6, 7) 0 0.0% 93.7%
-[ 7, 9) 16 0.8% 94.5%
-[ 9, 11) 40 2.0% 96.5%
-[ 11, 14) 70 3.5% 100.0%
-[ 14, 17) 1 0.1% 100.0%
-[ 17, 21) 0 0.0% 100.0%
-[ 21, 26) 0 0.0% 100.0%
-[ 26, 32) 0 0.0% 100.0%
-[ 32, 39) 0 0.0% 100.0%
-[ 39, 47) 0 0.0% 100.0%
-[ 47, 57) 0 0.0% 100.0%
-[ 57, 68) 0 0.0% 100.0%
-[ 68, inf) 0 0.0% 100.0%
-Benchmark___10_chunks__100B 2000 4845710 ns/op 0.41 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 3 Max: 20 Avg: 4.09
-------------------------------------------------------------
-[ 3, 4) 1559 78.0% 78.0% ########
-[ 4, 5) 272 13.6% 91.6% #
-[ 5, 6) 1 0.1% 91.6%
-[ 6, 7) 0 0.0% 91.6%
-[ 7, 9) 43 2.1% 93.8%
-[ 9, 11) 1 0.1% 93.8%
-[ 11, 14) 0 0.0% 93.8%
-[ 14, 17) 44 2.2% 96.0%
-[ 17, 21) 80 4.0% 100.0%
-[ 21, 26) 0 0.0% 100.0%
-[ 26, 32) 0 0.0% 100.0%
-[ 32, 39) 0 0.0% 100.0%
-[ 39, 48) 0 0.0% 100.0%
-[ 48, 59) 0 0.0% 100.0%
-[ 59, 73) 0 0.0% 100.0%
-[ 73, 90) 0 0.0% 100.0%
-[ 90, inf) 0 0.0% 100.0%
-Benchmark___10_chunks__100B-2 2000 3658666 ns/op 0.55 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 2 Max: 14 Avg: 3.26
-------------------------------------------------------------
-[ 2, 3) 567 28.4% 28.4% ###
-[ 3, 4) 1240 62.0% 90.4% ######
-[ 4, 5) 68 3.4% 93.8%
-[ 5, 6) 5 0.2% 94.0%
-[ 6, 7) 0 0.0% 94.0%
-[ 7, 9) 0 0.0% 94.0%
-[ 9, 11) 50 2.5% 96.5%
-[ 11, 14) 62 3.1% 99.6%
-[ 14, 17) 8 0.4% 100.0%
-[ 17, 21) 0 0.0% 100.0%
-[ 21, 26) 0 0.0% 100.0%
-[ 26, 32) 0 0.0% 100.0%
-[ 32, 39) 0 0.0% 100.0%
-[ 39, 47) 0 0.0% 100.0%
-[ 47, 57) 0 0.0% 100.0%
-[ 57, 68) 0 0.0% 100.0%
-[ 68, inf) 0 0.0% 100.0%
-Benchmark___10_chunks___1KB 2000 4971196 ns/op 4.02 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 3 Max: 23 Avg: 4.37
-------------------------------------------------------------
-[ 3, 4) 1222 61.1% 61.1% ######
-[ 4, 5) 620 31.0% 92.1% ###
-[ 5, 6) 0 0.0% 92.1%
-[ 6, 7) 0 0.0% 92.1%
-[ 7, 9) 31 1.6% 93.7%
-[ 9, 11) 1 0.1% 93.7%
-[ 11, 14) 0 0.0% 93.7%
-[ 14, 18) 32 1.6% 95.3%
-[ 18, 22) 90 4.5% 99.8%
-[ 22, 28) 4 0.2% 100.0%
-[ 28, 35) 0 0.0% 100.0%
-[ 35, 43) 0 0.0% 100.0%
-[ 43, 53) 0 0.0% 100.0%
-[ 53, 66) 0 0.0% 100.0%
-[ 66, 82) 0 0.0% 100.0%
-[ 82, 101) 0 0.0% 100.0%
-[101, inf) 0 0.0% 100.0%
-Benchmark___10_chunks___1KB-2 2000 3662827 ns/op 5.46 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 2 Max: 15 Avg: 3.11
-------------------------------------------------------------
-[ 2, 3) 1012 50.6% 50.6% #####
-[ 3, 4) 794 39.7% 90.3% ####
-[ 4, 5) 67 3.4% 93.7%
-[ 5, 6) 4 0.2% 93.9%
-[ 6, 7) 0 0.0% 93.9%
-[ 7, 9) 0 0.0% 93.9%
-[ 9, 11) 25 1.2% 95.1%
-[ 11, 14) 53 2.7% 97.8%
-[ 14, 17) 45 2.2% 100.0%
-[ 17, 21) 0 0.0% 100.0%
-[ 21, 26) 0 0.0% 100.0%
-[ 26, 32) 0 0.0% 100.0%
-[ 32, 39) 0 0.0% 100.0%
-[ 39, 48) 0 0.0% 100.0%
-[ 48, 58) 0 0.0% 100.0%
-[ 58, 70) 0 0.0% 100.0%
-[ 70, inf) 0 0.0% 100.0%
-Benchmark___10_chunks__10KB 1000 7533684 ns/op 26.55 MB/s
-Histogram (unit: ms)
-Count: 1000 Min: 5 Max: 26 Avg: 7.03
-------------------------------------------------------------
-[ 5, 6) 831 83.1% 83.1% ########
-[ 6, 7) 4 0.4% 83.5%
-[ 7, 8) 0 0.0% 83.5%
-[ 8, 9) 29 2.9% 86.4%
-[ 9, 11) 18 1.8% 88.2%
-[ 11, 13) 0 0.0% 88.2%
-[ 13, 16) 0 0.0% 88.2%
-[ 16, 20) 39 3.9% 92.1%
-[ 20, 25) 78 7.8% 99.9% #
-[ 25, 31) 1 0.1% 100.0%
-[ 31, 38) 0 0.0% 100.0%
-[ 38, 47) 0 0.0% 100.0%
-[ 47, 58) 0 0.0% 100.0%
-[ 58, 71) 0 0.0% 100.0%
-[ 71, 88) 0 0.0% 100.0%
-[ 88, 108) 0 0.0% 100.0%
-[108, inf) 0 0.0% 100.0%
-Benchmark___10_chunks__10KB-2 2000 4922363 ns/op 40.63 MB/s
-Histogram (unit: ms)
-Count: 2000 Min: 3 Max: 18 Avg: 4.32
-------------------------------------------------------------
-[ 3, 4) 1573 78.7% 78.7% ########
-[ 4, 5) 146 7.3% 86.0% #
-[ 5, 6) 53 2.7% 88.6%
-[ 6, 7) 0 0.0% 88.6%
-[ 7, 9) 0 0.0% 88.6%
-[ 9, 11) 3 0.2% 88.8%
-[ 11, 13) 79 4.0% 92.7%
-[ 13, 16) 107 5.4% 98.1% #
-[ 16, 20) 39 2.0% 100.0%
-[ 20, 25) 0 0.0% 100.0%
-[ 25, 31) 0 0.0% 100.0%
-[ 31, 38) 0 0.0% 100.0%
-[ 38, 46) 0 0.0% 100.0%
-[ 46, 56) 0 0.0% 100.0%
-[ 56, 68) 0 0.0% 100.0%
-[ 68, 82) 0 0.0% 100.0%
-[ 82, inf) 0 0.0% 100.0%
-Benchmark___10_chunks_100KB 200 31539312 ns/op 63.41 MB/s
-Histogram (unit: ms)
-Count: 200 Min: 22 Max: 40 Avg: 30.91
-------------------------------------------------------------
-[ 22, 23) 1 0.5% 0.5%
-[ 23, 24) 1 0.5% 1.0%
-[ 24, 25) 69 34.5% 35.5% ###
-[ 25, 26) 22 11.0% 46.5% #
-[ 26, 28) 7 3.5% 50.0%
-[ 28, 30) 0 0.0% 50.0%
-[ 30, 33) 0 0.0% 50.0%
-[ 33, 36) 0 0.0% 50.0%
-[ 36, 40) 95 47.5% 97.5% #####
-[ 40, 45) 5 2.5% 100.0%
-[ 45, 51) 0 0.0% 100.0%
-[ 51, 59) 0 0.0% 100.0%
-[ 59, 69) 0 0.0% 100.0%
-[ 69, 81) 0 0.0% 100.0%
-[ 81, 95) 0 0.0% 100.0%
-[ 95, 112) 0 0.0% 100.0%
-[112, inf) 0 0.0% 100.0%
-Benchmark___10_chunks_100KB-2 500 18574440 ns/op 107.67 MB/s
-Histogram (unit: ms)
-Count: 500 Min: 12 Max: 27 Avg: 18.10
-------------------------------------------------------------
-[ 12, 13) 79 15.8% 15.8% ##
-[ 13, 14) 168 33.6% 49.4% ###
-[ 14, 15) 12 2.4% 51.8%
-[ 15, 16) 1 0.2% 52.0%
-[ 16, 18) 0 0.0% 52.0%
-[ 18, 20) 0 0.0% 52.0%
-[ 20, 22) 30 6.0% 58.0% #
-[ 22, 25) 94 18.8% 76.8% ##
-[ 25, 29) 116 23.2% 100.0% ##
-[ 29, 34) 0 0.0% 100.0%
-[ 34, 40) 0 0.0% 100.0%
-[ 40, 47) 0 0.0% 100.0%
-[ 47, 55) 0 0.0% 100.0%
-[ 55, 65) 0 0.0% 100.0%
-[ 65, 77) 0 0.0% 100.0%
-[ 77, 91) 0 0.0% 100.0%
-[ 91, inf) 0 0.0% 100.0%
-Benchmark__100_chunks____1B 500 18036549 ns/op 0.01 MB/s
-Histogram (unit: ms)
-Count: 500 Min: 14 Max: 41 Avg: 17.44
-------------------------------------------------------------
-[ 14, 15) 280 56.0% 56.0% ######
-[ 15, 16) 106 21.2% 77.2% ##
-[ 16, 17) 10 2.0% 79.2%
-[ 17, 18) 1 0.2% 79.4%
-[ 18, 20) 6 1.2% 80.6%
-[ 20, 23) 22 4.4% 85.0%
-[ 23, 26) 0 0.0% 85.0%
-[ 26, 30) 16 3.2% 88.2%
-[ 30, 35) 27 5.4% 93.6% #
-[ 35, 42) 32 6.4% 100.0% #
-[ 42, 51) 0 0.0% 100.0%
-[ 51, 62) 0 0.0% 100.0%
-[ 62, 75) 0 0.0% 100.0%
-[ 75, 92) 0 0.0% 100.0%
-[ 92, 113) 0 0.0% 100.0%
-[113, 140) 0 0.0% 100.0%
-[140, inf) 0 0.0% 100.0%
-Benchmark__100_chunks____1B-2 1000 12395699 ns/op 0.02 MB/s
-Histogram (unit: ms)
-Count: 1000 Min: 7 Max: 31 Avg: 11.90
-------------------------------------------------------------
-[ 7, 8) 26 2.6% 2.6%
-[ 8, 9) 14 1.4% 4.0%
-[ 9, 10) 171 17.1% 21.1% ##
-[ 10, 11) 528 52.8% 73.9% #####
-[ 11, 13) 71 7.1% 81.0% #
-[ 13, 15) 23 2.3% 83.3%
-[ 15, 18) 8 0.8% 84.1%
-[ 18, 22) 68 6.8% 90.9% #
-[ 22, 27) 89 8.9% 99.8% #
-[ 27, 33) 2 0.2% 100.0%
-[ 33, 41) 0 0.0% 100.0%
-[ 41, 51) 0 0.0% 100.0%
-[ 51, 63) 0 0.0% 100.0%
-[ 63, 78) 0 0.0% 100.0%
-[ 78, 97) 0 0.0% 100.0%
-[ 97, 121) 0 0.0% 100.0%
-[121, inf) 0 0.0% 100.0%
-Benchmark__100_chunks___10B 300 20669375 ns/op 0.10 MB/s
-Histogram (unit: ms)
-Count: 300 Min: 17 Max: 39 Avg: 20.31
-------------------------------------------------------------
-[ 17, 18) 228 76.0% 76.0% ########
-[ 18, 19) 8 2.7% 78.7%
-[ 19, 20) 2 0.7% 79.3%
-[ 20, 21) 0 0.0% 79.3%
-[ 21, 23) 3 1.0% 80.3%
-[ 23, 25) 12 4.0% 84.3%
-[ 25, 28) 0 0.0% 84.3%
-[ 28, 32) 0 0.0% 84.3%
-[ 32, 37) 15 5.0% 89.3% #
-[ 37, 43) 32 10.7% 100.0% #
-[ 43, 50) 0 0.0% 100.0%
-[ 50, 59) 0 0.0% 100.0%
-[ 59, 70) 0 0.0% 100.0%
-[ 70, 84) 0 0.0% 100.0%
-[ 84, 101) 0 0.0% 100.0%
-[101, 122) 0 0.0% 100.0%
-[122, inf) 0 0.0% 100.0%
-Benchmark__100_chunks___10B-2 500 12634978 ns/op 0.16 MB/s
-Histogram (unit: ms)
-Count: 500 Min: 9 Max: 27 Avg: 12.11
-------------------------------------------------------------
-[ 9, 10) 69 13.8% 13.8% #
-[ 10, 11) 287 57.4% 71.2% ######
-[ 11, 12) 47 9.4% 80.6% #
-[ 12, 13) 10 2.0% 82.6%
-[ 13, 15) 8 1.6% 84.2%
-[ 15, 17) 0 0.0% 84.2%
-[ 17, 20) 5 1.0% 85.2%
-[ 20, 23) 28 5.6% 90.8% #
-[ 23, 27) 43 8.6% 99.4% #
-[ 27, 32) 3 0.6% 100.0%
-[ 32, 38) 0 0.0% 100.0%
-[ 38, 46) 0 0.0% 100.0%
-[ 46, 56) 0 0.0% 100.0%
-[ 56, 68) 0 0.0% 100.0%
-[ 68, 82) 0 0.0% 100.0%
-[ 82, 99) 0 0.0% 100.0%
-[ 99, inf) 0 0.0% 100.0%
-Benchmark__100_chunks__100B 300 23164692 ns/op 0.86 MB/s
-Histogram (unit: ms)
-Count: 300 Min: 19 Max: 42 Avg: 22.72
-------------------------------------------------------------
-[ 19, 20) 209 69.7% 69.7% #######
-[ 20, 21) 17 5.7% 75.3% #
-[ 21, 22) 6 2.0% 77.3%
-[ 22, 23) 1 0.3% 77.7%
-[ 23, 25) 1 0.3% 78.0%
-[ 25, 27) 17 5.7% 83.7% #
-[ 27, 30) 0 0.0% 83.7%
-[ 30, 34) 0 0.0% 83.7%
-[ 34, 39) 19 6.3% 90.0% #
-[ 39, 45) 30 10.0% 100.0% #
-[ 45, 53) 0 0.0% 100.0%
-[ 53, 62) 0 0.0% 100.0%
-[ 62, 74) 0 0.0% 100.0%
-[ 74, 89) 0 0.0% 100.0%
-[ 89, 107) 0 0.0% 100.0%
-[107, 129) 0 0.0% 100.0%
-[129, inf) 0 0.0% 100.0%
-Benchmark__100_chunks__100B-2 500 13821225 ns/op 1.45 MB/s
-Histogram (unit: ms)
-Count: 500 Min: 10 Max: 29 Avg: 13.29
-------------------------------------------------------------
-[ 10, 11) 47 9.4% 9.4% #
-[ 11, 12) 307 61.4% 70.8% ######
-[ 12, 13) 46 9.2% 80.0% #
-[ 13, 14) 9 1.8% 81.8%
-[ 14, 16) 9 1.8% 83.6%
-[ 16, 18) 0 0.0% 83.6%
-[ 18, 21) 5 1.0% 84.6%
-[ 21, 24) 25 5.0% 89.6% #
-[ 24, 28) 49 9.8% 99.4% #
-[ 28, 33) 3 0.6% 100.0%
-[ 33, 40) 0 0.0% 100.0%
-[ 40, 48) 0 0.0% 100.0%
-[ 48, 58) 0 0.0% 100.0%
-[ 58, 70) 0 0.0% 100.0%
-[ 70, 85) 0 0.0% 100.0%
-[ 85, 103) 0 0.0% 100.0%
-[103, inf) 0 0.0% 100.0%
-Benchmark__100_chunks___1KB 300 26071439 ns/op 7.67 MB/s
-Histogram (unit: ms)
-Count: 300 Min: 20 Max: 48 Avg: 25.72
-------------------------------------------------------------
-[ 20, 21) 1 0.3% 0.3%
-[ 21, 22) 195 65.0% 65.3% #######
-[ 22, 23) 13 4.3% 69.7%
-[ 23, 24) 5 1.7% 71.3%
-[ 24, 26) 0 0.0% 71.3%
-[ 26, 29) 23 7.7% 79.0% #
-[ 29, 32) 0 0.0% 79.0%
-[ 32, 36) 0 0.0% 79.0%
-[ 36, 41) 23 7.7% 86.7% #
-[ 41, 48) 39 13.0% 99.7% #
-[ 48, 57) 1 0.3% 100.0%
-[ 57, 68) 0 0.0% 100.0%
-[ 68, 82) 0 0.0% 100.0%
-[ 82, 99) 0 0.0% 100.0%
-[ 99, 121) 0 0.0% 100.0%
-[121, 148) 0 0.0% 100.0%
-[148, inf) 0 0.0% 100.0%
-Benchmark__100_chunks___1KB-2 500 15738134 ns/op 12.71 MB/s
-Histogram (unit: ms)
-Count: 500 Min: 11 Max: 30 Avg: 15.24
-------------------------------------------------------------
-[ 11, 12) 19 3.8% 3.8%
-[ 12, 13) 253 50.6% 54.4% #####
-[ 13, 14) 97 19.4% 73.8% ##
-[ 14, 15) 11 2.2% 76.0%
-[ 15, 17) 15 3.0% 79.0%
-[ 17, 19) 0 0.0% 79.0%
-[ 19, 22) 3 0.6% 79.6%
-[ 22, 25) 28 5.6% 85.2% #
-[ 25, 29) 61 12.2% 97.4% #
-[ 29, 34) 13 2.6% 100.0%
-[ 34, 41) 0 0.0% 100.0%
-[ 41, 49) 0 0.0% 100.0%
-[ 49, 59) 0 0.0% 100.0%
-[ 59, 71) 0 0.0% 100.0%
-[ 71, 86) 0 0.0% 100.0%
-[ 86, 104) 0 0.0% 100.0%
-[104, inf) 0 0.0% 100.0%
-Benchmark__100_chunks__10KB 100 50248311 ns/op 39.80 MB/s
-Histogram (unit: ms)
-Count: 100 Min: 37 Max: 60 Avg: 49.72
-------------------------------------------------------------
-[ 37, 38) 4 4.0% 4.0%
-[ 38, 39) 7 7.0% 11.0% #
-[ 39, 40) 6 6.0% 17.0% #
-[ 40, 41) 5 5.0% 22.0% #
-[ 41, 43) 18 18.0% 40.0% ##
-[ 43, 45) 0 0.0% 40.0%
-[ 45, 48) 0 0.0% 40.0%
-[ 48, 52) 0 0.0% 40.0%
-[ 52, 57) 24 24.0% 64.0% ##
-[ 57, 63) 36 36.0% 100.0% ####
-[ 63, 71) 0 0.0% 100.0%
-[ 71, 80) 0 0.0% 100.0%
-[ 80, 92) 0 0.0% 100.0%
-[ 92, 107) 0 0.0% 100.0%
-[107, 125) 0 0.0% 100.0%
-[125, 147) 0 0.0% 100.0%
-[147, inf) 0 0.0% 100.0%
-Benchmark__100_chunks__10KB-2 300 28614761 ns/op 69.89 MB/s
-Histogram (unit: ms)
-Count: 300 Min: 19 Max: 38 Avg: 28.11
-------------------------------------------------------------
-[ 19, 20) 7 2.3% 2.3%
-[ 20, 21) 55 18.3% 20.7% ##
-[ 21, 22) 43 14.3% 35.0% #
-[ 22, 23) 9 3.0% 38.0%
-[ 23, 25) 3 1.0% 39.0%
-[ 25, 27) 0 0.0% 39.0%
-[ 27, 30) 3 1.0% 40.0%
-[ 30, 33) 84 28.0% 68.0% ###
-[ 33, 37) 94 31.3% 99.3% ###
-[ 37, 42) 2 0.7% 100.0%
-[ 42, 49) 0 0.0% 100.0%
-[ 49, 57) 0 0.0% 100.0%
-[ 57, 67) 0 0.0% 100.0%
-[ 67, 79) 0 0.0% 100.0%
-[ 79, 94) 0 0.0% 100.0%
-[ 94, 112) 0 0.0% 100.0%
-[112, inf) 0 0.0% 100.0%
-Benchmark__100_chunks_100KB 30 272889576 ns/op 73.29 MB/s
-Histogram (unit: ms)
-Count: 30 Min: 267 Max: 292 Avg: 272.40
-------------------------------------------------------------
-[267, 268) 3 10.0% 10.0% #
-[268, 269) 8 26.7% 36.7% ###
-[269, 270) 4 13.3% 50.0% #
-[270, 271) 4 13.3% 63.3% #
-[271, 273) 4 13.3% 76.7% #
-[273, 275) 1 3.3% 80.0%
-[275, 278) 1 3.3% 83.3%
-[278, 282) 0 0.0% 83.3%
-[282, 287) 1 3.3% 86.7%
-[287, 293) 4 13.3% 100.0% #
-[293, 301) 0 0.0% 100.0%
-[301, 311) 0 0.0% 100.0%
-[311, 324) 0 0.0% 100.0%
-[324, 340) 0 0.0% 100.0%
-[340, 360) 0 0.0% 100.0%
-[360, 384) 0 0.0% 100.0%
-[384, inf) 0 0.0% 100.0%
-Benchmark__100_chunks_100KB-2 50 149680912 ns/op 133.62 MB/s
-Histogram (unit: ms)
-Count: 50 Min: 138 Max: 158 Avg: 149.14
-------------------------------------------------------------
-[138, 139) 2 4.0% 4.0%
-[139, 140) 0 0.0% 4.0%
-[140, 141) 0 0.0% 4.0%
-[141, 142) 2 4.0% 8.0%
-[142, 144) 4 8.0% 16.0% #
-[144, 146) 4 8.0% 24.0% #
-[146, 149) 6 12.0% 36.0% #
-[149, 153) 20 40.0% 76.0% ####
-[153, 157) 11 22.0% 98.0% ##
-[157, 163) 1 2.0% 100.0%
-[163, 170) 0 0.0% 100.0%
-[170, 178) 0 0.0% 100.0%
-[178, 188) 0 0.0% 100.0%
-[188, 201) 0 0.0% 100.0%
-[201, 217) 0 0.0% 100.0%
-[217, 236) 0 0.0% 100.0%
-[236, inf) 0 0.0% 100.0%
-Benchmark___1K_chunks____1B 100 111621410 ns/op 0.02 MB/s
-Histogram (unit: ms)
-Count: 100 Min: 93 Max: 120 Avg: 111.11
-------------------------------------------------------------
-[ 93, 94) 1 1.0% 1.0%
-[ 94, 95) 0 0.0% 1.0%
-[ 95, 96) 0 0.0% 1.0%
-[ 96, 97) 0 0.0% 1.0%
-[ 97, 99) 0 0.0% 1.0%
-[ 99, 102) 17 17.0% 18.0% ##
-[102, 105) 12 12.0% 30.0% #
-[105, 109) 1 1.0% 31.0%
-[109, 114) 6 6.0% 37.0% #
-[114, 121) 63 63.0% 100.0% ######
-[121, 130) 0 0.0% 100.0%
-[130, 141) 0 0.0% 100.0%
-[141, 154) 0 0.0% 100.0%
-[154, 171) 0 0.0% 100.0%
-[171, 192) 0 0.0% 100.0%
-[192, 219) 0 0.0% 100.0%
-[219, inf) 0 0.0% 100.0%
-Benchmark___1K_chunks____1B-2 100 103311101 ns/op 0.02 MB/s
-Histogram (unit: ms)
-Count: 100 Min: 62 Max: 168 Avg: 102.82
-------------------------------------------------------------
-[ 62, 63) 1 1.0% 1.0%
-[ 63, 64) 0 0.0% 1.0%
-[ 64, 65) 0 0.0% 1.0%
-[ 65, 67) 0 0.0% 1.0%
-[ 67, 70) 0 0.0% 1.0%
-[ 70, 74) 1 1.0% 2.0%
-[ 74, 80) 2 2.0% 4.0%
-[ 80, 88) 2 2.0% 6.0%
-[ 88, 100) 23 23.0% 29.0% ##
-[100, 116) 61 61.0% 90.0% ######
-[116, 138) 9 9.0% 99.0% #
-[138, 168) 0 0.0% 99.0%
-[168, 209) 1 1.0% 100.0%
-[209, 265) 0 0.0% 100.0%
-[265, 342) 0 0.0% 100.0%
-[342, 447) 0 0.0% 100.0%
-[447, inf) 0 0.0% 100.0%
-Benchmark___1K_chunks___10B 50 189580683 ns/op 0.11 MB/s
-Histogram (unit: ms)
-Count: 50 Min: 181 Max: 210 Avg: 189.10
-------------------------------------------------------------
-[181, 182) 2 4.0% 4.0%
-[182, 183) 0 0.0% 4.0%
-[183, 184) 1 2.0% 6.0%
-[184, 185) 1 2.0% 8.0%
-[185, 187) 16 32.0% 40.0% ###
-[187, 190) 20 40.0% 80.0% ####
-[190, 193) 2 4.0% 84.0%
-[193, 197) 1 2.0% 86.0%
-[197, 203) 3 6.0% 92.0% #
-[203, 210) 3 6.0% 98.0% #
-[210, 219) 1 2.0% 100.0%
-[219, 230) 0 0.0% 100.0%
-[230, 244) 0 0.0% 100.0%
-[244, 262) 0 0.0% 100.0%
-[262, 285) 0 0.0% 100.0%
-[285, 313) 0 0.0% 100.0%
-[313, inf) 0 0.0% 100.0%
-Benchmark___1K_chunks___10B-2 100 107068429 ns/op 0.19 MB/s
-Histogram (unit: ms)
-Count: 100 Min: 98 Max: 124 Avg: 106.53
-------------------------------------------------------------
-[ 98, 99) 1 1.0% 1.0%
-[ 99, 100) 0 0.0% 1.0%
-[100, 101) 5 5.0% 6.0% #
-[101, 102) 12 12.0% 18.0% #
-[102, 104) 20 20.0% 38.0% ##
-[104, 106) 18 18.0% 56.0% ##
-[106, 109) 23 23.0% 79.0% ##
-[109, 113) 4 4.0% 83.0%
-[113, 118) 7 7.0% 90.0% #
-[118, 125) 10 10.0% 100.0% #
-[125, 133) 0 0.0% 100.0%
-[133, 143) 0 0.0% 100.0%
-[143, 156) 0 0.0% 100.0%
-[156, 172) 0 0.0% 100.0%
-[172, 192) 0 0.0% 100.0%
-[192, 217) 0 0.0% 100.0%
-[217, inf) 0 0.0% 100.0%
-Benchmark___1K_chunks__100B 30 223128293 ns/op 0.90 MB/s
-Histogram (unit: ms)
-Count: 30 Min: 210 Max: 241 Avg: 222.53
-------------------------------------------------------------
-[210, 211) 1 3.3% 3.3%
-[211, 212) 0 0.0% 3.3%
-[212, 213) 0 0.0% 3.3%
-[213, 214) 0 0.0% 3.3%
-[214, 216) 2 6.7% 10.0% #
-[216, 219) 8 26.7% 36.7% ###
-[219, 222) 8 26.7% 63.3% ###
-[222, 226) 5 16.7% 80.0% ##
-[226, 232) 0 0.0% 80.0%
-[232, 239) 5 16.7% 96.7% ##
-[239, 248) 1 3.3% 100.0%
-[248, 260) 0 0.0% 100.0%
-[260, 275) 0 0.0% 100.0%
-[275, 294) 0 0.0% 100.0%
-[294, 318) 0 0.0% 100.0%
-[318, 348) 0 0.0% 100.0%
-[348, inf) 0 0.0% 100.0%
-Benchmark___1K_chunks__100B-2 50 125690815 ns/op 1.59 MB/s
-Histogram (unit: ms)
-Count: 50 Min: 117 Max: 142 Avg: 125.22
-------------------------------------------------------------
-[117, 118) 4 8.0% 8.0% #
-[118, 119) 1 2.0% 10.0%
-[119, 120) 1 2.0% 12.0%
-[120, 121) 8 16.0% 28.0% ##
-[121, 123) 9 18.0% 46.0% ##
-[123, 125) 9 18.0% 64.0% ##
-[125, 128) 6 12.0% 76.0% #
-[128, 132) 2 4.0% 80.0%
-[132, 137) 5 10.0% 90.0% #
-[137, 143) 5 10.0% 100.0% #
-[143, 151) 0 0.0% 100.0%
-[151, 161) 0 0.0% 100.0%
-[161, 174) 0 0.0% 100.0%
-[174, 190) 0 0.0% 100.0%
-[190, 210) 0 0.0% 100.0%
-[210, 234) 0 0.0% 100.0%
-[234, inf) 0 0.0% 100.0%
-Benchmark___1K_chunks___1KB 30 251956982 ns/op 7.94 MB/s
-Histogram (unit: ms)
-Count: 30 Min: 238 Max: 266 Avg: 251.50
-------------------------------------------------------------
-[238, 239) 1 3.3% 3.3%
-[239, 240) 0 0.0% 3.3%
-[240, 241) 1 3.3% 6.7%
-[241, 242) 0 0.0% 6.7%
-[242, 244) 3 10.0% 16.7% #
-[244, 247) 7 23.3% 40.0% ##
-[247, 250) 3 10.0% 50.0% #
-[250, 254) 3 10.0% 60.0% #
-[254, 259) 1 3.3% 63.3%
-[259, 266) 10 33.3% 96.7% ###
-[266, 275) 1 3.3% 100.0%
-[275, 286) 0 0.0% 100.0%
-[286, 300) 0 0.0% 100.0%
-[300, 317) 0 0.0% 100.0%
-[317, 339) 0 0.0% 100.0%
-[339, 366) 0 0.0% 100.0%
-[366, inf) 0 0.0% 100.0%
-Benchmark___1K_chunks___1KB-2 50 144214400 ns/op 13.87 MB/s
-Histogram (unit: ms)
-Count: 50 Min: 130 Max: 158 Avg: 143.70
-------------------------------------------------------------
-[130, 131) 1 2.0% 2.0%
-[131, 132) 0 0.0% 2.0%
-[132, 133) 1 2.0% 4.0%
-[133, 134) 6 12.0% 16.0% #
-[134, 136) 6 12.0% 28.0% #
-[136, 139) 4 8.0% 36.0% #
-[139, 142) 6 12.0% 48.0% #
-[142, 146) 1 2.0% 50.0%
-[146, 151) 13 26.0% 76.0% ###
-[151, 158) 9 18.0% 94.0% ##
-[158, 167) 3 6.0% 100.0% #
-[167, 178) 0 0.0% 100.0%
-[178, 192) 0 0.0% 100.0%
-[192, 209) 0 0.0% 100.0%
-[209, 231) 0 0.0% 100.0%
-[231, 258) 0 0.0% 100.0%
-[258, inf) 0 0.0% 100.0%
-Benchmark___1K_chunks__10KB 20 474946063 ns/op 42.11 MB/s
-Histogram (unit: ms)
-Count: 20 Min: 458 Max: 492 Avg: 474.60
-------------------------------------------------------------
-[458, 459) 1 5.0% 5.0% #
-[459, 460) 0 0.0% 5.0%
-[460, 461) 1 5.0% 10.0% #
-[461, 463) 3 15.0% 25.0% ##
-[463, 465) 1 5.0% 30.0% #
-[465, 468) 4 20.0% 50.0% ##
-[468, 472) 0 0.0% 50.0%
-[472, 477) 0 0.0% 50.0%
-[477, 483) 1 5.0% 55.0% #
-[483, 491) 8 40.0% 95.0% ####
-[491, 501) 1 5.0% 100.0% #
-[501, 514) 0 0.0% 100.0%
-[514, 530) 0 0.0% 100.0%
-[530, 551) 0 0.0% 100.0%
-[551, 577) 0 0.0% 100.0%
-[577, 610) 0 0.0% 100.0%
-[610, inf) 0 0.0% 100.0%
-Benchmark___1K_chunks__10KB-2 30 267531367 ns/op 74.76 MB/s
-Histogram (unit: ms)
-Count: 30 Min: 250 Max: 294 Avg: 267.07
-------------------------------------------------------------
-[250, 251) 1 3.3% 3.3%
-[251, 252) 1 3.3% 6.7%
-[252, 253) 0 0.0% 6.7%
-[253, 255) 0 0.0% 6.7%
-[255, 257) 2 6.7% 13.3% #
-[257, 260) 2 6.7% 20.0% #
-[260, 264) 7 23.3% 43.3% ##
-[264, 269) 3 10.0% 53.3% #
-[269, 276) 8 26.7% 80.0% ###
-[276, 285) 5 16.7% 96.7% ##
-[285, 297) 1 3.3% 100.0%
-[297, 313) 0 0.0% 100.0%
-[313, 333) 0 0.0% 100.0%
-[333, 359) 0 0.0% 100.0%
-[359, 393) 0 0.0% 100.0%
-[393, 437) 0 0.0% 100.0%
-[437, inf) 0 0.0% 100.0%
-Benchmark___1K_chunks_100KB 2 2675372295 ns/op 74.76 MB/s
-Histogram (unit: s)
-Count: 2 Min: 2 Max: 2 Avg: 2.00
-------------------------------------------------------------
-[ 2, 3) 2 100.0% 100.0% ##########
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, 3) 0 0.0% 100.0%
-[ 3, inf) 0 0.0% 100.0%
-Benchmark___1K_chunks_100KB-2 5 1421481350 ns/op 140.70 MB/s
-Histogram (unit: s)
-Count: 5 Min: 1 Max: 1 Avg: 1.00
-------------------------------------------------------------
-[ 1, 2) 5 100.0% 100.0% ##########
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, 2) 0 0.0% 100.0%
-[ 2, inf) 0 0.0% 100.0%
-
-================================================================================
-Echo streaming RPC (Per chunk)
-================================================================================
-Benchmark__per_chunk____1B 50000 163939 ns/op 0.01 MB/s
-Histogram (unit: s)
-Count: 1 Min: 8 Max: 8 Avg: 8.00
-------------------------------------------------------------
-[ 8, 9) 1 100.0% 100.0% ##########
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, inf) 0 0.0% 100.0%
-Benchmark__per_chunk____1B-2 50000 118409 ns/op 0.02 MB/s
-Histogram (unit: s)
-Count: 1 Min: 5 Max: 5 Avg: 5.00
-------------------------------------------------------------
-[ 5, 6) 1 100.0% 100.0% ##########
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, 6) 0 0.0% 100.0%
-[ 6, inf) 0 0.0% 100.0%
-Benchmark__per_chunk___10B 20000 321908 ns/op 0.06 MB/s
-Histogram (unit: s)
-Count: 1 Min: 6 Max: 6 Avg: 6.00
-------------------------------------------------------------
-[ 6, 7) 1 100.0% 100.0% ##########
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, inf) 0 0.0% 100.0%
-Benchmark__per_chunk___10B-2 50000 176818 ns/op 0.11 MB/s
-Histogram (unit: s)
-Count: 1 Min: 8 Max: 8 Avg: 8.00
-------------------------------------------------------------
-[ 8, 9) 1 100.0% 100.0% ##########
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, inf) 0 0.0% 100.0%
-Benchmark__per_chunk__100B 20000 411514 ns/op 0.49 MB/s
-Histogram (unit: s)
-Count: 1 Min: 8 Max: 8 Avg: 8.00
-------------------------------------------------------------
-[ 8, 9) 1 100.0% 100.0% ##########
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, inf) 0 0.0% 100.0%
-Benchmark__per_chunk__100B-2 30000 231565 ns/op 0.86 MB/s
-Histogram (unit: s)
-Count: 1 Min: 6 Max: 6 Avg: 6.00
-------------------------------------------------------------
-[ 6, 7) 1 100.0% 100.0% ##########
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, inf) 0 0.0% 100.0%
-Benchmark__per_chunk___1KB 20000 423999 ns/op 4.72 MB/s
-Histogram (unit: s)
-Count: 1 Min: 8 Max: 8 Avg: 8.00
-------------------------------------------------------------
-[ 8, 9) 1 100.0% 100.0% ##########
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, 9) 0 0.0% 100.0%
-[ 9, inf) 0 0.0% 100.0%
-Benchmark__per_chunk___1KB-2 30000 248721 ns/op 8.04 MB/s
-Histogram (unit: s)
-Count: 1 Min: 7 Max: 7 Avg: 7.00
-------------------------------------------------------------
-[ 7, 8) 1 100.0% 100.0% ##########
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, inf) 0 0.0% 100.0%
-Benchmark__per_chunk__10KB 10000 631536 ns/op 31.67 MB/s
-Histogram (unit: s)
-Count: 1 Min: 6 Max: 6 Avg: 6.00
-------------------------------------------------------------
-[ 6, 7) 1 100.0% 100.0% ##########
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, inf) 0 0.0% 100.0%
-Benchmark__per_chunk__10KB-2 20000 346868 ns/op 57.66 MB/s
-Histogram (unit: s)
-Count: 1 Min: 6 Max: 6 Avg: 6.00
-------------------------------------------------------------
-[ 6, 7) 1 100.0% 100.0% ##########
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, inf) 0 0.0% 100.0%
-Benchmark__per_chunk_100KB 3000 2613430 ns/op 76.53 MB/s
-Histogram (unit: s)
-Count: 1 Min: 7 Max: 7 Avg: 7.00
-------------------------------------------------------------
-[ 7, 8) 1 100.0% 100.0% ##########
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, 8) 0 0.0% 100.0%
-[ 8, inf) 0 0.0% 100.0%
-Benchmark__per_chunk_100KB-2 5000 1369809 ns/op 146.01 MB/s
-Histogram (unit: s)
-Count: 1 Min: 6 Max: 6 Avg: 6.00
-------------------------------------------------------------
-[ 6, 7) 1 100.0% 100.0% ##########
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, 7) 0 0.0% 100.0%
-[ 7, inf) 0 0.0% 100.0%
-
-================================================================================
-Echo RPC when multiplexing with Echo streaming RPC
-================================================================================
-Benchmark___10B_mux__100_chunks___10B 500 18817141 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 500 Min: 7 Max: 26 Avg: 18.28
-------------------------------------------------------------
-[ 7, 8) 41 8.2% 8.2% #
-[ 8, 9) 5 1.0% 9.2%
-[ 9, 10) 1 0.2% 9.4%
-[ 10, 11) 0 0.0% 9.4%
-[ 11, 13) 5 1.0% 10.4%
-[ 13, 15) 0 0.0% 10.4%
-[ 15, 18) 52 10.4% 20.8% #
-[ 18, 21) 329 65.8% 86.6% #######
-[ 21, 25) 66 13.2% 99.8% #
-[ 25, 30) 1 0.2% 100.0%
-[ 30, 37) 0 0.0% 100.0%
-[ 37, 45) 0 0.0% 100.0%
-[ 45, 55) 0 0.0% 100.0%
-[ 55, 67) 0 0.0% 100.0%
-[ 67, 82) 0 0.0% 100.0%
-[ 82, 100) 0 0.0% 100.0%
-[100, inf) 0 0.0% 100.0%
-Benchmark___10B_mux__100_chunks___10B-2 1000 7104449 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 1000 Min: 2 Max: 13 Avg: 6.62
-------------------------------------------------------------
-[ 2, 3) 89 8.9% 8.9% #
-[ 3, 4) 110 11.0% 19.9% #
-[ 4, 5) 108 10.8% 30.7% #
-[ 5, 6) 112 11.2% 41.9% #
-[ 6, 7) 77 7.7% 49.6% #
-[ 7, 9) 165 16.5% 66.1% ##
-[ 9, 11) 230 23.0% 89.1% ##
-[ 11, 14) 109 10.9% 100.0% #
-[ 14, 17) 0 0.0% 100.0%
-[ 17, 21) 0 0.0% 100.0%
-[ 21, 25) 0 0.0% 100.0%
-[ 25, 30) 0 0.0% 100.0%
-[ 30, 36) 0 0.0% 100.0%
-[ 36, 43) 0 0.0% 100.0%
-[ 43, 52) 0 0.0% 100.0%
-[ 52, 63) 0 0.0% 100.0%
-[ 63, inf) 0 0.0% 100.0%
-Benchmark___10B_mux__100_chunks__100B 300 21167617 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 300 Min: 6 Max: 26 Avg: 20.68
-------------------------------------------------------------
-[ 6, 7) 13 4.3% 4.3%
-[ 7, 8) 7 2.3% 6.7%
-[ 8, 9) 9 3.0% 9.7%
-[ 9, 10) 0 0.0% 9.7%
-[ 10, 12) 0 0.0% 9.7%
-[ 12, 14) 0 0.0% 9.7%
-[ 14, 17) 0 0.0% 9.7%
-[ 17, 21) 29 9.7% 19.3% #
-[ 21, 25) 237 79.0% 98.3% ########
-[ 25, 31) 5 1.7% 100.0%
-[ 31, 38) 0 0.0% 100.0%
-[ 38, 46) 0 0.0% 100.0%
-[ 46, 56) 0 0.0% 100.0%
-[ 56, 69) 0 0.0% 100.0%
-[ 69, 85) 0 0.0% 100.0%
-[ 85, 104) 0 0.0% 100.0%
-[104, inf) 0 0.0% 100.0%
-Benchmark___10B_mux__100_chunks__100B-2 1000 8372251 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 1000 Min: 2 Max: 15 Avg: 7.88
-------------------------------------------------------------
-[ 2, 3) 67 6.7% 6.7% #
-[ 3, 4) 62 6.2% 12.9% #
-[ 4, 5) 83 8.3% 21.2% #
-[ 5, 6) 85 8.5% 29.7% #
-[ 6, 7) 92 9.2% 38.9% #
-[ 7, 9) 150 15.0% 53.9% ##
-[ 9, 11) 144 14.4% 68.3% #
-[ 11, 14) 307 30.7% 99.0% ###
-[ 14, 17) 10 1.0% 100.0%
-[ 17, 21) 0 0.0% 100.0%
-[ 21, 26) 0 0.0% 100.0%
-[ 26, 32) 0 0.0% 100.0%
-[ 32, 39) 0 0.0% 100.0%
-[ 39, 48) 0 0.0% 100.0%
-[ 48, 58) 0 0.0% 100.0%
-[ 58, 70) 0 0.0% 100.0%
-[ 70, inf) 0 0.0% 100.0%
-Benchmark___10B_mux__100_chunks___1KB 300 22817830 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 300 Min: 6 Max: 28 Avg: 22.30
-------------------------------------------------------------
-[ 6, 7) 15 5.0% 5.0% #
-[ 7, 8) 4 1.3% 6.3%
-[ 8, 9) 9 3.0% 9.3%
-[ 9, 10) 0 0.0% 9.3%
-[ 10, 12) 0 0.0% 9.3%
-[ 12, 14) 0 0.0% 9.3%
-[ 14, 17) 2 0.7% 10.0%
-[ 17, 21) 24 8.0% 18.0% #
-[ 21, 26) 207 69.0% 87.0% #######
-[ 26, 32) 39 13.0% 100.0% #
-[ 32, 39) 0 0.0% 100.0%
-[ 39, 48) 0 0.0% 100.0%
-[ 48, 59) 0 0.0% 100.0%
-[ 59, 73) 0 0.0% 100.0%
-[ 73, 90) 0 0.0% 100.0%
-[ 90, 111) 0 0.0% 100.0%
-[111, inf) 0 0.0% 100.0%
-Benchmark___10B_mux__100_chunks___1KB-2 1000 8831943 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 1000 Min: 1 Max: 17 Avg: 8.35
-------------------------------------------------------------
-[ 1, 2) 12 1.2% 1.2%
-[ 2, 3) 155 15.5% 16.7% ##
-[ 3, 4) 59 5.9% 22.6% #
-[ 4, 5) 48 4.8% 27.4%
-[ 5, 7) 134 13.4% 40.8% #
-[ 7, 9) 91 9.1% 49.9% #
-[ 9, 12) 132 13.2% 63.1% #
-[ 12, 15) 328 32.8% 95.9% ###
-[ 15, 19) 41 4.1% 100.0%
-[ 19, 24) 0 0.0% 100.0%
-[ 24, 30) 0 0.0% 100.0%
-[ 30, 37) 0 0.0% 100.0%
-[ 37, 46) 0 0.0% 100.0%
-[ 46, 57) 0 0.0% 100.0%
-[ 57, 70) 0 0.0% 100.0%
-[ 70, 86) 0 0.0% 100.0%
-[ 86, inf) 0 0.0% 100.0%
-Benchmark___10B_mux___1K_chunks___10B 100 123136622 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 100 Min: 5 Max: 173 Avg: 122.60
-------------------------------------------------------------
-[ 5, 6) 1 1.0% 1.0%
-[ 6, 7) 0 0.0% 1.0%
-[ 7, 8) 0 0.0% 1.0%
-[ 8, 10) 1 1.0% 2.0%
-[ 10, 13) 0 0.0% 2.0%
-[ 13, 18) 1 1.0% 3.0%
-[ 18, 25) 0 0.0% 3.0%
-[ 25, 35) 1 1.0% 4.0%
-[ 35, 50) 2 2.0% 6.0%
-[ 50, 71) 11 11.0% 17.0% #
-[ 71, 101) 22 22.0% 39.0% ##
-[101, 143) 14 14.0% 53.0% #
-[143, 203) 47 47.0% 100.0% #####
-[203, 287) 0 0.0% 100.0%
-[287, 406) 0 0.0% 100.0%
-[406, 574) 0 0.0% 100.0%
-[574, inf) 0 0.0% 100.0%
-Benchmark___10B_mux___1K_chunks___10B-2 300 22274569 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 300 Min: 2 Max: 96 Avg: 21.75
-------------------------------------------------------------
-[ 2, 3) 8 2.7% 2.7%
-[ 3, 4) 23 7.7% 10.3% #
-[ 4, 5) 31 10.3% 20.7% #
-[ 5, 7) 47 15.7% 36.3% ##
-[ 7, 10) 74 24.7% 61.0% ##
-[ 10, 14) 33 11.0% 72.0% #
-[ 14, 20) 12 4.0% 76.0%
-[ 20, 28) 7 2.3% 78.3%
-[ 28, 39) 1 0.3% 78.7%
-[ 39, 54) 4 1.3% 80.0%
-[ 54, 74) 20 6.7% 86.7% #
-[ 74, 101) 40 13.3% 100.0% #
-[101, 138) 0 0.0% 100.0%
-[138, 189) 0 0.0% 100.0%
-[189, 258) 0 0.0% 100.0%
-[258, 352) 0 0.0% 100.0%
-[352, inf) 0 0.0% 100.0%
-Benchmark___10B_mux___1K_chunks__100B 100 143814971 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 100 Min: 14 Max: 204 Avg: 143.32
-------------------------------------------------------------
-[ 14, 15) 1 1.0% 1.0%
-[ 15, 16) 0 0.0% 1.0%
-[ 16, 18) 0 0.0% 1.0%
-[ 18, 20) 0 0.0% 1.0%
-[ 20, 24) 0 0.0% 1.0%
-[ 24, 29) 0 0.0% 1.0%
-[ 29, 37) 0 0.0% 1.0%
-[ 37, 48) 0 0.0% 1.0%
-[ 48, 64) 11 11.0% 12.0% #
-[ 64, 87) 15 15.0% 27.0% ##
-[ 87, 120) 2 2.0% 29.0%
-[120, 166) 26 26.0% 55.0% ###
-[166, 232) 45 45.0% 100.0% #####
-[232, 326) 0 0.0% 100.0%
-[326, 459) 0 0.0% 100.0%
-[459, 649) 0 0.0% 100.0%
-[649, inf) 0 0.0% 100.0%
-Benchmark___10B_mux___1K_chunks__100B-2 200 34125016 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 200 Min: 2 Max: 114 Avg: 33.62
-------------------------------------------------------------
-[ 2, 3) 10 5.0% 5.0% #
-[ 3, 4) 6 3.0% 8.0%
-[ 4, 5) 10 5.0% 13.0% #
-[ 5, 7) 21 10.5% 23.5% #
-[ 7, 10) 26 13.0% 36.5% #
-[ 10, 14) 34 17.0% 53.5% ##
-[ 14, 20) 27 13.5% 67.0% #
-[ 20, 29) 7 3.5% 70.5%
-[ 29, 41) 1 0.5% 71.0%
-[ 41, 57) 2 1.0% 72.0%
-[ 57, 80) 7 3.5% 75.5%
-[ 80, 111) 45 22.5% 98.0% ##
-[111, 154) 4 2.0% 100.0%
-[154, 213) 0 0.0% 100.0%
-[213, 294) 0 0.0% 100.0%
-[294, 405) 0 0.0% 100.0%
-[405, inf) 0 0.0% 100.0%
-Benchmark___10B_mux___1K_chunks___1KB 100 136987808 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 100 Min: 5 Max: 233 Avg: 136.46
-------------------------------------------------------------
-[ 5, 6) 1 1.0% 1.0%
-[ 6, 7) 0 0.0% 1.0%
-[ 7, 9) 1 1.0% 2.0%
-[ 9, 11) 1 1.0% 3.0%
-[ 11, 15) 1 1.0% 4.0%
-[ 15, 21) 3 3.0% 7.0%
-[ 21, 29) 0 0.0% 7.0%
-[ 29, 41) 0 0.0% 7.0%
-[ 41, 59) 3 3.0% 10.0%
-[ 59, 84) 11 11.0% 21.0% #
-[ 84, 121) 24 24.0% 45.0% ##
-[121, 174) 25 25.0% 70.0% ###
-[174, 250) 30 30.0% 100.0% ###
-[250, 360) 0 0.0% 100.0%
-[360, 518) 0 0.0% 100.0%
-[518, 746) 0 0.0% 100.0%
-[746, inf) 0 0.0% 100.0%
-Benchmark___10B_mux___1K_chunks___1KB-2 200 35831221 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 200 Min: 2 Max: 123 Avg: 35.40
-------------------------------------------------------------
-[ 2, 3) 21 10.5% 10.5% #
-[ 3, 4) 12 6.0% 16.5% #
-[ 4, 5) 4 2.0% 18.5%
-[ 5, 7) 8 4.0% 22.5%
-[ 7, 10) 18 9.0% 31.5% #
-[ 10, 14) 21 10.5% 42.0% #
-[ 14, 20) 21 10.5% 52.5% #
-[ 20, 29) 7 3.5% 56.0%
-[ 29, 41) 11 5.5% 61.5% #
-[ 41, 58) 23 11.5% 73.0% #
-[ 58, 82) 28 14.0% 87.0% #
-[ 82, 115) 25 12.5% 99.5% #
-[115, 161) 1 0.5% 100.0%
-[161, 224) 0 0.0% 100.0%
-[224, 311) 0 0.0% 100.0%
-[311, 432) 0 0.0% 100.0%
-[432, inf) 0 0.0% 100.0%
-Benchmark__100B_mux__100_chunks___10B 500 20748811 ns/op 0.01 MB/s
-Histogram (unit: ms)
-Count: 500 Min: 6 Max: 27 Avg: 20.33
-------------------------------------------------------------
-[ 6, 7) 1 0.2% 0.2%
-[ 7, 8) 16 3.2% 3.4%
-[ 8, 9) 3 0.6% 4.0%
-[ 9, 10) 6 1.2% 5.2%
-[ 10, 12) 4 0.8% 6.0%
-[ 12, 14) 0 0.0% 6.0%
-[ 14, 17) 7 1.4% 7.4%
-[ 17, 21) 181 36.2% 43.6% ####
-[ 21, 26) 278 55.6% 99.2% ######
-[ 26, 32) 4 0.8% 100.0%
-[ 32, 39) 0 0.0% 100.0%
-[ 39, 48) 0 0.0% 100.0%
-[ 48, 59) 0 0.0% 100.0%
-[ 59, 72) 0 0.0% 100.0%
-[ 72, 89) 0 0.0% 100.0%
-[ 89, 109) 0 0.0% 100.0%
-[109, inf) 0 0.0% 100.0%
-Benchmark__100B_mux__100_chunks___10B-2 1000 7604070 ns/op 0.03 MB/s
-Histogram (unit: ms)
-Count: 1000 Min: 2 Max: 15 Avg: 7.10
-------------------------------------------------------------
-[ 2, 3) 49 4.9% 4.9%
-[ 3, 4) 90 9.0% 13.9% #
-[ 4, 5) 124 12.4% 26.3% #
-[ 5, 6) 117 11.7% 38.0% #
-[ 6, 7) 100 10.0% 48.0% #
-[ 7, 9) 185 18.5% 66.5% ##
-[ 9, 11) 169 16.9% 83.4% ##
-[ 11, 14) 141 14.1% 97.5% #
-[ 14, 17) 25 2.5% 100.0%
-[ 17, 21) 0 0.0% 100.0%
-[ 21, 26) 0 0.0% 100.0%
-[ 26, 32) 0 0.0% 100.0%
-[ 32, 39) 0 0.0% 100.0%
-[ 39, 48) 0 0.0% 100.0%
-[ 48, 58) 0 0.0% 100.0%
-[ 58, 70) 0 0.0% 100.0%
-[ 70, inf) 0 0.0% 100.0%
-Benchmark__100B_mux__100_chunks__100B 300 21922577 ns/op 0.01 MB/s
-Histogram (unit: ms)
-Count: 300 Min: 6 Max: 30 Avg: 21.45
-------------------------------------------------------------
-[ 6, 7) 17 5.7% 5.7% #
-[ 7, 8) 2 0.7% 6.3%
-[ 8, 9) 4 1.3% 7.7%
-[ 9, 10) 0 0.0% 7.7%
-[ 10, 12) 9 3.0% 10.7%
-[ 12, 14) 2 0.7% 11.3%
-[ 14, 17) 1 0.3% 11.7%
-[ 17, 21) 26 8.7% 20.3% #
-[ 21, 26) 144 48.0% 68.3% #####
-[ 26, 32) 95 31.7% 100.0% ###
-[ 32, 40) 0 0.0% 100.0%
-[ 40, 50) 0 0.0% 100.0%
-[ 50, 62) 0 0.0% 100.0%
-[ 62, 77) 0 0.0% 100.0%
-[ 77, 96) 0 0.0% 100.0%
-[ 96, 120) 0 0.0% 100.0%
-[120, inf) 0 0.0% 100.0%
-Benchmark__100B_mux__100_chunks__100B-2 1000 9164254 ns/op 0.02 MB/s
-Histogram (unit: ms)
-Count: 1000 Min: 2 Max: 18 Avg: 8.66
-------------------------------------------------------------
-[ 2, 3) 35 3.5% 3.5%
-[ 3, 4) 44 4.4% 7.9%
-[ 4, 5) 78 7.8% 15.7% #
-[ 5, 6) 102 10.2% 25.9% #
-[ 6, 8) 168 16.8% 42.7% ##
-[ 8, 10) 155 15.5% 58.2% ##
-[ 10, 13) 236 23.6% 81.8% ##
-[ 13, 16) 137 13.7% 95.5% #
-[ 16, 20) 45 4.5% 100.0%
-[ 20, 25) 0 0.0% 100.0%
-[ 25, 31) 0 0.0% 100.0%
-[ 31, 38) 0 0.0% 100.0%
-[ 38, 47) 0 0.0% 100.0%
-[ 47, 58) 0 0.0% 100.0%
-[ 58, 71) 0 0.0% 100.0%
-[ 71, 87) 0 0.0% 100.0%
-[ 87, inf) 0 0.0% 100.0%
-Benchmark__100B_mux__100_chunks___1KB 300 23892634 ns/op 0.01 MB/s
-Histogram (unit: ms)
-Count: 300 Min: 6 Max: 31 Avg: 23.41
-------------------------------------------------------------
-[ 6, 7) 12 4.0% 4.0%
-[ 7, 8) 9 3.0% 7.0%
-[ 8, 9) 5 1.7% 8.7%
-[ 9, 10) 1 0.3% 9.0%
-[ 10, 12) 1 0.3% 9.3%
-[ 12, 14) 2 0.7% 10.0%
-[ 14, 17) 1 0.3% 10.3%
-[ 17, 21) 10 3.3% 13.7%
-[ 21, 26) 122 40.7% 54.3% ####
-[ 26, 32) 137 45.7% 100.0% #####
-[ 32, 40) 0 0.0% 100.0%
-[ 40, 50) 0 0.0% 100.0%
-[ 50, 63) 0 0.0% 100.0%
-[ 63, 79) 0 0.0% 100.0%
-[ 79, 99) 0 0.0% 100.0%
-[ 99, 123) 0 0.0% 100.0%
-[123, inf) 0 0.0% 100.0%
-Benchmark__100B_mux__100_chunks___1KB-2 1000 9288578 ns/op 0.02 MB/s
-Histogram (unit: ms)
-Count: 1000 Min: 1 Max: 19 Avg: 8.80
-------------------------------------------------------------
-[ 1, 2) 6 0.6% 0.6%
-[ 2, 3) 158 15.8% 16.4% ##
-[ 3, 4) 70 7.0% 23.4% #
-[ 4, 5) 54 5.4% 28.8% #
-[ 5, 7) 110 11.0% 39.8% #
-[ 7, 9) 83 8.3% 48.1% #
-[ 9, 12) 183 18.3% 66.4% ##
-[ 12, 15) 142 14.2% 80.6% #
-[ 15, 19) 193 19.3% 99.9% ##
-[ 19, 24) 1 0.1% 100.0%
-[ 24, 30) 0 0.0% 100.0%
-[ 30, 38) 0 0.0% 100.0%
-[ 38, 48) 0 0.0% 100.0%
-[ 48, 60) 0 0.0% 100.0%
-[ 60, 74) 0 0.0% 100.0%
-[ 74, 91) 0 0.0% 100.0%
-[ 91, inf) 0 0.0% 100.0%
-Benchmark__100B_mux___1K_chunks___10B 100 120357166 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 100 Min: 4 Max: 186 Avg: 119.88
-------------------------------------------------------------
-[ 4, 5) 1 1.0% 1.0%
-[ 5, 6) 0 0.0% 1.0%
-[ 6, 8) 0 0.0% 1.0%
-[ 8, 10) 0 0.0% 1.0%
-[ 10, 14) 0 0.0% 1.0%
-[ 14, 19) 1 1.0% 2.0%
-[ 19, 27) 0 0.0% 2.0%
-[ 27, 38) 0 0.0% 2.0%
-[ 38, 54) 3 3.0% 5.0%
-[ 54, 76) 22 22.0% 27.0% ##
-[ 76, 108) 16 16.0% 43.0% ##
-[108, 153) 18 18.0% 61.0% ##
-[153, 217) 39 39.0% 100.0% ####
-[217, 307) 0 0.0% 100.0%
-[307, 435) 0 0.0% 100.0%
-[435, 616) 0 0.0% 100.0%
-[616, inf) 0 0.0% 100.0%
-Benchmark__100B_mux___1K_chunks___10B-2 300 23110788 ns/op 0.01 MB/s
-Histogram (unit: ms)
-Count: 300 Min: 2 Max: 97 Avg: 22.60
-------------------------------------------------------------
-[ 2, 3) 7 2.3% 2.3%
-[ 3, 4) 26 8.7% 11.0% #
-[ 4, 5) 33 11.0% 22.0% #
-[ 5, 7) 45 15.0% 37.0% ##
-[ 7, 10) 46 15.3% 52.3% ##
-[ 10, 14) 48 16.0% 68.3% ##
-[ 14, 20) 19 6.3% 74.7% #
-[ 20, 28) 8 2.7% 77.3%
-[ 28, 39) 3 1.0% 78.3%
-[ 39, 54) 2 0.7% 79.0%
-[ 54, 74) 32 10.7% 89.7% #
-[ 74, 102) 31 10.3% 100.0% #
-[102, 140) 0 0.0% 100.0%
-[140, 191) 0 0.0% 100.0%
-[191, 261) 0 0.0% 100.0%
-[261, 355) 0 0.0% 100.0%
-[355, inf) 0 0.0% 100.0%
-Benchmark__100B_mux___1K_chunks__100B 100 146211502 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 100 Min: 11 Max: 220 Avg: 145.68
-------------------------------------------------------------
-[ 11, 12) 1 1.0% 1.0%
-[ 12, 13) 1 1.0% 2.0%
-[ 13, 15) 0 0.0% 2.0%
-[ 15, 17) 0 0.0% 2.0%
-[ 17, 21) 0 0.0% 2.0%
-[ 21, 26) 0 0.0% 2.0%
-[ 26, 34) 1 1.0% 3.0%
-[ 34, 46) 1 1.0% 4.0%
-[ 46, 63) 10 10.0% 14.0% #
-[ 63, 87) 12 12.0% 26.0% #
-[ 87, 122) 9 9.0% 35.0% #
-[122, 172) 19 19.0% 54.0% ##
-[172, 243) 46 46.0% 100.0% #####
-[243, 345) 0 0.0% 100.0%
-[345, 491) 0 0.0% 100.0%
-[491, 700) 0 0.0% 100.0%
-[700, inf) 0 0.0% 100.0%
-Benchmark__100B_mux___1K_chunks__100B-2 200 36485527 ns/op 0.01 MB/s
-Histogram (unit: ms)
-Count: 200 Min: 2 Max: 114 Avg: 36.01
-------------------------------------------------------------
-[ 2, 3) 12 6.0% 6.0% #
-[ 3, 4) 7 3.5% 9.5%
-[ 4, 5) 3 1.5% 11.0%
-[ 5, 7) 17 8.5% 19.5% #
-[ 7, 10) 28 14.0% 33.5% #
-[ 10, 14) 29 14.5% 48.0% #
-[ 14, 20) 25 12.5% 60.5% #
-[ 20, 29) 13 6.5% 67.0% #
-[ 29, 41) 5 2.5% 69.5%
-[ 41, 57) 0 0.0% 69.5%
-[ 57, 80) 6 3.0% 72.5%
-[ 80, 111) 53 26.5% 99.0% ###
-[111, 154) 2 1.0% 100.0%
-[154, 213) 0 0.0% 100.0%
-[213, 294) 0 0.0% 100.0%
-[294, 405) 0 0.0% 100.0%
-[405, inf) 0 0.0% 100.0%
-Benchmark__100B_mux___1K_chunks___1KB 100 145242261 ns/op 0.00 MB/s
-Histogram (unit: ms)
-Count: 100 Min: 7 Max: 235 Avg: 144.71
-------------------------------------------------------------
-[ 7, 8) 1 1.0% 1.0%
-[ 8, 9) 2 2.0% 3.0%
-[ 9, 11) 1 1.0% 4.0%
-[ 11, 13) 1 1.0% 5.0%
-[ 13, 17) 0 0.0% 5.0%
-[ 17, 23) 2 2.0% 7.0%
-[ 23, 31) 1 1.0% 8.0%
-[ 31, 43) 0 0.0% 8.0%
-[ 43, 61) 1 1.0% 9.0%
-[ 61, 86) 10 10.0% 19.0% #
-[ 86, 123) 24 24.0% 43.0% ##
-[123, 176) 24 24.0% 67.0% ##
-[176, 252) 33 33.0% 100.0% ###
-[252, 362) 0 0.0% 100.0%
-[362, 520) 0 0.0% 100.0%
-[520, 748) 0 0.0% 100.0%
-[748, inf) 0 0.0% 100.0%
-Benchmark__100B_mux___1K_chunks___1KB-2 200 37420006 ns/op 0.01 MB/s
-Histogram (unit: ms)
-Count: 200 Min: 2 Max: 125 Avg: 36.95
-------------------------------------------------------------
-[ 2, 3) 37 18.5% 18.5% ##
-[ 3, 4) 6 3.0% 21.5%
-[ 4, 5) 2 1.0% 22.5%
-[ 5, 7) 16 8.0% 30.5% #
-[ 7, 10) 8 4.0% 34.5%
-[ 10, 14) 16 8.0% 42.5% #
-[ 14, 20) 14 7.0% 49.5% #
-[ 20, 29) 12 6.0% 55.5% #
-[ 29, 42) 13 6.5% 62.0% #
-[ 42, 59) 20 10.0% 72.0% #
-[ 59, 83) 22 11.0% 83.0% #
-[ 83, 117) 30 15.0% 98.0% ##
-[117, 163) 4 2.0% 100.0%
-[163, 227) 0 0.0% 100.0%
-[227, 316) 0 0.0% 100.0%
-[316, 438) 0 0.0% 100.0%
-[438, inf) 0 0.0% 100.0%
diff --git a/runtimes/google/ipc/benchmarks/bm/main.go b/runtimes/google/ipc/benchmarks/bm/main.go
deleted file mode 100644
index 4a12cc0..0000000
--- a/runtimes/google/ipc/benchmarks/bm/main.go
+++ /dev/null
@@ -1,187 +0,0 @@
-// A simple command-line tool to run IPC benchmarks.
-package main
-
-import (
- "flag"
- "fmt"
- "os"
- "runtime"
- "strconv"
- "strings"
- "testing"
-
- "v.io/core/veyron/lib/testutil"
- "v.io/core/veyron/profiles"
- "v.io/core/veyron/runtimes/google/ipc/benchmarks"
-
- "v.io/core/veyron2"
- "v.io/core/veyron2/rt"
-)
-
-var (
- vrt veyron2.Runtime
- address string
-
- cpuList []int
-
- histogram = flag.Bool("histogram", false, "If ture, output histogram of the benchmark results.")
-)
-
-func runBenchmarkEcho() {
- payloadSizes := []int{1, 10, 100, 1000, 10000, 100000}
-
- for _, size := range payloadSizes {
- name := fmt.Sprintf("%sB", formatNum(size))
- runBenchmark(name, func(b *testing.B, stats *testutil.BenchStats) {
- benchmarks.CallEcho(b, vrt.NewContext(), address, b.N, size, stats)
- })
- }
-}
-
-func runBenchmarkEchoStream() {
- chunkCnts := []int{1, 10, 100, 1000}
- payloadSizes := []int{1, 10, 100, 1000, 10000, 100000}
-
- for _, cnt := range chunkCnts {
- for _, size := range payloadSizes {
- name := formatNum(cnt)
- if cnt == 1 {
- name += "_chunk_"
- } else {
- name += "_chunks"
- }
- name += fmt.Sprintf("%sB", formatNum(size))
- runBenchmark(name, func(b *testing.B, stats *testutil.BenchStats) {
- benchmarks.CallEchoStream(b, vrt.NewContext(), address, b.N, cnt, size, stats)
- })
- }
- }
-}
-
-func runBenchmarkEchoStreamPerChunk() {
- payloadSizes := []int{1, 10, 100, 1000, 10000, 100000}
-
- for _, size := range payloadSizes {
- name := fmt.Sprintf("__per_chunk%sB", formatNum(size))
- runBenchmark(name, func(b *testing.B, stats *testutil.BenchStats) {
- benchmarks.CallEchoStream(b, vrt.NewContext(), address, 1, b.N, size, stats)
- })
- }
-}
-
-func runBenchmarkMux() {
- payloadSizes := []int{10, 100}
-
- chunkCntsB := []int{100, 1000}
- payloadSizesB := []int{10, 100, 1000}
-
- for _, size := range payloadSizes {
- for _, cntB := range chunkCntsB {
- for _, sizeB := range payloadSizesB {
- name := fmt.Sprintf("%sB_mux%s", formatNum(size), formatNum(cntB))
- if cntB == 1 {
- name += "_chunk_"
- } else {
- name += "_chunks"
- }
- name += fmt.Sprintf("%sB", formatNum(sizeB))
- runBenchmark(name, func(b *testing.B, stats *testutil.BenchStats) {
- dummyB := testing.B{}
- _, stop := benchmarks.StartEchoStream(&dummyB, vrt.NewContext(), address, 0, cntB, sizeB, nil)
-
- b.ResetTimer()
- benchmarks.CallEcho(b, vrt.NewContext(), address, b.N, size, stats)
- b.StopTimer()
-
- stop()
- })
- }
- }
- }
-}
-
-// runBenchmark runs a single bencmark function 'f'.
-func runBenchmark(name string, f func(*testing.B, *testutil.BenchStats)) {
- for _, cpu := range cpuList {
- runtime.GOMAXPROCS(cpu)
-
- benchName := "Benchmark" + name
- if cpu != 1 {
- benchName += fmt.Sprintf("-%d", cpu)
- }
-
- var stats *testutil.BenchStats
- if *histogram {
- stats = testutil.NewBenchStats(16)
- }
-
- r := testing.Benchmark(func(b *testing.B) {
- f(b, stats)
- })
-
- fmt.Printf("%s\t%s\n", benchName, r)
- if stats != nil {
- stats.Print(os.Stdout)
- }
- }
-}
-
-// formatNum formats the given number n with an optional metric prefix
-// and padding with underscores if necessary.
-func formatNum(n int) string {
- value := float32(n)
- var prefix string
- for _, p := range []string{"", "K", "M", "G", "T"} {
- if value < 1000 {
- prefix = p
- break
- }
- value /= 1000
- }
-
- return strings.Replace(fmt.Sprintf("%*.0f%s", 5-len(prefix), value, prefix), " ", "_", -1)
-}
-
-// parseCpuList looks up the existing '-test.cpu' flag value and parses it into
-// the list of cpus.
-func parseCpuList() {
- for _, v := range strings.Split(flag.Lookup("test.cpu").Value.String(), ",") {
- v = strings.TrimSpace(v)
- if v == "" {
- continue
- }
- cpu, err := strconv.Atoi(v)
- if err != nil || cpu <= 0 {
- fmt.Fprintf(os.Stderr, "invalid -test.cpu %q\n", v)
- os.Exit(1)
- }
- cpuList = append(cpuList, cpu)
- }
- if cpuList == nil {
- cpuList = append(cpuList, runtime.GOMAXPROCS(-1))
- }
-}
-
-func main() {
- flag.Parse()
- parseCpuList()
-
- var err error
- vrt, err = rt.New()
- if err != nil {
- panic(err)
- }
- defer vrt.Cleanup()
-
- var stop func()
- address, stop = benchmarks.StartServer(vrt, profiles.LocalListenSpec)
-
- benchmarks.CallEcho(&testing.B{}, vrt.NewContext(), address, 1, 0, nil) // Create VC.
-
- runBenchmarkEcho()
- runBenchmarkEchoStream()
- runBenchmarkEchoStreamPerChunk()
- runBenchmarkMux()
-
- stop()
-}
diff --git a/runtimes/google/ipc/benchmarks/ipc_test.go b/runtimes/google/ipc/benchmarks/ipc_test.go
deleted file mode 100644
index b4455b3..0000000
--- a/runtimes/google/ipc/benchmarks/ipc_test.go
+++ /dev/null
@@ -1,141 +0,0 @@
-package benchmarks_test
-
-import (
- "testing"
-
- "v.io/core/veyron/profiles"
- "v.io/core/veyron/runtimes/google/ipc/benchmarks"
-
- "v.io/core/veyron2"
- "v.io/core/veyron2/rt"
-)
-
-var vrt veyron2.Runtime
-var address string
-
-func init() {
- var err error
- vrt, err = rt.New()
- if err != nil {
- panic(err)
- }
-
- address, _ = benchmarks.StartServer(vrt, profiles.LocalListenSpec)
-}
-
-func runBenchmarkEcho(b *testing.B, payloadSize int) {
- benchmarks.CallEcho(&testing.B{}, vrt.NewContext(), address, 1, 0, nil) // Create VC.
- benchmarks.CallEcho(b, vrt.NewContext(), address, b.N, payloadSize, nil)
-}
-
-func runBenchmarkEchoStream(b *testing.B, iterations, chunkCnt, payloadSize int) {
- benchmarks.CallEcho(&testing.B{}, vrt.NewContext(), address, 1, 0, nil) // Create VC.
- benchmarks.CallEchoStream(b, vrt.NewContext(), address, iterations, chunkCnt, payloadSize, nil)
-}
-
-func runBenchmarkMux(b *testing.B, payloadSize, chunkCntB, payloadSizeB int) {
- benchmarks.CallEcho(&testing.B{}, vrt.NewContext(), address, 1, 0, nil) // Create VC.
- _, stop := benchmarks.StartEchoStream(&testing.B{}, vrt.NewContext(), address, 0, chunkCntB, payloadSizeB, nil)
- benchmarks.CallEcho(b, vrt.NewContext(), address, b.N, payloadSize, nil)
- stop()
-}
-
-// Benchmarks for non-streaming RPC.
-func Benchmark____1B(b *testing.B) {
- runBenchmarkEcho(b, 1)
-}
-
-func Benchmark___10B(b *testing.B) {
- runBenchmarkEcho(b, 10)
-}
-
-func Benchmark___1KB(b *testing.B) {
- runBenchmarkEcho(b, 1000)
-}
-
-func Benchmark_100KB(b *testing.B) {
- runBenchmarkEcho(b, 100000)
-}
-
-// Benchmarks for streaming RPC.
-func Benchmark____1_chunk_____1B(b *testing.B) {
- runBenchmarkEchoStream(b, b.N, 1, 1)
-}
-
-func Benchmark____1_chunk____10B(b *testing.B) {
- runBenchmarkEchoStream(b, b.N, 1, 10)
-}
-
-func Benchmark____1_chunk____1KB(b *testing.B) {
- runBenchmarkEchoStream(b, b.N, 1, 1000)
-}
-
-func Benchmark____1_chunk___10KB(b *testing.B) {
- runBenchmarkEchoStream(b, b.N, 1, 10000)
-}
-
-func Benchmark___10_chunks____1B(b *testing.B) {
- runBenchmarkEchoStream(b, b.N, 10, 1)
-}
-
-func Benchmark___10_chunks___10B(b *testing.B) {
- runBenchmarkEchoStream(b, b.N, 10, 10)
-}
-
-func Benchmark___10_chunks___1KB(b *testing.B) {
- runBenchmarkEchoStream(b, b.N, 10, 1000)
-}
-
-func Benchmark___10_chunks__10KB(b *testing.B) {
- runBenchmarkEchoStream(b, b.N, 10, 10000)
-}
-
-func Benchmark__100_chunks____1B(b *testing.B) {
- runBenchmarkEchoStream(b, b.N, 100, 1)
-}
-
-func Benchmark__100_chunks___10B(b *testing.B) {
- runBenchmarkEchoStream(b, b.N, 100, 10)
-}
-
-func Benchmark__100_chunks___1KB(b *testing.B) {
- runBenchmarkEchoStream(b, b.N, 100, 1000)
-}
-
-func Benchmark__100_chunks__10KB(b *testing.B) {
- runBenchmarkEchoStream(b, b.N, 100, 10000)
-}
-
-// Benchmarks for per-chunk throughput in streaming RPC.
-func Benchmark__per_chunk____1B(b *testing.B) {
- runBenchmarkEchoStream(b, 1, b.N, 1)
-}
-
-func Benchmark__per_chunk___10B(b *testing.B) {
- runBenchmarkEchoStream(b, 1, b.N, 10)
-}
-
-func Benchmark__per_chunk___1KB(b *testing.B) {
- runBenchmarkEchoStream(b, 1, b.N, 1000)
-}
-
-func Benchmark__per_chunk__10KB(b *testing.B) {
- runBenchmarkEchoStream(b, 1, b.N, 10000)
-}
-
-// Benchmarks for non-streaming RPC while running streaming RPC in background.
-func Benchmark____1B_mux___10_chunks___10B(b *testing.B) {
- runBenchmarkMux(b, 1, 10, 10)
-}
-
-func Benchmark____1B_mux___10_chunks___1KB(b *testing.B) {
- runBenchmarkMux(b, 1, 10, 1000)
-}
-
-func Benchmark____1B_mux__100_chunks___10B(b *testing.B) {
- runBenchmarkMux(b, 1, 100, 10)
-}
-
-func Benchmark____1B_mux__100_chunks___1KB(b *testing.B) {
- runBenchmarkMux(b, 1, 100, 1000)
-}
diff --git a/runtimes/google/ipc/stream/benchmark/RESULTS.txt b/runtimes/google/ipc/stream/benchmark/RESULTS.txt
index 826e4de..b60e4ed 100644
--- a/runtimes/google/ipc/stream/benchmark/RESULTS.txt
+++ b/runtimes/google/ipc/stream/benchmark/RESULTS.txt
@@ -1,96 +1,72 @@
-Date: 12/14/2014
+Date: 01/06/2015
Platform: Intel(R) Xeon(R) CPU E5-2689 0 @ 2.60GHz, 66114888KB Memory
-$ veyron go test -test.bench=. -test.cpu=1 -test.benchtime=5s \
+$ v23 go test -bench=. -cpu=1 -benchtime=5s \
v.io/core/veyron/runtimes/google/ipc/stream/benchmark
-Benchmark_throughput_TCP_1Conn 1000000 9874 ns/op 5184.85 MB/s
-Benchmark_throughput_TCP_2Conns 1000000 9815 ns/op 5216.01 MB/s
-Benchmark_throughput_TCP_4Conns 1000000 10088 ns/op 5074.94 MB/s
-Benchmark_throughput_TCP_8Conns 500000 12228 ns/op 4186.82 MB/s
-Benchmark_throughput_Pipe_1Conn 500000 24337 ns/op 2103.72 MB/s
-Benchmark_throughput_Pipe_2Conns 500000 28723 ns/op 1782.52 MB/s
-Benchmark_throughput_Pipe_4Conns 500000 28823 ns/op 1776.32 MB/s
-Benchmark_throughput_Pipe_8Conns 500000 27081 ns/op 1890.57 MB/s
-Benchmark_throughput_Flow_1VIF_1VC_1Flow 200000 31567 ns/op 1621.93 MB/s
-Benchmark_throughput_Flow_1VIF_1VC_2Flow 200000 31626 ns/op 1618.90 MB/s
-Benchmark_throughput_Flow_1VIF_1VC_8Flow 200000 36366 ns/op 1407.88 MB/s
-Benchmark_throughput_Flow_1VIF_2VC_2Flow 200000 32417 ns/op 1579.41 MB/s
-Benchmark_throughput_Flow_1VIF_2VC_8Flow 200000 35595 ns/op 1438.37 MB/s
-Benchmark_throughput_Flow_2VIF_4VC_8Flow 200000 38216 ns/op 1339.73 MB/s
-Benchmark_throughput_TLS_1Conn 20000 426727 ns/op 119.98 MB/s
-Benchmark_throughput_TLS_2Conns 20000 419540 ns/op 122.04 MB/s
-Benchmark_throughput_TLS_4Conns 20000 428137 ns/op 119.59 MB/s
-Benchmark_throughput_TLS_8Conns 20000 426041 ns/op 120.18 MB/s
-Benchmark_throughput_Flow_1VIF_1VC_1FlowTLS 20000 470284 ns/op 108.87 MB/s
-Benchmark_throughput_Flow_1VIF_1VC_2FlowTLS 20000 473181 ns/op 108.20 MB/s
-Benchmark_throughput_Flow_1VIF_1VC_8FlowTLS 20000 482533 ns/op 106.11 MB/s
-Benchmark_throughput_Flow_1VIF_2VC_2FlowTLS 20000 472181 ns/op 108.43 MB/s
-Benchmark_throughput_Flow_1VIF_2VC_8FlowTLS 20000 480154 ns/op 106.63 MB/s
-Benchmark_throughput_Flow_2VIF_4VC_8FlowTLS 20000 481803 ns/op 106.27 MB/s
-
-Benchmark_dial_VIF 500000 15965 ns/op
-Histogram (unit: µs)
-Count: 500000 Min: 4 Max: 19523 Avg: 15.31
-------------------------------------------------------------
-[ 4, 5) 9404 1.9% 1.9%
-[ 5, 6) 320133 64.0% 65.9% ######
-[ 6, 9) 157038 31.4% 97.3% ###
-[ 9, 16) 8766 1.8% 99.1%
-[ 16, 29) 3348 0.7% 99.7%
-[ 29, 55) 134 0.0% 99.8%
-[ 55, 107) 50 0.0% 99.8%
-[ 107, 207) 7 0.0% 99.8%
-[ 207, 401) 0 0.0% 99.8%
-[ 401, 776) 1 0.0% 99.8%
-[ 776, 1500) 120 0.0% 99.8%
-[ 1500, 2900) 138 0.0% 99.8%
-[ 2900, 5606) 681 0.1% 100.0%
-[ 5606, 10834) 167 0.0% 100.0%
-[10834, 20936) 13 0.0% 100.0%
-[20936, 40454) 0 0.0% 100.0%
-[40454, inf) 0 0.0% 100.0%
-
-Benchmark_dial_VIF_TLS 500 12015788 ns/op
-Histogram (unit: ms)
-Count: 500 Min: 11 Max: 13 Avg: 11.34
-------------------------------------------------------------
-[ 11, 12) 350 70.0% 70.0% #######
-[ 12, 13) 132 26.4% 96.4% ###
-[ 13, 14) 18 3.6% 100.0%
-[ 14, 15) 0 0.0% 100.0%
-[ 15, 16) 0 0.0% 100.0%
-[ 16, 17) 0 0.0% 100.0%
-[ 17, 18) 0 0.0% 100.0%
-[ 18, 19) 0 0.0% 100.0%
-[ 19, 20) 0 0.0% 100.0%
-[ 20, 21) 0 0.0% 100.0%
-[ 21, 22) 0 0.0% 100.0%
-[ 22, 23) 0 0.0% 100.0%
-[ 23, 24) 0 0.0% 100.0%
-[ 24, 25) 0 0.0% 100.0%
-[ 25, 26) 0 0.0% 100.0%
-[ 26, 27) 0 0.0% 100.0%
-[ 27, inf) 0 0.0% 100.0%
-
-Benchmark_dial_VC_TLS 500 15909783 ns/op
-Histogram (unit: ms)
-Count: 500 Min: 15 Max: 20 Avg: 15.41
-------------------------------------------------------------
-[ 15, 16) 356 71.2% 71.2% #######
-[ 16, 17) 92 18.4% 89.6% ##
-[ 17, 18) 47 9.4% 99.0% #
-[ 18, 19) 4 0.8% 99.8%
-[ 19, 20) 0 0.0% 99.8%
-[ 20, 21) 1 0.2% 100.0%
-[ 21, 22) 0 0.0% 100.0%
-[ 22, 24) 0 0.0% 100.0%
-[ 24, 26) 0 0.0% 100.0%
-[ 26, 28) 0 0.0% 100.0%
-[ 28, 30) 0 0.0% 100.0%
-[ 30, 33) 0 0.0% 100.0%
-[ 33, 36) 0 0.0% 100.0%
-[ 36, 40) 0 0.0% 100.0%
-[ 40, 44) 0 0.0% 100.0%
-[ 44, 48) 0 0.0% 100.0%
-[ 48, inf) 0 0.0% 100.0%
+Benchmark_dial_VIF 500000 15356 ns/op
+--- Histogram (unit: s)
+ Count: 500000 Min: 4 Max: 15644 Avg: 14.66
+ ------------------------------------------------------------
+ [ 4, 5) 47181 9.4% 9.4% #
+ [ 5, 6) 314973 63.0% 72.4% ######
+ [ 6, 9) 123582 24.7% 97.1% ##
+ [ 9, 15) 10991 2.2% 99.3%
+ [ 15, 28) 2038 0.4% 99.8%
+ [ 28, 53) 129 0.0% 99.8%
+ [ 53, 100) 53 0.0% 99.8%
+ [ 100, 190) 12 0.0% 99.8%
+ [ 190, 362) 0 0.0% 99.8%
+ [ 362, 690) 1 0.0% 99.8%
+ [ 690, 1315) 38 0.0% 99.8%
+ [ 1315, 2505) 165 0.0% 99.8%
+ [ 2505, 4771) 487 0.1% 99.9%
+ [ 4771, 9086) 326 0.1% 100.0%
+ [ 9086, 17301) 24 0.0% 100.0%
+ [17301, 32941) 0 0.0% 100.0%
+ [32941, inf) 0 0.0% 100.0%
+Benchmark_dial_VIF_TLS 500 12681088 ns/op
+--- Histogram (unit: ms)
+ Count: 500 Min: 12 Max: 16 Avg: 12.31
+ ------------------------------------------------------------
+ [ 12, 13) 357 71.4% 71.4% #######
+ [ 13, 14) 133 26.6% 98.0% ###
+ [ 14, 15) 7 1.4% 99.4%
+ [ 15, 16) 2 0.4% 99.8%
+ [ 16, inf) 1 0.2% 100.0%
+Benchmark_dial_VC_TLS 500 16224331 ns/op
+--- Histogram (unit: ms)
+ Count: 500 Min: 15 Max: 22 Avg: 15.60
+ ------------------------------------------------------------
+ [ 15, 16) 279 55.8% 55.8% ######
+ [ 16, 17) 152 30.4% 86.2% ###
+ [ 17, 18) 62 12.4% 98.6% #
+ [ 18, 19) 6 1.2% 99.8%
+ [ 19, 20) 0 0.0% 99.8%
+ [ 20, 21) 0 0.0% 99.8%
+ [ 21, 23) 1 0.2% 100.0%
+ [ 23, inf) 0 0.0% 100.0%
+Benchmark_throughput_TCP_1Conn 1000000 10963 ns/op 4669.96 MB/s
+Benchmark_throughput_TCP_2Conns 1000000 9739 ns/op 5257.14 MB/s
+Benchmark_throughput_TCP_4Conns 500000 11896 ns/op 4303.82 MB/s
+Benchmark_throughput_TCP_8Conns 500000 12867 ns/op 3979.12 MB/s
+Benchmark_throughput_Pipe_1Conn 300000 28233 ns/op 1813.43 MB/s
+Benchmark_throughput_Pipe_2Conns 500000 25339 ns/op 2020.60 MB/s
+Benchmark_throughput_Pipe_4Conns 300000 26626 ns/op 1922.90 MB/s
+Benchmark_throughput_Pipe_8Conns 500000 27340 ns/op 1872.67 MB/s
+Benchmark_throughput_Flow_1VIF_1VC_1Flow 200000 32590 ns/op 1571.02 MB/s
+Benchmark_throughput_Flow_1VIF_1VC_2Flow 200000 32731 ns/op 1564.24 MB/s
+Benchmark_throughput_Flow_1VIF_1VC_8Flow 200000 41289 ns/op 1240.03 MB/s
+Benchmark_throughput_Flow_1VIF_2VC_2Flow 200000 33878 ns/op 1511.30 MB/s
+Benchmark_throughput_Flow_1VIF_2VC_8Flow 200000 40923 ns/op 1251.10 MB/s
+Benchmark_throughput_Flow_2VIF_4VC_8Flow 200000 42293 ns/op 1210.60 MB/s
+Benchmark_throughput_TLS_1Conn 20000 426157 ns/op 120.14 MB/s
+Benchmark_throughput_TLS_2Conns 20000 421319 ns/op 121.52 MB/s
+Benchmark_throughput_TLS_4Conns 20000 425284 ns/op 120.39 MB/s
+Benchmark_throughput_TLS_8Conns 20000 426533 ns/op 120.04 MB/s
+Benchmark_throughput_Flow_1VIF_1VC_1FlowTLS 20000 474126 ns/op 107.99 MB/s
+Benchmark_throughput_Flow_1VIF_1VC_2FlowTLS 20000 472005 ns/op 108.47 MB/s
+Benchmark_throughput_Flow_1VIF_1VC_8FlowTLS 20000 484625 ns/op 105.65 MB/s
+Benchmark_throughput_Flow_1VIF_2VC_2FlowTLS 20000 483762 ns/op 105.84 MB/s
+Benchmark_throughput_Flow_1VIF_2VC_8FlowTLS 20000 485164 ns/op 105.53 MB/s
+Benchmark_throughput_Flow_2VIF_4VC_8FlowTLS 20000 493864 ns/op 103.67 MB/s
diff --git a/runtimes/google/ipc/stream/benchmark/benchmark_test.go b/runtimes/google/ipc/stream/benchmark/benchmark_test.go
new file mode 100644
index 0000000..7122cf7
--- /dev/null
+++ b/runtimes/google/ipc/stream/benchmark/benchmark_test.go
@@ -0,0 +1,17 @@
+package benchmark
+
+import (
+ "os"
+ "testing"
+
+ "v.io/core/veyron/lib/testutil/benchmark"
+)
+
+// A single empty test to avoid:
+// testing: warning: no tests to run
+// from showing up when running benchmarks in this package via "go test"
+func TestNoOp(t *testing.T) {}
+
+func TestMain(m *testing.M) {
+ os.Exit(benchmark.RunTestMain(m))
+}
diff --git a/runtimes/google/ipc/stream/benchmark/dial_test.go b/runtimes/google/ipc/stream/benchmark/dial_test.go
index 7b835ad..a591009 100644
--- a/runtimes/google/ipc/stream/benchmark/dial_test.go
+++ b/runtimes/google/ipc/stream/benchmark/dial_test.go
@@ -2,9 +2,9 @@
import "testing"
-func Benchmark_dial_VIF(b *testing.B) { benchmarkVIFDial(b, securityNone) }
-func Benchmark_dial_VIF_TLS(b *testing.B) { benchmarkVIFDial(b, securityTLS) }
+func Benchmark_dial_VIF(b *testing.B) { benchmarkDialVIF(b, securityNone) }
+func Benchmark_dial_VIF_TLS(b *testing.B) { benchmarkDialVIF(b, securityTLS) }
// Note: We don't benchmark Non-TLC VC Dial for now since it doesn't wait ack
// from the server after sending "OpenVC".
-func Benchmark_dial_VC_TLS(b *testing.B) { benchmarkVCDial(b, securityTLS) }
+func Benchmark_dial_VC_TLS(b *testing.B) { benchmarkDialVC(b, securityTLS) }
diff --git a/runtimes/google/ipc/stream/benchmark/dial_vc.go b/runtimes/google/ipc/stream/benchmark/dial_vc.go
index 3bdcb32..387e392 100644
--- a/runtimes/google/ipc/stream/benchmark/dial_vc.go
+++ b/runtimes/google/ipc/stream/benchmark/dial_vc.go
@@ -1,11 +1,10 @@
package benchmark
import (
- "fmt"
"testing"
"time"
- "v.io/core/veyron/lib/testutil"
+ "v.io/core/veyron/lib/testutil/benchmark"
_ "v.io/core/veyron/profiles/static"
"v.io/core/veyron/runtimes/google/ipc/stream/manager"
@@ -13,9 +12,9 @@
"v.io/core/veyron2/options"
)
-// benchmarkVCDial measures VC creation time over the underlying VIF.
-func benchmarkVCDial(b *testing.B, mode options.VCSecurityLevel) {
- stats := testutil.NewBenchStats(16)
+// benchmarkDialVC measures VC creation time over the underlying VIF.
+func benchmarkDialVC(b *testing.B, mode options.VCSecurityLevel) {
+ stats := benchmark.AddStats(b, 16)
server := manager.InternalNew(naming.FixedRoutingID(0x5))
client := manager.InternalNew(naming.FixedRoutingID(0xc))
@@ -31,8 +30,7 @@
b.Fatal(err)
}
- // Reset the timer to exclude any underlying setup time from measurement.
- b.ResetTimer()
+ b.ResetTimer() // Exclude setup time from measurement.
for i := 0; i < b.N; i++ {
b.StartTimer()
@@ -53,7 +51,4 @@
client.Shutdown()
server.Shutdown()
-
- fmt.Println()
- fmt.Println(stats)
}
diff --git a/runtimes/google/ipc/stream/benchmark/dial_vif.go b/runtimes/google/ipc/stream/benchmark/dial_vif.go
index 4fce465..6413925 100644
--- a/runtimes/google/ipc/stream/benchmark/dial_vif.go
+++ b/runtimes/google/ipc/stream/benchmark/dial_vif.go
@@ -1,24 +1,22 @@
package benchmark
import (
- "fmt"
"net"
"testing"
"time"
- "v.io/core/veyron/lib/testutil"
+ "v.io/core/veyron/lib/testutil/benchmark"
"v.io/core/veyron/runtimes/google/ipc/stream/vif"
"v.io/core/veyron2/naming"
"v.io/core/veyron2/options"
)
-// benchmarkVIFDial measures VIF creation time over the underlying net connection.
-func benchmarkVIFDial(b *testing.B, mode options.VCSecurityLevel) {
- stats := testutil.NewBenchStats(16)
+// benchmarkDialVIF measures VIF creation time over the underlying net connection.
+func benchmarkDialVIF(b *testing.B, mode options.VCSecurityLevel) {
+ stats := benchmark.AddStats(b, 16)
- // Reset the timer to exclude any underlying setup time from measurement.
- b.ResetTimer()
+ b.ResetTimer() // Exclude setup time from measurement.
for i := 0; i < b.N; i++ {
b.StopTimer()
@@ -45,7 +43,4 @@
client.Close()
server.Close()
}
-
- fmt.Println()
- fmt.Println(stats)
}
diff --git a/runtimes/google/ipc/stream/benchmark/throughput_test.go b/runtimes/google/ipc/stream/benchmark/throughput_test.go
index 9487f0a..76ad57d 100644
--- a/runtimes/google/ipc/stream/benchmark/throughput_test.go
+++ b/runtimes/google/ipc/stream/benchmark/throughput_test.go
@@ -34,8 +34,3 @@
func Benchmark_throughput_Flow_1VIF_2VC_8FlowTLS(b *testing.B) { benchmarkFlow(b, securityTLS, 1, 2, 4) }
func Benchmark_throughput_Flow_2VIF_4VC_8FlowTLS(b *testing.B) { benchmarkFlow(b, securityTLS, 2, 2, 2) }
-
-// A single empty test to avoid:
-// testing: warning: no tests to run
-// from showing up when running benchmarks in this package via "go test"
-func TestNoOp(t *testing.T) {}
diff --git a/services/identity/identityd/main.go b/services/identity/identityd/main.go
index 10af65a..ba35304 100644
--- a/services/identity/identityd/main.go
+++ b/services/identity/identityd/main.go
@@ -14,6 +14,7 @@
"v.io/core/veyron2/vlog"
+ "v.io/core/veyron/profiles/static"
"v.io/core/veyron/services/identity/auditor"
"v.io/core/veyron/services/identity/blesser"
"v.io/core/veyron/services/identity/caveats"
@@ -31,6 +32,11 @@
googleConfigChrome = flag.String("google_config_chrome", "", "Path to the JSON-encoded OAuth client configuration for Chrome browser applications that obtain blessings from this server (via the OAuthBlesser.BlessUsingAccessToken RPC) from this server.")
googleConfigAndroid = flag.String("google_config_android", "", "Path to the JSON-encoded OAuth client configuration for Android applications that obtain blessings from this server (via the OAuthBlesser.BlessUsingAccessToken RPC) from this server.")
googleDomain = flag.String("google_domain", "", "An optional domain name. When set, only email addresses from this domain are allowed to authenticate via Google OAuth")
+
+ // Flags controlling the HTTP server
+ host = flag.String("host", defaultHost(), "Hostname the HTTP server listens on. This can be the name of the host running the webserver, but if running behind a NAT or load balancer, this should be the host name that clients will connect to. For example, if set to 'x.com', Veyron identities will have the IssuerName set to 'x.com' and clients can expect to find the root name and public key of the signer at 'x.com/blessing-root'.")
+ httpaddr = flag.String("httpaddr", "localhost:8125", "Address on which the HTTP server listens on.")
+ tlsconfig = flag.String("tlsconfig", "", "Comma-separated list of TLS certificate and private key files. This must be provided.")
)
func main() {
@@ -65,20 +71,21 @@
vlog.Fatalf("Failed to start RevocationManager: %v", err)
}
- server.NewIdentityServer(
+ s := server.NewIdentityServer(
googleoauth,
auditor,
reader,
revocationManager,
oauthBlesserGoogleParams(revocationManager),
- caveats.NewBrowserCaveatSelector()).Serve()
+ caveats.NewBrowserCaveatSelector())
+ s.Serve(&static.ListenSpec, *host, *httpaddr, *tlsconfig)
}
func usage() {
fmt.Fprintf(os.Stderr, `%s starts an HTTP server that brokers blessings after authenticating through OAuth.
To generate TLS certificates so the HTTP server can use SSL:
-go run $GOROOT/src/crypto/tls/generate_cert.go --host <IP address>
+go run $(go list -f {{.Dir}} "crypto/tls")/generate_cert.go --host <IP address>
To use Google as an OAuth provider the --google_config_* flags must be set to point to
the a JSON file obtained after registering the application with the Google Developer Console
@@ -134,3 +141,11 @@
}
return clientID, nil
}
+
+func defaultHost() string {
+ host, err := os.Hostname()
+ if err != nil {
+ vlog.Fatalf("os.Hostname() failed: %v", err)
+ }
+ return host
+}
diff --git a/services/identity/identityd_test/main.go b/services/identity/identityd_test/main.go
index 4531b63..e2f8058 100644
--- a/services/identity/identityd_test/main.go
+++ b/services/identity/identityd_test/main.go
@@ -5,45 +5,63 @@
"flag"
"fmt"
"os"
- "os/exec"
"time"
"v.io/core/veyron2/vlog"
+ "v.io/core/veyron/profiles/static"
"v.io/core/veyron/services/identity/auditor"
"v.io/core/veyron/services/identity/blesser"
"v.io/core/veyron/services/identity/caveats"
"v.io/core/veyron/services/identity/oauth"
"v.io/core/veyron/services/identity/revocation"
"v.io/core/veyron/services/identity/server"
+ "v.io/core/veyron/services/identity/util"
)
var (
googleDomain = flag.String("google_domain", "", "An optional domain name. When set, only email addresses from this domain are allowed to authenticate via Google OAuth")
+
+ // Flags controlling the HTTP server
+ host = flag.String("host", "localhost", "Hostname the HTTP server listens on. This can be the name of the host running the webserver, but if running behind a NAT or load balancer, this should be the host name that clients will connect to. For example, if set to 'x.com', Veyron identities will have the IssuerName set to 'x.com' and clients can expect to find the root name and public key of the signer at 'x.com/blessing-root'.")
+ httpaddr = flag.String("httpaddr", "localhost:8125", "Address on which the HTTP server listens on.")
+ tlsconfig = flag.String("tlsconfig", "", "Comma-separated list of TLS certificate and private key files. This must be provided.")
)
func main() {
flag.Usage = usage
flag.Parse()
- auditor, reader := auditor.NewMockBlessingAuditor()
- revocationManager := revocation.NewMockRevocationManager()
+ // Duration to use for tls cert and blessing duration.
+ duration := 365 * 24 * time.Hour
// If no tlsconfig has been provided, write and use our own.
if flag.Lookup("tlsconfig").Value.String() == "" {
- writeCertAndKey()
+ if err := util.WriteCertAndKey(*host, duration); err != nil {
+ vlog.Fatal(err)
+ }
if err := flag.Set("tlsconfig", "./cert.pem,./key.pem"); err != nil {
vlog.Fatal(err)
}
}
- server.NewIdentityServer(
+ auditor, reader := auditor.NewMockBlessingAuditor()
+ revocationManager := revocation.NewMockRevocationManager()
+
+ googleParams := blesser.GoogleParams{
+ BlessingDuration: duration,
+ DomainRestriction: *googleDomain,
+ RevocationManager: revocationManager,
+ }
+
+ s := server.NewIdentityServer(
oauth.NewMockOAuth(),
auditor,
reader,
revocationManager,
- oauthBlesserGoogleParams(revocationManager),
- caveats.NewMockCaveatSelector()).Serve()
+ googleParams,
+ caveats.NewMockCaveatSelector())
+ s.Serve(&static.ListenSpec, *host, *httpaddr, *tlsconfig)
}
func usage() {
@@ -51,32 +69,9 @@
mocks out oauth, auditing, and revocation.
To generate TLS certificates so the HTTP server can use SSL:
-go run $GOROOT/src/crypto/tls/generate_cert.go --host <IP address>
+go run $(go list -f {{.Dir}} "crypto/tls")/generate_cert.go --host <IP address>
Flags:
`, os.Args[0])
flag.PrintDefaults()
}
-
-func writeCertAndKey() {
- goroot := os.Getenv("GOROOT")
- if goroot == "" {
- vlog.Fatal("GOROOT not set")
- }
- generateCertFile := goroot + "/src/crypto/tls/generate_cert.go"
- host := flag.Lookup("host").Value.String()
- duration := 1 * time.Hour
- if err := exec.Command("go", "run", generateCertFile, "--host", host, "--duration", duration.String()).Run(); err != nil {
- vlog.Fatalf("Could not generate key and cert: %v", err)
- }
-}
-
-func oauthBlesserGoogleParams(revocationManager revocation.RevocationManager) blesser.GoogleParams {
- googleParams := blesser.GoogleParams{
- BlessingDuration: 365 * 24 * time.Hour,
- DomainRestriction: *googleDomain,
- RevocationManager: revocationManager,
- }
- // TODO(suharshs): Figure out the test for this.
- return googleParams
-}
diff --git a/services/identity/server/identityd.go b/services/identity/server/identityd.go
index c388d60..2ad5dcb 100644
--- a/services/identity/server/identityd.go
+++ b/services/identity/server/identityd.go
@@ -3,12 +3,10 @@
import (
"crypto/rand"
- "flag"
"fmt"
"html/template"
"net"
"net/http"
- "os"
"reflect"
"strings"
@@ -31,15 +29,6 @@
"v.io/core/veyron/services/identity/revocation"
services "v.io/core/veyron/services/security"
"v.io/core/veyron/services/security/discharger"
-
- "v.io/core/veyron/profiles/static"
-)
-
-var (
- // Flags controlling the HTTP server
- httpaddr = flag.String("httpaddr", "localhost:8125", "Address on which the HTTP server listens on.")
- tlsconfig = flag.String("tlsconfig", "", "Comma-separated list of TLS certificate and private key files. This must be provided.")
- host = flag.String("host", defaultHost(), "Hostname the HTTP server listens on. This can be the name of the host running the webserver, but if running behind a NAT or load balancer, this should be the host name that clients will connect to. For example, if set to 'x.com', Veyron identities will have the IssuerName set to 'x.com' and clients can expect to find the root name and public key of the signer at 'x.com/blessing-root'.")
)
const (
@@ -73,9 +62,7 @@
}
}
-func (s *identityd) Serve() {
- flag.Parse()
-
+func (s *identityd) Serve(listenSpec *ipc.ListenSpec, host, httpaddr, tlsconfig string) {
p, r := providerPrincipal(s.auditor)
defer r.Cleanup()
@@ -85,6 +72,13 @@
}
defer runtime.Cleanup()
+ ipcServer, _, _ := s.Listen(runtime, listenSpec, host, httpaddr, tlsconfig)
+ defer ipcServer.Stop()
+
+ <-signals.ShutdownOnSignals(runtime)
+}
+
+func (s *identityd) Listen(runtime veyron2.Runtime, listenSpec *ipc.ListenSpec, host, httpaddr, tlsconfig string) (ipc.Server, []string, string) {
// Setup handlers
http.Handle("/blessing-root", handlers.BlessingRoot{runtime.Principal()}) // json-encoded public key and blessing names of this server
@@ -93,17 +87,18 @@
vlog.Fatalf("macaroonKey generation failed: %v", err)
}
- ipcServer, published, err := s.setupServices(runtime, macaroonKey)
+ ipcServer, published, err := s.setupServices(runtime, listenSpec, macaroonKey)
if err != nil {
vlog.Fatalf("Failed to setup veyron services for blessing: %v", err)
}
- defer ipcServer.Stop()
+
+ externalHttpaddr := httpaddress(host, httpaddr)
n := "/google/"
h, err := oauth.NewHandler(oauth.HandlerArgs{
R: runtime,
MacaroonKey: macaroonKey,
- Addr: fmt.Sprintf("%s%s", httpaddress(), n),
+ Addr: fmt.Sprintf("%s%s", externalHttpaddr, n),
BlessingLogReader: s.blessingLogReader,
RevocationManager: s.revocationManager,
DischargerLocation: naming.JoinAddressName(published[0], dischargerService),
@@ -138,9 +133,9 @@
vlog.Info("Failed to render template:", err)
}
})
- vlog.Infof("Running HTTP server at: %v", httpaddress())
- go runHTTPSServer(*httpaddr)
- <-signals.ShutdownOnSignals(runtime)
+ vlog.Infof("Running HTTP server at: %v", externalHttpaddr)
+ go runHTTPSServer(httpaddr, tlsconfig)
+ return ipcServer, published, externalHttpaddr
}
func appendSuffixTo(objectname []string, suffix string) []string {
@@ -152,19 +147,19 @@
}
// Starts the blessing services and the discharging service on the same port.
-func (s *identityd) setupServices(r veyron2.Runtime, macaroonKey []byte) (ipc.Server, []string, error) {
- server, err := r.NewServer()
+func (s *identityd) setupServices(runtime veyron2.Runtime, listenSpec *ipc.ListenSpec, macaroonKey []byte) (ipc.Server, []string, error) {
+ server, err := runtime.NewServer()
if err != nil {
return nil, nil, fmt.Errorf("failed to create new ipc.Server: %v", err)
}
- eps, err := server.Listen(static.ListenSpec)
+ eps, err := server.Listen(*listenSpec)
if err != nil {
- return nil, nil, fmt.Errorf("server.Listen(%v) failed: %v", static.ListenSpec, err)
+ return nil, nil, fmt.Errorf("server.Listen(%v) failed: %v", *listenSpec, err)
}
ep := eps[0]
dispatcher := newDispatcher(macaroonKey, oauthBlesserParams(s.oauthBlesserParams, s.revocationManager, ep))
- objectname := naming.Join("identity", fmt.Sprintf("%v", r.Principal().BlessingStore().Default()))
+ objectname := naming.Join("identity", fmt.Sprintf("%v", runtime.Principal().BlessingStore().Default()))
if err := server.ServeDispatcher(objectname, dispatcher); err != nil {
return nil, nil, fmt.Errorf("failed to start Veyron services: %v", err)
}
@@ -206,11 +201,11 @@
return inputParams
}
-func runHTTPSServer(addr string) {
- if len(*tlsconfig) == 0 {
+func runHTTPSServer(addr, tlsconfig string) {
+ if len(tlsconfig) == 0 {
vlog.Fatal("Please set the --tlsconfig flag")
}
- paths := strings.Split(*tlsconfig, ",")
+ paths := strings.Split(tlsconfig, ",")
if len(paths) != 2 {
vlog.Fatalf("Could not parse --tlsconfig. Must have exactly two components, separated by a comma")
}
@@ -220,14 +215,6 @@
}
}
-func defaultHost() string {
- host, err := os.Hostname()
- if err != nil {
- vlog.Fatalf("Failed to get hostname: %v", err)
- }
- return host
-}
-
// providerPrincipal returns the Principal to use for the identity provider (i.e., this program).
//
// TODO(ataly, suharhs, mattr): HACK!!! This method also returns the runtime that it creates
@@ -246,12 +233,12 @@
return audit.NewPrincipal(r.Principal(), auditor), r
}
-func httpaddress() string {
- _, port, err := net.SplitHostPort(*httpaddr)
+func httpaddress(host, httpaddr string) string {
+ _, port, err := net.SplitHostPort(httpaddr)
if err != nil {
- vlog.Fatalf("Failed to parse %q: %v", *httpaddr, err)
+ vlog.Fatalf("Failed to parse %q: %v", httpaddr, err)
}
- return fmt.Sprintf("https://%s:%v", *host, port)
+ return fmt.Sprintf("https://%s:%v", host, port)
}
var tmpl = template.Must(template.New("main").Parse(`<!doctype html>
diff --git a/services/identity/util/certs.go b/services/identity/util/certs.go
new file mode 100644
index 0000000..697e9e2
--- /dev/null
+++ b/services/identity/util/certs.go
@@ -0,0 +1,24 @@
+package util
+
+import (
+ "fmt"
+ "os/exec"
+ "path/filepath"
+ "strings"
+ "time"
+)
+
+// WriteCertAndKey creates a certificate and private key for a given host and
+// duration and writes them to cert.pem and key.pem.
+func WriteCertAndKey(host string, duration time.Duration) error {
+ listCmd := exec.Command("go", "list", "-f", "{{.Dir}}", "crypto/tls")
+ output, err := listCmd.Output()
+ if err != nil {
+ return fmt.Errorf("%s failed: %v", strings.Join(listCmd.Args, " "), err)
+ }
+ generateCertFile := filepath.Join(strings.TrimSpace(string(output)), "generate_cert.go")
+ if err := exec.Command("go", "run", generateCertFile, "--host", host, "--duration", duration.String()).Run(); err != nil {
+ return fmt.Errorf("Could not generate key and cert: %v", err)
+ }
+ return nil
+}