veyron/runtimes/google/ipc: fix iobuf bug.
* Fixed to use only one iobuf.Reader per net.Conn.
* Changed iobuf.Pool to allocate buf in a multiple of minSize
and set the default minSize to 4K.
* Fix iobuf leaks.
- There are still two known Slice leaks, a reserved iobuf in crypter
and vc.writer. At first, I tried to fix these leaks too, but it made
close logics of VC/VIF/Proxy too complicated due to their
dependencies. So I revert it :) They don't affect the peformance much
and will be GCed eventually.
With these fixes, IPC bencmark (in my local machine) shows a huge
performance improvement (+35%).
Benchmark___10B: 4.44ms -> 2.59ms
Benchmark___1K_chunk___100B: 291.40ms -> 178.10ms
Benchmark___10B_mux___1K_chunks__100B: 203.60ms -> 102.70ms
Change-Id: I119b05c20ca307e5ce7c1d7f7c08c73a5df7d983
diff --git a/runtimes/google/ipc/benchmark/RESULTS.txt b/runtimes/google/ipc/benchmark/RESULTS.txt
index b884698..95a44bf 100644
--- a/runtimes/google/ipc/benchmark/RESULTS.txt
+++ b/runtimes/google/ipc/benchmark/RESULTS.txt
@@ -8,1525 +8,1599 @@
continuously in the same process.
================================================================================
-Date: 01/06/2015
+Date: 02/02/2015
Platform: Intel(R) Xeon(R) CPU E5-2689 0 @ 2.60GHz, 66114888KB Memory
-Benchmark____1B 2000 5135719 ns/op 0.00 MB/s
+Benchmark____1B 5000 1941933 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 2000 Min: 4 Max: 6 Avg: 4.50
+ Count: 5000 Min: 1 Max: 4 Avg: 1.35
------------------------------------------------------------
- [ 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
+ [ 1, 2) 3792 75.8% 75.8% ########
+ [ 2, 3) 734 14.7% 90.5% #
+ [ 3, 4) 397 7.9% 98.5% #
+ [ 4, inf) 77 1.5% 100.0%
+Benchmark____1B-2 5000 1744191 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 2000 Min: 4 Max: 6 Avg: 4.32
+ Count: 5000 Min: 1 Max: 3 Avg: 1.17
------------------------------------------------------------
- [ 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
+ [ 1, 2) 4518 90.4% 90.4% #########
+ [ 2, 3) 91 1.8% 92.2%
+ [ 3, inf) 391 7.8% 100.0% #
+Benchmark___10B 5000 2015671 ns/op 0.01 MB/s
--- Histogram (unit: ms)
- Count: 2000 Min: 4 Max: 7 Avg: 4.58
+ Count: 5000 Min: 1 Max: 9 Avg: 1.39
------------------------------------------------------------
- [ 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%
+ [ 1, 2) 4554 91.1% 91.1% #########
+ [ 2, 3) 17 0.3% 91.4%
+ [ 3, 4) 102 2.0% 93.5%
+ [ 4, 5) 21 0.4% 93.9%
+ [ 5, 6) 60 1.2% 95.1%
+ [ 6, 8) 180 3.6% 98.7%
+ [ 8, 10) 66 1.3% 100.0%
+ [ 10, 12) 0 0.0% 100.0%
[ 12, inf) 0 0.0% 100.0%
-Benchmark__10KB-2 2000 5046850 ns/op 3.96 MB/s
+Benchmark___10B-2 5000 1830436 ns/op 0.01 MB/s
--- Histogram (unit: ms)
- Count: 2000 Min: 4 Max: 9 Avg: 4.42
+ Count: 5000 Min: 1 Max: 6 Avg: 1.20
------------------------------------------------------------
- [ 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
+ [ 1, 2) 4731 94.6% 94.6% #########
+ [ 2, 3) 21 0.4% 95.0%
+ [ 3, 4) 0 0.0% 95.0%
+ [ 4, 5) 47 0.9% 96.0%
+ [ 5, 6) 161 3.2% 99.2%
+ [ 6, inf) 40 0.8% 100.0%
+Benchmark__100B 3000 2140626 ns/op 0.09 MB/s
--- Histogram (unit: ms)
- Count: 1000 Min: 6 Max: 13 Avg: 7.50
+ Count: 3000 Min: 1 Max: 15 Avg: 1.47
------------------------------------------------------------
- [ 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
+ [ 1, 2) 2811 93.7% 93.7% #########
+ [ 2, 3) 6 0.2% 93.9%
+ [ 3, 4) 5 0.2% 94.1%
+ [ 4, 5) 17 0.6% 94.6%
+ [ 5, 7) 36 1.2% 95.8%
+ [ 7, 9) 19 0.6% 96.5%
+ [ 9, 11) 38 1.3% 97.7%
+ [ 11, 14) 62 2.1% 99.8%
+ [ 14, 18) 6 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, 41) 0 0.0% 100.0%
+ [ 41, 50) 0 0.0% 100.0%
+ [ 50, inf) 0 0.0% 100.0%
+Benchmark__100B-2 5000 1852904 ns/op 0.11 MB/s
--- Histogram (unit: ms)
- Count: 1000 Min: 5 Max: 9 Avg: 5.77
+ Count: 5000 Min: 1 Max: 11 Avg: 1.21
------------------------------------------------------------
- [ 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
+ [ 1, 2) 4803 96.1% 96.1% ##########
+ [ 2, 3) 20 0.4% 96.5%
+ [ 3, 4) 0 0.0% 96.5%
+ [ 4, 5) 0 0.0% 96.5%
+ [ 5, 6) 0 0.0% 96.5%
+ [ 6, 8) 160 3.2% 99.7%
+ [ 8, 10) 9 0.2% 99.8%
+ [ 10, 12) 8 0.2% 100.0%
+ [ 12, 15) 0 0.0% 100.0%
+ [ 15, 18) 0 0.0% 100.0%
+ [ 18, inf) 0 0.0% 100.0%
+Benchmark___1KB 3000 2231959 ns/op 0.90 MB/s
--- Histogram (unit: ms)
- Count: 2000 Min: 4 Max: 7 Avg: 4.87
+ Count: 3000 Min: 1 Max: 19 Avg: 1.53
------------------------------------------------------------
- [ 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
+ [ 1, 2) 2875 95.8% 95.8% ##########
+ [ 2, 3) 1 0.0% 95.9%
+ [ 3, 4) 0 0.0% 95.9%
+ [ 4, 5) 0 0.0% 95.9%
+ [ 5, 7) 8 0.3% 96.1%
+ [ 7, 9) 21 0.7% 96.8%
+ [ 9, 12) 0 0.0% 96.8%
+ [ 12, 15) 29 1.0% 97.8%
+ [ 15, 19) 56 1.9% 99.7%
+ [ 19, 24) 10 0.3% 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___1KB-2 3000 2078680 ns/op 0.96 MB/s
--- Histogram (unit: ms)
- Count: 2000 Min: 4 Max: 6 Avg: 4.46
+ Count: 3000 Min: 1 Max: 12 Avg: 1.35
------------------------------------------------------------
- [ 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
+ [ 1, 2) 2699 90.0% 90.0% #########
+ [ 2, 3) 213 7.1% 97.1% #
+ [ 3, 4) 0 0.0% 97.1%
+ [ 4, 5) 0 0.0% 97.1%
+ [ 5, 6) 0 0.0% 97.1%
+ [ 6, 8) 0 0.0% 97.1%
+ [ 8, 10) 20 0.7% 97.7%
+ [ 10, 13) 68 2.3% 100.0%
+ [ 13, 16) 0 0.0% 100.0%
+ [ 16, 20) 0 0.0% 100.0%
+ [ 20, 24) 0 0.0% 100.0%
+ [ 24, inf) 0 0.0% 100.0%
+Benchmark__10KB 3000 2548055 ns/op 7.85 MB/s
--- Histogram (unit: ms)
- Count: 2000 Min: 4 Max: 7 Avg: 4.89
+ Count: 3000 Min: 1 Max: 24 Avg: 1.73
------------------------------------------------------------
- [ 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
+ [ 1, 2) 2665 88.8% 88.8% #########
+ [ 2, 3) 196 6.5% 95.4% #
+ [ 3, 4) 0 0.0% 95.4%
+ [ 4, 5) 0 0.0% 95.4%
+ [ 5, 7) 0 0.0% 95.4%
+ [ 7, 9) 42 1.4% 96.8%
+ [ 9, 12) 0 0.0% 96.8%
+ [ 12, 16) 30 1.0% 97.8%
+ [ 16, 21) 19 0.6% 98.4%
+ [ 21, 27) 48 1.6% 100.0%
+ [ 27, 35) 0 0.0% 100.0%
+ [ 35, 44) 0 0.0% 100.0%
+ [ 44, 56) 0 0.0% 100.0%
+ [ 56, 71) 0 0.0% 100.0%
+ [ 71, 89) 0 0.0% 100.0%
+ [ 89, 111) 0 0.0% 100.0%
+ [111, inf) 0 0.0% 100.0%
+Benchmark__10KB-2 3000 2242089 ns/op 8.92 MB/s
--- Histogram (unit: ms)
- Count: 2000 Min: 4 Max: 6 Avg: 4.55
+ Count: 3000 Min: 1 Max: 14 Avg: 1.53
------------------------------------------------------------
- [ 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%
+ [ 1, 2) 2328 77.6% 77.6% ########
+ [ 2, 3) 581 19.4% 97.0% ##
+ [ 3, 4) 0 0.0% 97.0%
+ [ 4, 5) 0 0.0% 97.0%
+ [ 5, 6) 0 0.0% 97.0%
+ [ 6, 8) 0 0.0% 97.0%
+ [ 8, 10) 0 0.0% 97.0%
+ [ 10, 13) 45 1.5% 98.5%
+ [ 13, 16) 46 1.5% 100.0%
+ [ 16, 20) 0 0.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, inf) 0 0.0% 100.0%
-Benchmark___10_chunk___10KB-2 1000 7345578 ns/op 27.23 MB/s
+Benchmark_100KB 2000 5112233 ns/op 39.12 MB/s
--- Histogram (unit: ms)
- Count: 1000 Min: 5 Max: 14 Avg: 6.95
+ Count: 2000 Min: 3 Max: 26 Avg: 4.49
------------------------------------------------------------
- [ 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
+ [ 3, 4) 1819 91.0% 91.0% #########
+ [ 4, 5) 0 0.0% 91.0%
+ [ 5, 6) 0 0.0% 91.0%
+ [ 6, 7) 0 0.0% 91.0%
+ [ 7, 9) 44 2.2% 93.2%
+ [ 9, 11) 1 0.1% 93.2%
+ [ 11, 14) 0 0.0% 93.2%
+ [ 14, 18) 0 0.0% 93.2%
+ [ 18, 23) 45 2.2% 95.5%
+ [ 23, 29) 91 4.5% 100.0%
+ [ 29, 37) 0 0.0% 100.0%
+ [ 37, 46) 0 0.0% 100.0%
+ [ 46, 58) 0 0.0% 100.0%
+ [ 58, 73) 0 0.0% 100.0%
+ [ 73, 91) 0 0.0% 100.0%
+ [ 91, 113) 0 0.0% 100.0%
+ [113, inf) 0 0.0% 100.0%
+Benchmark_100KB-2 2000 3661880 ns/op 54.62 MB/s
--- Histogram (unit: ms)
- Count: 200 Min: 24 Max: 37 Avg: 31.07
+ Count: 2000 Min: 2 Max: 19 Avg: 3.00
------------------------------------------------------------
- [ 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
+ [ 2, 3) 1657 82.9% 82.9% ########
+ [ 3, 4) 143 7.2% 90.0% #
+ [ 4, 5) 67 3.4% 93.4%
+ [ 5, 6) 1 0.1% 93.4%
+ [ 6, 8) 0 0.0% 93.4%
+ [ 8, 10) 0 0.0% 93.4%
+ [ 10, 13) 13 0.7% 94.1%
+ [ 13, 16) 48 2.4% 96.5%
+ [ 16, 20) 71 3.6% 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, 72) 0 0.0% 100.0%
+ [ 72, 89) 0 0.0% 100.0%
+ [ 89, inf) 0 0.0% 100.0%
+
+Benchmark____1_chunk_____1B 3000 2154678 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 500 Min: 14 Max: 27 Avg: 18.58
+ Count: 3000 Min: 1 Max: 4 Avg: 1.42
------------------------------------------------------------
- [ 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
+ [ 1, 2) 2069 69.0% 69.0% #######
+ [ 2, 3) 599 20.0% 88.9% ##
+ [ 3, 4) 331 11.0% 100.0% #
+ [ 4, inf) 1 0.0% 100.0%
+Benchmark____1_chunk_____1B-2 5000 1907902 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 500 Min: 16 Max: 34 Avg: 19.44
+ Count: 5000 Min: 1 Max: 4 Avg: 1.21
------------------------------------------------------------
- [ 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
+ [ 1, 2) 4345 86.9% 86.9% #########
+ [ 2, 3) 275 5.5% 92.4% #
+ [ 3, 4) 377 7.5% 99.9% #
+ [ 4, inf) 3 0.1% 100.0%
+Benchmark____1_chunk____10B 3000 2234222 ns/op 0.01 MB/s
--- Histogram (unit: ms)
- Count: 500 Min: 11 Max: 23 Avg: 14.28
+ Count: 3000 Min: 1 Max: 7 Avg: 1.44
------------------------------------------------------------
- [ 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
+ [ 1, 2) 2603 86.8% 86.8% #########
+ [ 2, 3) 65 2.2% 88.9%
+ [ 3, 4) 77 2.6% 91.5%
+ [ 4, 5) 50 1.7% 93.2%
+ [ 5, 6) 87 2.9% 96.1%
+ [ 6, 7) 117 3.9% 100.0%
+ [ 7, inf) 1 0.0% 100.0%
+Benchmark____1_chunk____10B-2 5000 1920770 ns/op 0.01 MB/s
--- Histogram (unit: ms)
- Count: 300 Min: 20 Max: 35 Avg: 24.38
+ Count: 5000 Min: 1 Max: 5 Avg: 1.21
------------------------------------------------------------
- [ 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
+ [ 1, 2) 4571 91.4% 91.4% #########
+ [ 2, 3) 106 2.1% 93.5%
+ [ 3, 4) 23 0.5% 94.0%
+ [ 4, 5) 284 5.7% 99.7% #
+ [ 5, inf) 16 0.3% 100.0%
+Benchmark____1_chunk___100B 3000 2296619 ns/op 0.09 MB/s
--- Histogram (unit: ms)
- Count: 500 Min: 11 Max: 25 Avg: 14.57
+ Count: 3000 Min: 1 Max: 12 Avg: 1.49
------------------------------------------------------------
- [ 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
+ [ 1, 2) 2680 89.3% 89.3% #########
+ [ 2, 3) 98 3.3% 92.6%
+ [ 3, 4) 10 0.3% 92.9%
+ [ 4, 5) 53 1.8% 94.7%
+ [ 5, 6) 2 0.1% 94.8%
+ [ 6, 8) 57 1.9% 96.7%
+ [ 8, 10) 55 1.8% 98.5%
+ [ 10, 13) 45 1.5% 100.0%
+ [ 13, 16) 0 0.0% 100.0%
+ [ 16, 20) 0 0.0% 100.0%
+ [ 20, 24) 0 0.0% 100.0%
+ [ 24, inf) 0 0.0% 100.0%
+Benchmark____1_chunk___100B-2 5000 1971568 ns/op 0.10 MB/s
--- Histogram (unit: ms)
- Count: 300 Min: 23 Max: 38 Avg: 26.94
+ Count: 5000 Min: 1 Max: 7 Avg: 1.26
------------------------------------------------------------
- [ 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
+ [ 1, 2) 4521 90.4% 90.4% #########
+ [ 2, 3) 257 5.1% 95.6% #
+ [ 3, 4) 0 0.0% 95.6%
+ [ 4, 5) 0 0.0% 95.6%
+ [ 5, 6) 66 1.3% 96.9%
+ [ 6, 7) 155 3.1% 100.0%
+ [ 7, inf) 1 0.0% 100.0%
+Benchmark____1_chunk____1KB 3000 2399265 ns/op 0.83 MB/s
--- Histogram (unit: ms)
- Count: 500 Min: 12 Max: 24 Avg: 15.40
+ Count: 3000 Min: 1 Max: 17 Avg: 1.56
------------------------------------------------------------
- [ 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
+ [ 1, 2) 2695 89.8% 89.8% #########
+ [ 2, 3) 146 4.9% 94.7%
+ [ 3, 4) 3 0.1% 94.8%
+ [ 4, 5) 1 0.0% 94.8%
+ [ 5, 7) 42 1.4% 96.2%
+ [ 7, 9) 0 0.0% 96.2%
+ [ 9, 12) 43 1.4% 97.7%
+ [ 12, 15) 42 1.4% 99.1%
+ [ 15, 19) 28 0.9% 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____1_chunk____1KB-2 5000 2143186 ns/op 0.93 MB/s
--- Histogram (unit: ms)
- Count: 200 Min: 25 Max: 41 Avg: 29.77
+ Count: 5000 Min: 1 Max: 12 Avg: 1.47
------------------------------------------------------------
- [ 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
+ [ 1, 2) 3732 74.6% 74.6% #######
+ [ 2, 3) 1100 22.0% 96.6% ##
+ [ 3, 4) 0 0.0% 96.6%
+ [ 4, 5) 0 0.0% 96.6%
+ [ 5, 6) 0 0.0% 96.6%
+ [ 6, 8) 52 1.0% 97.7%
+ [ 8, 10) 62 1.2% 98.9%
+ [ 10, 13) 54 1.1% 100.0%
+ [ 13, 16) 0 0.0% 100.0%
+ [ 16, 20) 0 0.0% 100.0%
+ [ 20, 24) 0 0.0% 100.0%
+ [ 24, inf) 0 0.0% 100.0%
+Benchmark____1_chunk___10KB 3000 2829279 ns/op 7.07 MB/s
--- Histogram (unit: ms)
- Count: 500 Min: 14 Max: 26 Avg: 17.41
+ Count: 3000 Min: 1 Max: 26 Avg: 2.72
------------------------------------------------------------
- [ 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
+ [ 1, 2) 2 0.1% 0.1%
+ [ 2, 3) 2859 95.3% 95.4% ##########
+ [ 3, 4) 0 0.0% 95.4%
+ [ 4, 5) 0 0.0% 95.4%
+ [ 5, 7) 0 0.0% 95.4%
+ [ 7, 9) 27 0.9% 96.3%
+ [ 9, 12) 5 0.2% 96.4%
+ [ 12, 16) 5 0.2% 96.6%
+ [ 16, 21) 37 1.2% 97.8%
+ [ 21, 27) 65 2.2% 100.0%
+ [ 27, 35) 0 0.0% 100.0%
+ [ 35, 45) 0 0.0% 100.0%
+ [ 45, 58) 0 0.0% 100.0%
+ [ 58, 74) 0 0.0% 100.0%
+ [ 74, 94) 0 0.0% 100.0%
+ [ 94, 118) 0 0.0% 100.0%
+ [118, inf) 0 0.0% 100.0%
+Benchmark____1_chunk___10KB-2 3000 2402468 ns/op 8.32 MB/s
--- Histogram (unit: ms)
- Count: 100 Min: 42 Max: 57 Avg: 51.22
+ Count: 3000 Min: 1 Max: 13 Avg: 2.00
------------------------------------------------------------
- [ 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
+ [ 1, 2) 879 29.3% 29.3% ###
+ [ 2, 3) 2021 67.4% 96.7% #######
+ [ 3, 4) 0 0.0% 96.7%
+ [ 4, 5) 0 0.0% 96.7%
+ [ 5, 6) 0 0.0% 96.7%
+ [ 6, 8) 0 0.0% 96.7%
+ [ 8, 10) 24 0.8% 97.5%
+ [ 10, 13) 49 1.6% 99.1%
+ [ 13, 16) 27 0.9% 100.0%
+ [ 16, 20) 0 0.0% 100.0%
+ [ 20, 25) 0 0.0% 100.0%
+ [ 25, 31) 0 0.0% 100.0%
+ [ 31, inf) 0 0.0% 100.0%
+Benchmark____1_chunk__100KB 2000 5417885 ns/op 36.91 MB/s
--- Histogram (unit: ms)
- Count: 300 Min: 22 Max: 34 Avg: 28.47
+ Count: 2000 Min: 3 Max: 29 Avg: 4.65
------------------------------------------------------------
- [ 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
+ [ 3, 4) 1730 86.5% 86.5% #########
+ [ 4, 5) 54 2.7% 89.2%
+ [ 5, 6) 0 0.0% 89.2%
+ [ 6, 7) 0 0.0% 89.2%
+ [ 7, 9) 27 1.4% 90.6%
+ [ 9, 11) 45 2.2% 92.8%
+ [ 11, 14) 0 0.0% 92.8%
+ [ 14, 18) 0 0.0% 92.8%
+ [ 18, 23) 69 3.5% 96.2%
+ [ 23, 30) 75 3.8% 100.0%
+ [ 30, 38) 0 0.0% 100.0%
+ [ 38, 48) 0 0.0% 100.0%
+ [ 48, 61) 0 0.0% 100.0%
+ [ 61, 77) 0 0.0% 100.0%
+ [ 77, 97) 0 0.0% 100.0%
+ [ 97, 122) 0 0.0% 100.0%
+ [122, inf) 0 0.0% 100.0%
+Benchmark____1_chunk__100KB-2 2000 3784105 ns/op 52.85 MB/s
--- Histogram (unit: ms)
- Count: 30 Min: 243 Max: 257 Avg: 251.23
+ Count: 2000 Min: 2 Max: 20 Avg: 3.10
------------------------------------------------------------
- [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
+ [ 2, 3) 1356 67.8% 67.8% #######
+ [ 3, 4) 448 22.4% 90.2% ##
+ [ 4, 5) 57 2.9% 93.1%
+ [ 5, 6) 0 0.0% 93.1%
+ [ 6, 8) 0 0.0% 93.1%
+ [ 8, 10) 0 0.0% 93.1%
+ [ 10, 13) 55 2.8% 95.8%
+ [ 13, 16) 59 3.0% 98.8%
+ [ 16, 20) 24 1.2% 100.0%
+ [ 20, 25) 1 0.1% 100.0%
+ [ 25, 31) 0 0.0% 100.0%
+ [ 31, 39) 0 0.0% 100.0%
+ [ 39, 49) 0 0.0% 100.0%
+ [ 49, 61) 0 0.0% 100.0%
+ [ 61, 75) 0 0.0% 100.0%
+ [ 75, 92) 0 0.0% 100.0%
+ [ 92, inf) 0 0.0% 100.0%
+Benchmark___10_chunk_____1B 2000 3738398 ns/op 0.01 MB/s
--- Histogram (unit: ms)
- Count: 50 Min: 127 Max: 137 Avg: 131.44
+ Count: 2000 Min: 2 Max: 30 Avg: 3.18
------------------------------------------------------------
- [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
+ [ 2, 3) 1091 54.6% 54.6% #####
+ [ 3, 4) 828 41.4% 96.0% ####
+ [ 4, 5) 0 0.0% 96.0%
+ [ 5, 6) 0 0.0% 96.0%
+ [ 6, 8) 1 0.1% 96.0%
+ [ 8, 11) 0 0.0% 96.0%
+ [ 11, 14) 19 1.0% 97.0%
+ [ 14, 18) 0 0.0% 97.0%
+ [ 18, 23) 19 1.0% 97.9%
+ [ 23, 30) 41 2.1% 100.0%
+ [ 30, 39) 1 0.1% 100.0%
+ [ 39, 50) 0 0.0% 100.0%
+ [ 50, 64) 0 0.0% 100.0%
+ [ 64, 81) 0 0.0% 100.0%
+ [ 81, 103) 0 0.0% 100.0%
+ [103, 130) 0 0.0% 100.0%
+ [130, inf) 0 0.0% 100.0%
+Benchmark___10_chunk_____1B-2 3000 2838899 ns/op 0.01 MB/s
--- Histogram (unit: ms)
- Count: 50 Min: 123 Max: 195 Avg: 147.42
+ Count: 3000 Min: 2 Max: 17 Avg: 2.42
+ ------------------------------------------------------------
+ [ 2, 3) 2705 90.2% 90.2% #########
+ [ 3, 4) 206 6.9% 97.0% #
+ [ 4, 5) 1 0.0% 97.1%
+ [ 5, 6) 0 0.0% 97.1%
+ [ 6, 8) 0 0.0% 97.1%
+ [ 8, 10) 0 0.0% 97.1%
+ [ 10, 12) 4 0.1% 97.2%
+ [ 12, 15) 43 1.4% 98.6%
+ [ 15, 19) 41 1.4% 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, inf) 0 0.0% 100.0%
+Benchmark___10_chunk____10B 2000 3750396 ns/op 0.05 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 2 Max: 31 Avg: 3.15
+ ------------------------------------------------------------
+ [ 2, 3) 1179 59.0% 59.0% ######
+ [ 3, 4) 747 37.4% 96.3% ####
+ [ 4, 5) 0 0.0% 96.3%
+ [ 5, 6) 0 0.0% 96.3%
+ [ 6, 8) 0 0.0% 96.3%
+ [ 8, 11) 0 0.0% 96.3%
+ [ 11, 14) 18 0.9% 97.2%
+ [ 14, 18) 0 0.0% 97.2%
+ [ 18, 24) 19 1.0% 98.2%
+ [ 24, 31) 32 1.6% 99.8%
+ [ 31, 40) 5 0.2% 100.0%
+ [ 40, 51) 0 0.0% 100.0%
+ [ 51, 65) 0 0.0% 100.0%
+ [ 65, 83) 0 0.0% 100.0%
+ [ 83, 106) 0 0.0% 100.0%
+ [106, 134) 0 0.0% 100.0%
+ [134, inf) 0 0.0% 100.0%
+Benchmark___10_chunk____10B-2 3000 2669872 ns/op 0.07 MB/s
+--- Histogram (unit: ms)
+ Count: 3000 Min: 2 Max: 14 Avg: 2.37
+ ------------------------------------------------------------
+ [ 2, 3) 2712 90.4% 90.4% #########
+ [ 3, 4) 208 6.9% 97.3% #
+ [ 4, 5) 0 0.0% 97.3%
+ [ 5, 6) 0 0.0% 97.3%
+ [ 6, 7) 0 0.0% 97.3%
+ [ 7, 9) 0 0.0% 97.3%
+ [ 9, 11) 0 0.0% 97.3%
+ [ 11, 14) 52 1.7% 99.1%
+ [ 14, 17) 28 0.9% 100.0%
+ [ 17, 21) 0 0.0% 100.0%
+ [ 21, 26) 0 0.0% 100.0%
+ [ 26, 32) 0 0.0% 100.0%
+ [ 32, inf) 0 0.0% 100.0%
+Benchmark___10_chunk___100B 2000 3830903 ns/op 0.52 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 2 Max: 43 Avg: 3.34
+ ------------------------------------------------------------
+ [ 2, 3) 880 44.0% 44.0% ####
+ [ 3, 4) 1052 52.6% 96.6% #####
+ [ 4, 5) 3 0.2% 96.8%
+ [ 5, 7) 0 0.0% 96.8%
+ [ 7, 9) 0 0.0% 96.8%
+ [ 9, 12) 0 0.0% 96.8%
+ [ 12, 16) 17 0.9% 97.6%
+ [ 16, 21) 0 0.0% 97.6%
+ [ 21, 28) 17 0.9% 98.5%
+ [ 28, 37) 27 1.4% 99.8%
+ [ 37, 48) 4 0.2% 100.0%
+ [ 48, 63) 0 0.0% 100.0%
+ [ 63, 82) 0 0.0% 100.0%
+ [ 82, 106) 0 0.0% 100.0%
+ [106, 138) 0 0.0% 100.0%
+ [138, 178) 0 0.0% 100.0%
+ [178, inf) 0 0.0% 100.0%
+Benchmark___10_chunk___100B-2 3000 2793961 ns/op 0.72 MB/s
+--- Histogram (unit: ms)
+ Count: 3000 Min: 2 Max: 21 Avg: 2.41
+ ------------------------------------------------------------
+ [ 2, 3) 2717 90.6% 90.6% #########
+ [ 3, 4) 211 7.0% 97.6% #
+ [ 4, 5) 0 0.0% 97.6%
+ [ 5, 6) 0 0.0% 97.6%
+ [ 6, 8) 0 0.0% 97.6%
+ [ 8, 10) 0 0.0% 97.6%
+ [ 10, 13) 0 0.0% 97.6%
+ [ 13, 16) 48 1.6% 99.2%
+ [ 16, 20) 11 0.4% 99.6%
+ [ 20, 25) 13 0.4% 100.0%
+ [ 25, 32) 0 0.0% 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, 95) 0 0.0% 100.0%
+ [ 95, inf) 0 0.0% 100.0%
+Benchmark___10_chunk____1KB 2000 4349817 ns/op 4.60 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 3 Max: 48 Avg: 4.07
+ ------------------------------------------------------------
+ [ 3, 4) 1907 95.4% 95.4% ##########
+ [ 4, 5) 11 0.6% 95.9%
+ [ 5, 6) 12 0.6% 96.5%
+ [ 6, 8) 0 0.0% 96.5%
+ [ 8, 10) 0 0.0% 96.5%
+ [ 10, 13) 0 0.0% 96.5%
+ [ 13, 17) 0 0.0% 96.5%
+ [ 17, 22) 21 1.1% 97.6%
+ [ 22, 29) 0 0.0% 97.6%
+ [ 29, 38) 21 1.1% 98.6%
+ [ 38, 50) 28 1.4% 100.0%
+ [ 50, 66) 0 0.0% 100.0%
+ [ 66, 87) 0 0.0% 100.0%
+ [ 87, 114) 0 0.0% 100.0%
+ [114, 148) 0 0.0% 100.0%
+ [148, 192) 0 0.0% 100.0%
+ [192, inf) 0 0.0% 100.0%
+Benchmark___10_chunk____1KB-2 2000 3167146 ns/op 6.31 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 2 Max: 22 Avg: 2.53
+ ------------------------------------------------------------
+ [ 2, 3) 1734 86.7% 86.7% #########
+ [ 3, 4) 210 10.5% 97.2% #
+ [ 4, 5) 7 0.4% 97.6%
+ [ 5, 6) 0 0.0% 97.6%
+ [ 6, 8) 0 0.0% 97.6%
+ [ 8, 10) 0 0.0% 97.6%
+ [ 10, 13) 0 0.0% 97.6%
+ [ 13, 17) 13 0.7% 98.2%
+ [ 17, 21) 17 0.9% 99.1%
+ [ 21, 27) 19 1.0% 100.0%
+ [ 27, 34) 0 0.0% 100.0%
+ [ 34, 42) 0 0.0% 100.0%
+ [ 42, 52) 0 0.0% 100.0%
+ [ 52, 65) 0 0.0% 100.0%
+ [ 65, 81) 0 0.0% 100.0%
+ [ 81, 100) 0 0.0% 100.0%
+ [100, inf) 0 0.0% 100.0%
+Benchmark___10_chunk___10KB 1000 6486765 ns/op 30.83 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 4 Max: 50 Avg: 5.74
+ ------------------------------------------------------------
+ [ 4, 5) 821 82.1% 82.1% ########
+ [ 5, 6) 128 12.8% 94.9% #
+ [ 6, 7) 3 0.3% 95.2%
+ [ 7, 9) 1 0.1% 95.3%
+ [ 9, 11) 0 0.0% 95.3%
+ [ 11, 14) 0 0.0% 95.3%
+ [ 14, 18) 8 0.8% 96.1%
+ [ 18, 23) 0 0.0% 96.1%
+ [ 23, 30) 3 0.3% 96.4%
+ [ 30, 39) 5 0.5% 96.9%
+ [ 39, 51) 31 3.1% 100.0%
+ [ 51, 67) 0 0.0% 100.0%
+ [ 67, 88) 0 0.0% 100.0%
+ [ 88, 115) 0 0.0% 100.0%
+ [115, 150) 0 0.0% 100.0%
+ [150, 195) 0 0.0% 100.0%
+ [195, inf) 0 0.0% 100.0%
+Benchmark___10_chunk___10KB-2 2000 4310677 ns/op 46.40 MB/s
+--- Histogram (unit: ms)
+ Count: 2000 Min: 2 Max: 24 Avg: 3.84
+ ------------------------------------------------------------
+ [ 2, 3) 3 0.2% 0.2%
+ [ 3, 4) 1762 88.1% 88.2% #########
+ [ 4, 5) 33 1.7% 89.9%
+ [ 5, 6) 124 6.2% 96.1% #
+ [ 6, 8) 0 0.0% 96.1%
+ [ 8, 10) 0 0.0% 96.1%
+ [ 10, 13) 0 0.0% 96.1%
+ [ 13, 17) 0 0.0% 96.1%
+ [ 17, 22) 33 1.7% 97.8%
+ [ 22, 28) 45 2.2% 100.0%
+ [ 28, 35) 0 0.0% 100.0%
+ [ 35, 44) 0 0.0% 100.0%
+ [ 44, 55) 0 0.0% 100.0%
+ [ 55, 69) 0 0.0% 100.0%
+ [ 69, 86) 0 0.0% 100.0%
+ [ 86, 107) 0 0.0% 100.0%
+ [107, inf) 0 0.0% 100.0%
+Benchmark___10_chunk__100KB 300 29183306 ns/op 68.53 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 21 Max: 71 Avg: 28.66
+ ------------------------------------------------------------
+ [ 21, 22) 186 62.0% 62.0% ######
+ [ 22, 23) 31 10.3% 72.3% #
+ [ 23, 24) 5 1.7% 74.0%
+ [ 24, 26) 1 0.3% 74.3%
+ [ 26, 28) 0 0.0% 74.3%
+ [ 28, 31) 23 7.7% 82.0% #
+ [ 31, 35) 1 0.3% 82.3%
+ [ 35, 41) 0 0.0% 82.3%
+ [ 41, 49) 0 0.0% 82.3%
+ [ 49, 59) 25 8.3% 90.7% #
+ [ 59, 72) 28 9.3% 100.0% #
+ [ 72, 89) 0 0.0% 100.0%
+ [ 89, 111) 0 0.0% 100.0%
+ [111, 140) 0 0.0% 100.0%
+ [140, 178) 0 0.0% 100.0%
+ [178, 228) 0 0.0% 100.0%
+ [228, inf) 0 0.0% 100.0%
+Benchmark___10_chunk__100KB-2 500 16030525 ns/op 124.76 MB/s
+--- Histogram (unit: ms)
+ Count: 500 Min: 11 Max: 38 Avg: 15.56
+ ------------------------------------------------------------
+ [ 11, 12) 88 17.6% 17.6% ##
+ [ 12, 13) 295 59.0% 76.6% ######
+ [ 13, 14) 14 2.8% 79.4%
+ [ 14, 15) 1 0.2% 79.6%
+ [ 15, 17) 6 1.2% 80.8%
+ [ 17, 20) 9 1.8% 82.6%
+ [ 20, 23) 0 0.0% 82.6%
+ [ 23, 27) 0 0.0% 82.6%
+ [ 27, 32) 37 7.4% 90.0% #
+ [ 32, 39) 50 10.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, 110) 0 0.0% 100.0%
+ [110, 137) 0 0.0% 100.0%
+ [137, inf) 0 0.0% 100.0%
+
+Benchmark__100_chunk_____1B 500 14799281 ns/op 0.01 MB/s
+--- Histogram (unit: ms)
+ Count: 500 Min: 14 Max: 16 Avg: 14.23
+ ------------------------------------------------------------
+ [ 14, 15) 386 77.2% 77.2% ########
+ [ 15, 16) 113 22.6% 99.8% ##
+ [ 16, inf) 1 0.2% 100.0%
+Benchmark__100_chunk_____1B-2 1000 10135511 ns/op 0.02 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 8 Max: 11 Avg: 9.63
+ ------------------------------------------------------------
+ [ 8, 9) 11 1.1% 1.1%
+ [ 9, 10) 432 43.2% 44.3% ####
+ [ 10, 11) 477 47.7% 92.0% #####
+ [ 11, inf) 80 8.0% 100.0% #
+Benchmark__100_chunk____10B 500 15137229 ns/op 0.13 MB/s
+--- Histogram (unit: ms)
+ Count: 500 Min: 14 Max: 18 Avg: 14.73
+ ------------------------------------------------------------
+ [ 14, 15) 148 29.6% 29.6% ###
+ [ 15, 16) 339 67.8% 97.4% #######
+ [ 16, 17) 12 2.4% 99.8%
+ [ 17, 18) 0 0.0% 99.8%
+ [ 18, inf) 1 0.2% 100.0%
+Benchmark__100_chunk____10B-2 1000 10731944 ns/op 0.19 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 8 Max: 12 Avg: 10.26
+ ------------------------------------------------------------
+ [ 8, 9) 12 1.2% 1.2%
+ [ 9, 10) 159 15.9% 17.1% ##
+ [ 10, 11) 421 42.1% 59.2% ####
+ [ 11, 12) 375 37.5% 96.7% ####
+ [ 12, inf) 33 3.3% 100.0%
+Benchmark__100_chunk___100B 500 15355974 ns/op 1.30 MB/s
+--- Histogram (unit: ms)
+ Count: 500 Min: 14 Max: 17 Avg: 14.83
+ ------------------------------------------------------------
+ [ 14, 15) 128 25.6% 25.6% ###
+ [ 15, 16) 330 66.0% 91.6% #######
+ [ 16, 17) 41 8.2% 99.8% #
+ [ 17, inf) 1 0.2% 100.0%
+Benchmark__100_chunk___100B-2 1000 10757797 ns/op 1.86 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 8 Max: 13 Avg: 10.25
+ ------------------------------------------------------------
+ [ 8, 9) 32 3.2% 3.2%
+ [ 9, 10) 217 21.7% 24.9% ##
+ [ 10, 11) 363 36.3% 61.2% ####
+ [ 11, 12) 253 25.3% 86.5% ###
+ [ 12, 13) 127 12.7% 99.2% #
+ [ 13, inf) 8 0.8% 100.0%
+Benchmark__100_chunk____1KB 500 17505005 ns/op 11.43 MB/s
+--- Histogram (unit: ms)
+ Count: 500 Min: 15 Max: 19 Avg: 17.03
+ ------------------------------------------------------------
+ [ 15, 16) 51 10.2% 10.2% #
+ [ 16, 17) 112 22.4% 32.6% ##
+ [ 17, 18) 115 23.0% 55.6% ##
+ [ 18, 19) 216 43.2% 98.8% ####
+ [ 19, inf) 6 1.2% 100.0%
+Benchmark__100_chunk____1KB-2 1000 11660590 ns/op 17.15 MB/s
+--- Histogram (unit: ms)
+ Count: 1000 Min: 8 Max: 14 Avg: 11.15
+ ------------------------------------------------------------
+ [ 8, 9) 11 1.1% 1.1%
+ [ 9, 10) 158 15.8% 16.9% ##
+ [ 10, 11) 183 18.3% 35.2% ##
+ [ 11, 12) 270 27.0% 62.2% ###
+ [ 12, 13) 123 12.3% 74.5% #
+ [ 13, 14) 206 20.6% 95.1% ##
+ [ 14, inf) 49 4.9% 100.0%
+Benchmark__100_chunk___10KB 200 37914384 ns/op 52.75 MB/s
+--- Histogram (unit: ms)
+ Count: 200 Min: 35 Max: 42 Avg: 37.35
+ ------------------------------------------------------------
+ [ 35, 36) 9 4.5% 4.5%
+ [ 36, 37) 4 2.0% 6.5%
+ [ 37, 38) 120 60.0% 66.5% ######
+ [ 38, 39) 52 26.0% 92.5% ###
+ [ 39, 40) 8 4.0% 96.5%
+ [ 40, 41) 5 2.5% 99.0%
+ [ 41, 43) 2 1.0% 100.0%
+ [ 43, inf) 0 0.0% 100.0%
+Benchmark__100_chunk___10KB-2 300 20888999 ns/op 95.74 MB/s
+--- Histogram (unit: ms)
+ Count: 300 Min: 18 Max: 23 Avg: 20.38
+ ------------------------------------------------------------
+ [ 18, 19) 15 5.0% 5.0% #
+ [ 19, 20) 11 3.7% 8.7%
+ [ 20, 21) 135 45.0% 53.7% #####
+ [ 21, 22) 125 41.7% 95.3% ####
+ [ 22, 23) 13 4.3% 99.7%
+ [ 23, inf) 1 0.3% 100.0%
+Benchmark__100_chunk__100KB 30 215706680 ns/op 92.72 MB/s
+--- Histogram (unit: ms)
+ Count: 30 Min: 210 Max: 220 Avg: 215.20
+ ------------------------------------------------------------
+ [210, 211) 1 3.3% 3.3%
+ [211, 212) 2 6.7% 10.0% #
+ [212, 213) 0 0.0% 10.0%
+ [213, 214) 9 30.0% 40.0% ###
+ [214, 215) 4 13.3% 53.3% #
+ [215, 217) 4 13.3% 66.7% #
+ [217, 219) 1 3.3% 70.0%
+ [219, 221) 9 30.0% 100.0% ###
+ [221, 224) 0 0.0% 100.0%
+ [224, 227) 0 0.0% 100.0%
+ [227, inf) 0 0.0% 100.0%
+Benchmark__100_chunk__100KB-2 100 113221561 ns/op 176.64 MB/s
+--- Histogram (unit: ms)
+ Count: 100 Min: 108 Max: 120 Avg: 112.75
+ ------------------------------------------------------------
+ [108, 109) 2 2.0% 2.0%
+ [109, 110) 7 7.0% 9.0% #
+ [110, 111) 3 3.0% 12.0%
+ [111, 112) 16 16.0% 28.0% ##
+ [112, 113) 20 20.0% 48.0% ##
+ [113, 115) 29 29.0% 77.0% ###
+ [115, 117) 20 20.0% 97.0% ##
+ [117, 120) 2 2.0% 99.0%
+ [120, 123) 1 1.0% 100.0%
+ [123, 127) 0 0.0% 100.0%
+ [127, 132) 0 0.0% 100.0%
+ [132, 138) 0 0.0% 100.0%
+ [138, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk_____1B 50 127031961 ns/op 0.02 MB/s
+--- Histogram (unit: ms)
+ Count: 50 Min: 123 Max: 131 Avg: 126.56
------------------------------------------------------------
[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
+ [124, 125) 1 2.0% 4.0%
+ [125, 126) 11 22.0% 26.0% ##
+ [126, 127) 19 38.0% 64.0% ####
+ [127, 128) 6 12.0% 76.0% #
+ [128, 130) 8 16.0% 92.0% ##
+ [130, 132) 4 8.0% 100.0% #
+ [132, 134) 0 0.0% 100.0%
+ [134, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk_____1B-2 100 82251965 ns/op 0.02 MB/s
--- Histogram (unit: ms)
- Count: 100 Min: 109 Max: 128 Avg: 112.17
+ Count: 100 Min: 75 Max: 93 Avg: 81.77
------------------------------------------------------------
- [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
+ [ 75, 76) 3 3.0% 3.0%
+ [ 76, 77) 10 10.0% 13.0% #
+ [ 77, 78) 6 6.0% 19.0% #
+ [ 78, 79) 5 5.0% 24.0% #
+ [ 79, 81) 17 17.0% 41.0% ##
+ [ 81, 83) 17 17.0% 58.0% ##
+ [ 83, 86) 27 27.0% 85.0% ###
+ [ 86, 89) 6 6.0% 91.0% #
+ [ 89, 93) 8 8.0% 99.0% #
+ [ 93, 98) 1 1.0% 100.0%
+ [ 98, 104) 0 0.0% 100.0%
+ [104, 112) 0 0.0% 100.0%
+ [112, 122) 0 0.0% 100.0%
+ [122, 134) 0 0.0% 100.0%
+ [134, 148) 0 0.0% 100.0%
+ [148, 165) 0 0.0% 100.0%
+ [165, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk____10B 50 126841430 ns/op 0.16 MB/s
--- Histogram (unit: ms)
- Count: 30 Min: 205 Max: 216 Avg: 210.23
+ Count: 50 Min: 121 Max: 130 Avg: 126.34
------------------------------------------------------------
- [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
+ [121, 122) 1 2.0% 2.0%
+ [122, 123) 0 0.0% 2.0%
+ [123, 124) 1 2.0% 4.0%
+ [124, 125) 0 0.0% 4.0%
+ [125, 126) 7 14.0% 18.0% #
+ [126, 128) 31 62.0% 80.0% ######
+ [128, 130) 9 18.0% 98.0% ##
+ [130, 132) 1 2.0% 100.0%
+ [132, 135) 0 0.0% 100.0%
+ [135, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk____10B-2 100 80662645 ns/op 0.25 MB/s
--- Histogram (unit: ms)
- Count: 100 Min: 113 Max: 132 Avg: 121.15
+ Count: 100 Min: 73 Max: 93 Avg: 80.11
------------------------------------------------------------
- [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
+ [ 73, 74) 2 2.0% 2.0%
+ [ 74, 75) 3 3.0% 5.0%
+ [ 75, 76) 10 10.0% 15.0% #
+ [ 76, 77) 12 12.0% 27.0% #
+ [ 77, 79) 19 19.0% 46.0% ##
+ [ 79, 81) 13 13.0% 59.0% #
+ [ 81, 84) 20 20.0% 79.0% ##
+ [ 84, 88) 12 12.0% 91.0% #
+ [ 88, 92) 6 6.0% 97.0% #
+ [ 92, 98) 3 3.0% 100.0%
+ [ 98, 105) 0 0.0% 100.0%
+ [105, 113) 0 0.0% 100.0%
+ [113, 123) 0 0.0% 100.0%
+ [123, 136) 0 0.0% 100.0%
+ [136, 152) 0 0.0% 100.0%
+ [152, 171) 0 0.0% 100.0%
+ [171, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk___100B 50 130500666 ns/op 1.53 MB/s
--- Histogram (unit: ms)
- Count: 30 Min: 230 Max: 250 Avg: 238.03
+ Count: 50 Min: 125 Max: 141 Avg: 129.98
------------------------------------------------------------
- [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
+ [125, 126) 1 2.0% 2.0%
+ [126, 127) 1 2.0% 4.0%
+ [127, 128) 1 2.0% 6.0%
+ [128, 129) 6 12.0% 18.0% #
+ [129, 131) 27 54.0% 72.0% #####
+ [131, 133) 8 16.0% 88.0% ##
+ [133, 136) 4 8.0% 96.0% #
+ [136, 139) 1 2.0% 98.0%
+ [139, 143) 1 2.0% 100.0%
+ [143, 148) 0 0.0% 100.0%
+ [148, 154) 0 0.0% 100.0%
+ [154, 161) 0 0.0% 100.0%
+ [161, 170) 0 0.0% 100.0%
+ [170, 181) 0 0.0% 100.0%
+ [181, 194) 0 0.0% 100.0%
+ [194, 210) 0 0.0% 100.0%
+ [210, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk___100B-2 100 82993437 ns/op 2.41 MB/s
--- Histogram (unit: ms)
- Count: 50 Min: 126 Max: 149 Avg: 137.94
+ Count: 100 Min: 72 Max: 93 Avg: 82.49
------------------------------------------------------------
- [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
+ [ 72, 73) 1 1.0% 1.0%
+ [ 73, 74) 0 0.0% 1.0%
+ [ 74, 75) 0 0.0% 1.0%
+ [ 75, 76) 1 1.0% 2.0%
+ [ 76, 78) 10 10.0% 12.0% #
+ [ 78, 80) 14 14.0% 26.0% #
+ [ 80, 83) 15 15.0% 41.0% ##
+ [ 83, 87) 48 48.0% 89.0% #####
+ [ 87, 92) 7 7.0% 96.0% #
+ [ 92, 98) 4 4.0% 100.0%
+ [ 98, 105) 0 0.0% 100.0%
+ [105, 114) 0 0.0% 100.0%
+ [114, 125) 0 0.0% 100.0%
+ [125, 138) 0 0.0% 100.0%
+ [138, 155) 0 0.0% 100.0%
+ [155, 175) 0 0.0% 100.0%
+ [175, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk____1KB 50 152120390 ns/op 13.15 MB/s
--- Histogram (unit: ms)
- Count: 30 Min: 264 Max: 299 Avg: 275.97
+ Count: 50 Min: 145 Max: 161 Avg: 151.72
------------------------------------------------------------
- [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%
+ [145, 146) 1 2.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
+ [147, 148) 1 2.0% 6.0%
+ [148, 149) 2 4.0% 10.0%
+ [149, 151) 17 34.0% 44.0% ###
+ [151, 153) 8 16.0% 60.0% ##
+ [153, 156) 16 32.0% 92.0% ###
+ [156, 159) 2 4.0% 96.0%
+ [159, 163) 2 4.0% 100.0%
+ [163, 168) 0 0.0% 100.0%
+ [168, 174) 0 0.0% 100.0%
+ [174, 181) 0 0.0% 100.0%
+ [181, 190) 0 0.0% 100.0%
+ [190, 201) 0 0.0% 100.0%
+ [201, 214) 0 0.0% 100.0%
+ [214, 230) 0 0.0% 100.0%
+ [230, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk____1KB-2 100 91860277 ns/op 21.77 MB/s
--- Histogram (unit: ms)
- Count: 20 Min: 458 Max: 491 Avg: 468.40
+ Count: 100 Min: 80 Max: 106 Avg: 91.33
------------------------------------------------------------
- [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
+ [ 80, 81) 2 2.0% 2.0%
+ [ 81, 82) 2 2.0% 4.0%
+ [ 82, 83) 3 3.0% 7.0%
+ [ 83, 84) 4 4.0% 11.0%
+ [ 84, 86) 10 10.0% 21.0% #
+ [ 86, 88) 11 11.0% 32.0% #
+ [ 88, 91) 14 14.0% 46.0% #
+ [ 91, 95) 19 19.0% 65.0% ##
+ [ 95, 100) 26 26.0% 91.0% ###
+ [100, 107) 9 9.0% 100.0% #
+ [107, 115) 0 0.0% 100.0%
+ [115, 125) 0 0.0% 100.0%
+ [125, 138) 0 0.0% 100.0%
+ [138, 154) 0 0.0% 100.0%
+ [154, 174) 0 0.0% 100.0%
+ [174, 199) 0 0.0% 100.0%
+ [199, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk___10KB 20 337020835 ns/op 59.34 MB/s
--- Histogram (unit: ms)
- Count: 30 Min: 242 Max: 275 Avg: 263.13
+ Count: 20 Min: 331 Max: 342 Avg: 336.50
------------------------------------------------------------
- [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
+ [331, 332) 1 5.0% 5.0% #
+ [332, 333) 2 10.0% 15.0% #
+ [333, 334) 1 5.0% 20.0% #
+ [334, 335) 3 15.0% 35.0% ##
+ [335, 336) 2 10.0% 45.0% #
+ [336, 338) 2 10.0% 55.0% #
+ [338, 340) 5 25.0% 80.0% ###
+ [340, 343) 4 20.0% 100.0% ##
+ [343, 346) 0 0.0% 100.0%
+ [346, 350) 0 0.0% 100.0%
+ [350, 354) 0 0.0% 100.0%
+ [354, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk___10KB-2 50 177497001 ns/op 112.68 MB/s
+--- Histogram (unit: ms)
+ Count: 50 Min: 172 Max: 183 Avg: 176.96
+ ------------------------------------------------------------
+ [172, 173) 4 8.0% 8.0% #
+ [173, 174) 2 4.0% 12.0%
+ [174, 175) 8 16.0% 28.0% ##
+ [175, 176) 4 8.0% 36.0% #
+ [176, 177) 2 4.0% 40.0%
+ [177, 179) 9 18.0% 58.0% ##
+ [179, 181) 18 36.0% 94.0% ####
+ [181, 184) 3 6.0% 100.0% #
+ [184, 187) 0 0.0% 100.0%
+ [187, 191) 0 0.0% 100.0%
+ [191, 195) 0 0.0% 100.0%
+ [195, inf) 0 0.0% 100.0%
+Benchmark___1K_chunk__100KB 3 2185333858 ns/op 91.52 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
+Benchmark___1K_chunk__100KB-2 5 1140505127 ns/op 175.36 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__per_chunk____1B 50000 127847 ns/op 0.02 MB/s
+Benchmark__per_chunk____1B-2 100000 81496 ns/op 0.02 MB/s
+Benchmark__per_chunk___10B 50000 125213 ns/op 0.16 MB/s
+Benchmark__per_chunk___10B-2 100000 79532 ns/op 0.25 MB/s
+Benchmark__per_chunk__100B 50000 126242 ns/op 1.58 MB/s
+Benchmark__per_chunk__100B-2 100000 77971 ns/op 2.57 MB/s
+Benchmark__per_chunk___1KB 50000 148314 ns/op 13.48 MB/s
+Benchmark__per_chunk___1KB-2 100000 87787 ns/op 22.78 MB/s
+Benchmark__per_chunk__10KB 20000 323521 ns/op 61.82 MB/s
+Benchmark__per_chunk__10KB-2 50000 172500 ns/op 115.94 MB/s
+Benchmark__per_chunk_100KB 3000 2065561 ns/op 96.83 MB/s
+Benchmark__per_chunk_100KB-2 10000 1062338 ns/op 188.26 MB/s
-Benchmark___10B_mux__100_chunks___10B 300 26348223 ns/op 0.00 MB/s
+Benchmark___10B_mux__100_chunks___10B 500 16428840 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 300 Min: 9 Max: 30 Avg: 25.79
+ Count: 500 Min: 8 Max: 18 Avg: 16.03
------------------------------------------------------------
- [ 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
+ [ 8, 9) 4 0.8% 0.8%
+ [ 9, 10) 0 0.0% 0.8%
+ [ 10, 11) 0 0.0% 0.8%
+ [ 11, 12) 1 0.2% 1.0%
+ [ 12, 13) 3 0.6% 1.6%
+ [ 13, 15) 5 1.0% 2.6%
+ [ 15, 17) 403 80.6% 83.2% ########
+ [ 17, 19) 84 16.8% 100.0% ##
+ [ 19, 22) 0 0.0% 100.0%
+ [ 22, 25) 0 0.0% 100.0%
+ [ 25, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks___10B-2 2000 4039798 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 1000 Min: 4 Max: 17 Avg: 8.54
+ Count: 2000 Min: 1 Max: 10 Avg: 3.55
------------------------------------------------------------
- [ 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
+ [ 1, 2) 104 5.2% 5.2% #
+ [ 2, 3) 588 29.4% 34.6% ###
+ [ 3, 4) 397 19.9% 54.5% ##
+ [ 4, 5) 375 18.8% 73.2% ##
+ [ 5, 6) 278 13.9% 87.1% #
+ [ 6, 8) 208 10.4% 97.5% #
+ [ 8, 10) 48 2.4% 99.9%
+ [ 10, 12) 2 0.1% 100.0%
+ [ 12, 15) 0 0.0% 100.0%
+ [ 15, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks__100B 500 16959639 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 300 Min: 9 Max: 34 Avg: 28.80
+ Count: 500 Min: 10 Max: 19 Avg: 16.44
------------------------------------------------------------
- [ 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
+ [ 10, 11) 3 0.6% 0.6%
+ [ 11, 12) 0 0.0% 0.6%
+ [ 12, 13) 3 0.6% 1.2%
+ [ 13, 14) 1 0.2% 1.4%
+ [ 14, 15) 77 15.4% 16.8% ##
+ [ 15, 17) 122 24.4% 41.2% ##
+ [ 17, 19) 286 57.2% 98.4% ######
+ [ 19, 21) 8 1.6% 100.0%
+ [ 21, 24) 0 0.0% 100.0%
+ [ 24, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks__100B-2 2000 4129118 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 1000 Min: 5 Max: 21 Avg: 9.74
+ Count: 2000 Min: 1 Max: 12 Avg: 3.64
------------------------------------------------------------
- [ 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
+ [ 1, 2) 77 3.9% 3.9%
+ [ 2, 3) 693 34.6% 38.5% ###
+ [ 3, 4) 407 20.4% 58.9% ##
+ [ 4, 5) 308 15.4% 74.2% ##
+ [ 5, 6) 182 9.1% 83.4% #
+ [ 6, 8) 213 10.7% 94.0% #
+ [ 8, 10) 91 4.5% 98.6%
+ [ 10, 13) 29 1.5% 100.0%
+ [ 13, 16) 0 0.0% 100.0%
+ [ 16, 20) 0 0.0% 100.0%
+ [ 20, 24) 0 0.0% 100.0%
+ [ 24, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks___1KB 500 19240324 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 300 Min: 9 Max: 38 Avg: 29.57
+ Count: 500 Min: 13 Max: 24 Avg: 18.60
------------------------------------------------------------
- [ 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
+ [ 13, 14) 1 0.2% 0.2%
+ [ 14, 15) 0 0.0% 0.2%
+ [ 15, 16) 0 0.0% 0.2%
+ [ 16, 17) 152 30.4% 30.6% ###
+ [ 17, 18) 75 15.0% 45.6% ##
+ [ 18, 20) 58 11.6% 57.2% #
+ [ 20, 22) 179 35.8% 93.0% ####
+ [ 22, 25) 35 7.0% 100.0% #
+ [ 25, 28) 0 0.0% 100.0%
+ [ 28, 32) 0 0.0% 100.0%
+ [ 32, 36) 0 0.0% 100.0%
+ [ 36, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks___1KB-2 2000 4765628 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 1000 Min: 4 Max: 22 Avg: 10.61
+ Count: 2000 Min: 1 Max: 15 Avg: 4.29
------------------------------------------------------------
- [ 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%
+ [ 1, 2) 49 2.5% 2.5%
+ [ 2, 3) 573 28.7% 31.1% ###
+ [ 3, 4) 411 20.6% 51.7% ##
+ [ 4, 5) 262 13.1% 64.8% #
+ [ 5, 7) 369 18.4% 83.2% ##
+ [ 7, 9) 150 7.5% 90.7% #
+ [ 9, 11) 87 4.4% 95.1%
+ [ 11, 14) 90 4.5% 99.6%
+ [ 14, 18) 9 0.5% 100.0%
+ [ 18, 22) 0 0.0% 100.0%
+ [ 22, 27) 0 0.0% 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
+ [ 41, 50) 0 0.0% 100.0%
+ [ 50, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks__10KB 200 38595003 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 200 Min: 9 Max: 57 Avg: 44.30
+ Count: 200 Min: 8 Max: 43 Avg: 38.09
------------------------------------------------------------
- [ 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
+ [ 8, 9) 2 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, 15) 0 0.0% 1.0%
+ [ 15, 18) 0 0.0% 1.0%
+ [ 18, 22) 0 0.0% 1.0%
+ [ 22, 27) 0 0.0% 1.0%
+ [ 27, 33) 2 1.0% 2.0%
+ [ 33, 41) 125 62.5% 64.5% ######
+ [ 41, 51) 71 35.5% 100.0% ####
+ [ 51, 64) 0 0.0% 100.0%
+ [ 64, 81) 0 0.0% 100.0%
+ [ 81, 102) 0 0.0% 100.0%
+ [102, 129) 0 0.0% 100.0%
+ [129, 163) 0 0.0% 100.0%
+ [163, inf) 0 0.0% 100.0%
+Benchmark___10B_mux__100_chunks__10KB-2 500 13282699 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 300 Min: 4 Max: 41 Avg: 23.28
+ Count: 500 Min: 1 Max: 27 Avg: 12.81
------------------------------------------------------------
- [ 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
+ [ 1, 2) 12 2.4% 2.4%
+ [ 2, 3) 87 17.4% 19.8% ##
+ [ 3, 4) 19 3.8% 23.6%
+ [ 4, 5) 19 3.8% 27.4%
+ [ 5, 7) 23 4.6% 32.0%
+ [ 7, 9) 25 5.0% 37.0% #
+ [ 9, 12) 31 6.2% 43.2% #
+ [ 12, 16) 45 9.0% 52.2% #
+ [ 16, 21) 130 26.0% 78.2% ###
+ [ 21, 28) 109 21.8% 100.0% ##
+ [ 28, 36) 0 0.0% 100.0%
+ [ 36, 46) 0 0.0% 100.0%
+ [ 46, 59) 0 0.0% 100.0%
+ [ 59, 75) 0 0.0% 100.0%
+ [ 75, 95) 0 0.0% 100.0%
+ [ 95, 120) 0 0.0% 100.0%
+ [120, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks___10B 100 89458344 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 100 Min: 12 Max: 215 Avg: 131.05
+ Count: 100 Min: 21 Max: 141 Avg: 88.95
------------------------------------------------------------
- [ 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
+ [ 21, 22) 1 1.0% 1.0%
+ [ 22, 23) 0 0.0% 1.0%
+ [ 23, 24) 0 0.0% 1.0%
+ [ 24, 26) 0 0.0% 1.0%
+ [ 26, 29) 2 2.0% 3.0%
+ [ 29, 33) 1 1.0% 4.0%
+ [ 33, 39) 1 1.0% 5.0%
+ [ 39, 48) 5 5.0% 10.0% #
+ [ 48, 60) 12 12.0% 22.0% #
+ [ 60, 77) 18 18.0% 40.0% ##
+ [ 77, 101) 21 21.0% 61.0% ##
+ [101, 134) 33 33.0% 94.0% ###
+ [134, 180) 6 6.0% 100.0% #
+ [180, 243) 0 0.0% 100.0%
+ [243, 330) 0 0.0% 100.0%
+ [330, 449) 0 0.0% 100.0%
+ [449, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks___10B-2 2000 5537208 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 300 Min: 5 Max: 108 Avg: 26.37
+ Count: 2000 Min: 1 Max: 46 Avg: 5.05
------------------------------------------------------------
- [ 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
+ [ 1, 2) 36 1.8% 1.8%
+ [ 2, 3) 785 39.2% 41.1% ####
+ [ 3, 4) 580 29.0% 70.0% ###
+ [ 4, 6) 266 13.3% 83.4% #
+ [ 6, 8) 59 3.0% 86.3%
+ [ 8, 11) 48 2.4% 88.7%
+ [ 11, 15) 76 3.8% 92.5%
+ [ 15, 20) 37 1.9% 94.4%
+ [ 20, 27) 54 2.7% 97.1%
+ [ 27, 36) 36 1.8% 98.9%
+ [ 36, 48) 23 1.2% 100.0%
+ [ 48, 64) 0 0.0% 100.0%
+ [ 64, 85) 0 0.0% 100.0%
+ [ 85, 112) 0 0.0% 100.0%
+ [112, 146) 0 0.0% 100.0%
+ [146, 190) 0 0.0% 100.0%
+ [190, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks__100B 100 95560922 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 50 Min: 73 Max: 233 Avg: 159.76
+ Count: 100 Min: 4 Max: 154 Avg: 95.10
------------------------------------------------------------
- [ 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
+ [ 4, 5) 1 1.0% 1.0%
+ [ 5, 6) 0 0.0% 1.0%
+ [ 6, 7) 0 0.0% 1.0%
+ [ 7, 9) 1 1.0% 2.0%
+ [ 9, 12) 0 0.0% 2.0%
+ [ 12, 17) 0 0.0% 2.0%
+ [ 17, 24) 2 2.0% 4.0%
+ [ 24, 34) 0 0.0% 4.0%
+ [ 34, 48) 2 2.0% 6.0%
+ [ 48, 68) 18 18.0% 24.0% ##
+ [ 68, 96) 25 25.0% 49.0% ###
+ [ 96, 135) 35 35.0% 84.0% ####
+ [135, 190) 16 16.0% 100.0% ##
+ [190, 266) 0 0.0% 100.0%
+ [266, 373) 0 0.0% 100.0%
+ [373, 522) 0 0.0% 100.0%
+ [522, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks__100B-2 2000 5772039 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 200 Min: 4 Max: 124 Avg: 37.60
+ Count: 2000 Min: 1 Max: 48 Avg: 5.29
------------------------------------------------------------
- [ 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
+ [ 1, 2) 19 1.0% 1.0%
+ [ 2, 3) 754 37.7% 38.7% ####
+ [ 3, 4) 569 28.5% 67.1% ###
+ [ 4, 6) 329 16.4% 83.6% ##
+ [ 6, 8) 56 2.8% 86.4%
+ [ 8, 11) 45 2.2% 88.6%
+ [ 11, 15) 34 1.7% 90.3%
+ [ 15, 21) 75 3.8% 94.1%
+ [ 21, 28) 75 3.8% 97.8%
+ [ 28, 38) 24 1.2% 99.0%
+ [ 38, 51) 20 1.0% 100.0%
+ [ 51, 67) 0 0.0% 100.0%
+ [ 67, 88) 0 0.0% 100.0%
+ [ 88, 116) 0 0.0% 100.0%
+ [116, 152) 0 0.0% 100.0%
+ [152, 198) 0 0.0% 100.0%
+ [198, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks___1KB 100 104839465 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 100 Min: 9 Max: 265 Avg: 163.45
+ Count: 100 Min: 9 Max: 179 Avg: 104.38
------------------------------------------------------------
- [ 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
+ [ 9, 10) 3 3.0% 3.0%
+ [ 10, 11) 0 0.0% 3.0%
+ [ 11, 12) 1 1.0% 4.0%
+ [ 12, 14) 1 1.0% 5.0%
+ [ 14, 17) 0 0.0% 5.0%
+ [ 17, 22) 0 0.0% 5.0%
+ [ 22, 29) 0 0.0% 5.0%
+ [ 29, 39) 3 3.0% 8.0%
+ [ 39, 54) 3 3.0% 11.0%
+ [ 54, 75) 9 9.0% 20.0% #
+ [ 75, 105) 35 35.0% 55.0% ####
+ [105, 148) 20 20.0% 75.0% ##
+ [148, 208) 25 25.0% 100.0% ###
+ [208, 293) 0 0.0% 100.0%
+ [293, 413) 0 0.0% 100.0%
+ [413, 583) 0 0.0% 100.0%
+ [583, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks___1KB-2 1000 7235554 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 200 Min: 4 Max: 137 Avg: 43.13
+ Count: 1000 Min: 1 Max: 55 Avg: 6.74
------------------------------------------------------------
- [ 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
+ [ 1, 2) 10 1.0% 1.0%
+ [ 2, 3) 240 24.0% 25.0% ##
+ [ 3, 4) 272 27.2% 52.2% ###
+ [ 4, 6) 265 26.5% 78.7% ###
+ [ 6, 8) 44 4.4% 83.1%
+ [ 8, 11) 30 3.0% 86.1%
+ [ 11, 15) 22 2.2% 88.3%
+ [ 15, 21) 38 3.8% 92.1%
+ [ 21, 29) 20 2.0% 94.1%
+ [ 29, 39) 32 3.2% 97.3%
+ [ 39, 53) 25 2.5% 99.8%
+ [ 53, 71) 2 0.2% 100.0%
+ [ 71, 95) 0 0.0% 100.0%
+ [ 95, 126) 0 0.0% 100.0%
+ [126, 167) 0 0.0% 100.0%
+ [167, 221) 0 0.0% 100.0%
+ [221, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks__10KB 100 72299884 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 100 Min: 8 Max: 138 Avg: 92.97
+ Count: 100 Min: 8 Max: 122 Avg: 71.77
------------------------------------------------------------
[ 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
+ [ 16, 20) 4 4.0% 5.0%
+ [ 20, 26) 0 0.0% 5.0%
+ [ 26, 35) 4 4.0% 9.0%
+ [ 35, 47) 11 11.0% 20.0% #
+ [ 47, 64) 12 12.0% 32.0% #
+ [ 64, 87) 42 42.0% 74.0% ####
+ [ 87, 119) 24 24.0% 98.0% ##
+ [119, 163) 2 2.0% 100.0%
+ [163, 223) 0 0.0% 100.0%
+ [223, 306) 0 0.0% 100.0%
+ [306, 420) 0 0.0% 100.0%
+ [420, inf) 0 0.0% 100.0%
+Benchmark___10B_mux___1K_chunks__10KB-2 200 36957063 ns/op 0.00 MB/s
--- Histogram (unit: ms)
- Count: 100 Min: 5 Max: 89 Avg: 53.92
+ Count: 200 Min: 2 Max: 72 Avg: 36.49
------------------------------------------------------------
- [ 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
+ [ 2, 3) 8 4.0% 4.0%
+ [ 3, 4) 5 2.5% 6.5%
+ [ 4, 5) 6 3.0% 9.5%
+ [ 5, 7) 3 1.5% 11.0%
+ [ 7, 10) 6 3.0% 14.0%
+ [ 10, 14) 6 3.0% 17.0%
+ [ 14, 19) 8 4.0% 21.0%
+ [ 19, 26) 12 6.0% 27.0% #
+ [ 26, 35) 31 15.5% 42.5% ##
+ [ 35, 47) 48 24.0% 66.5% ##
+ [ 47, 63) 52 26.0% 92.5% ###
+ [ 63, 85) 15 7.5% 100.0% #
+ [ 85, 114) 0 0.0% 100.0%
+ [114, 153) 0 0.0% 100.0%
+ [153, 205) 0 0.0% 100.0%
+ [205, 274) 0 0.0% 100.0%
+ [274, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks___10B 500 17595461 ns/op 0.11 MB/s
--- Histogram (unit: ms)
- Count: 300 Min: 8 Max: 32 Avg: 25.48
+ Count: 500 Min: 7 Max: 35 Avg: 17.11
------------------------------------------------------------
- [ 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%
+ [ 7, 8) 1 0.2% 0.2%
+ [ 8, 9) 1 0.2% 0.4%
+ [ 9, 10) 0 0.0% 0.4%
+ [ 10, 11) 0 0.0% 0.4%
+ [ 11, 13) 4 0.8% 1.2%
+ [ 13, 16) 380 76.0% 77.2% ########
+ [ 16, 19) 43 8.6% 85.8% #
+ [ 19, 23) 2 0.4% 86.2%
+ [ 23, 28) 14 2.8% 89.0%
+ [ 28, 35) 54 10.8% 99.8% #
+ [ 35, 44) 1 0.2% 100.0%
+ [ 44, 55) 0 0.0% 100.0%
+ [ 55, 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
+ [ 86, 108) 0 0.0% 100.0%
+ [108, 135) 0 0.0% 100.0%
+ [135, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks___10B-2 2000 4157817 ns/op 0.48 MB/s
--- Histogram (unit: ms)
- Count: 1000 Min: 4 Max: 23 Avg: 7.96
+ Count: 2000 Min: 1 Max: 22 Avg: 3.67
------------------------------------------------------------
- [ 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%
+ [ 1, 2) 29 1.5% 1.5%
+ [ 2, 3) 804 40.2% 41.7% ####
+ [ 3, 4) 550 27.5% 69.2% ###
+ [ 4, 5) 289 14.5% 83.6% #
+ [ 5, 7) 160 8.0% 91.6% #
+ [ 7, 9) 31 1.6% 93.2%
+ [ 9, 12) 63 3.2% 96.3%
+ [ 12, 16) 32 1.6% 97.9%
+ [ 16, 21) 36 1.8% 99.7%
+ [ 21, 27) 6 0.3% 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
+ [ 34, 43) 0 0.0% 100.0%
+ [ 43, 54) 0 0.0% 100.0%
+ [ 54, 67) 0 0.0% 100.0%
+ [ 67, 84) 0 0.0% 100.0%
+ [ 84, 104) 0 0.0% 100.0%
+ [104, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks__100B 500 18203976 ns/op 0.11 MB/s
--- Histogram (unit: ms)
- Count: 200 Min: 9 Max: 44 Avg: 31.49
+ Count: 500 Min: 8 Max: 39 Avg: 17.78
------------------------------------------------------------
- [ 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
+ [ 8, 9) 1 0.2% 0.2%
+ [ 9, 10) 0 0.0% 0.2%
+ [ 10, 11) 0 0.0% 0.2%
+ [ 11, 12) 0 0.0% 0.2%
+ [ 12, 14) 5 1.0% 1.2%
+ [ 14, 17) 405 81.0% 82.2% ########
+ [ 17, 20) 21 4.2% 86.4%
+ [ 20, 24) 1 0.2% 86.6%
+ [ 24, 30) 8 1.6% 88.2%
+ [ 30, 37) 54 10.8% 99.0% #
+ [ 37, 46) 5 1.0% 100.0%
+ [ 46, 58) 0 0.0% 100.0%
+ [ 58, 73) 0 0.0% 100.0%
+ [ 73, 92) 0 0.0% 100.0%
+ [ 92, 116) 0 0.0% 100.0%
+ [116, 146) 0 0.0% 100.0%
+ [146, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks__100B-2 2000 4271254 ns/op 0.47 MB/s
--- Histogram (unit: ms)
- Count: 1000 Min: 4 Max: 28 Avg: 11.20
+ Count: 2000 Min: 1 Max: 26 Avg: 3.79
------------------------------------------------------------
- [ 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%
+ [ 1, 2) 31 1.6% 1.6%
+ [ 2, 3) 761 38.1% 39.6% ####
+ [ 3, 4) 550 27.5% 67.1% ###
+ [ 4, 5) 316 15.8% 82.9% ##
+ [ 5, 7) 166 8.3% 91.2% #
+ [ 7, 9) 25 1.2% 92.5%
+ [ 9, 12) 65 3.2% 95.7%
+ [ 12, 16) 48 2.4% 98.1%
+ [ 16, 21) 22 1.1% 99.2%
+ [ 21, 27) 16 0.8% 100.0%
+ [ 27, 35) 0 0.0% 100.0%
+ [ 35, 45) 0 0.0% 100.0%
+ [ 45, 58) 0 0.0% 100.0%
+ [ 58, 74) 0 0.0% 100.0%
+ [ 74, 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
+Benchmark___1KB_mux__100_chunks___1KB 300 20682669 ns/op 0.10 MB/s
--- Histogram (unit: ms)
- Count: 200 Min: 9 Max: 61 Avg: 47.74
+ Count: 300 Min: 13 Max: 41 Avg: 20.18
------------------------------------------------------------
- [ 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
+ [ 13, 14) 1 0.3% 0.3%
+ [ 14, 15) 2 0.7% 1.0%
+ [ 15, 16) 0 0.0% 1.0%
+ [ 16, 17) 0 0.0% 1.0%
+ [ 17, 19) 245 81.7% 82.7% ########
+ [ 19, 22) 8 2.7% 85.3%
+ [ 22, 25) 5 1.7% 87.0%
+ [ 25, 29) 0 0.0% 87.0%
+ [ 29, 34) 1 0.3% 87.3%
+ [ 34, 41) 28 9.3% 96.7% #
+ [ 41, 50) 10 3.3% 100.0%
+ [ 50, 61) 0 0.0% 100.0%
+ [ 61, 75) 0 0.0% 100.0%
+ [ 75, 92) 0 0.0% 100.0%
+ [ 92, 114) 0 0.0% 100.0%
+ [114, 141) 0 0.0% 100.0%
+ [141, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks___1KB-2 2000 4950276 ns/op 0.40 MB/s
--- Histogram (unit: ms)
- Count: 300 Min: 4 Max: 42 Avg: 24.07
+ Count: 2000 Min: 1 Max: 26 Avg: 4.46
------------------------------------------------------------
- [ 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
+ [ 1, 2) 12 0.6% 0.6%
+ [ 2, 3) 546 27.3% 27.9% ###
+ [ 3, 4) 517 25.9% 53.8% ###
+ [ 4, 5) 354 17.7% 71.5% ##
+ [ 5, 7) 341 17.1% 88.5% ##
+ [ 7, 9) 60 3.0% 91.5%
+ [ 9, 12) 37 1.9% 93.4%
+ [ 12, 16) 76 3.8% 97.2%
+ [ 16, 21) 20 1.0% 98.2%
+ [ 21, 27) 37 1.9% 100.0%
+ [ 27, 35) 0 0.0% 100.0%
+ [ 35, 45) 0 0.0% 100.0%
+ [ 45, 58) 0 0.0% 100.0%
+ [ 58, 74) 0 0.0% 100.0%
+ [ 74, 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 39416624 ns/op 0.05 MB/s
--- Histogram (unit: ms)
- Count: 100 Min: 10 Max: 209 Avg: 131.34
+ Count: 200 Min: 14 Max: 57 Avg: 38.98
------------------------------------------------------------
- [ 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
+ [ 14, 15) 2 1.0% 1.0%
+ [ 15, 16) 0 0.0% 1.0%
+ [ 16, 17) 0 0.0% 1.0%
+ [ 17, 19) 2 1.0% 2.0%
+ [ 19, 21) 0 0.0% 2.0%
+ [ 21, 24) 0 0.0% 2.0%
+ [ 24, 28) 0 0.0% 2.0%
+ [ 28, 33) 4 2.0% 4.0%
+ [ 33, 40) 130 65.0% 69.0% #######
+ [ 40, 49) 16 8.0% 77.0% #
+ [ 49, 61) 46 23.0% 100.0% ##
+ [ 61, 76) 0 0.0% 100.0%
+ [ 76, 96) 0 0.0% 100.0%
+ [ 96, 122) 0 0.0% 100.0%
+ [122, 155) 0 0.0% 100.0%
+ [155, 198) 0 0.0% 100.0%
+ [198, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux__100_chunks__10KB-2 500 13370112 ns/op 0.15 MB/s
--- Histogram (unit: ms)
- Count: 300 Min: 4 Max: 101 Avg: 22.88
+ Count: 500 Min: 1 Max: 35 Avg: 12.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
+ [ 1, 2) 6 1.2% 1.2%
+ [ 2, 3) 94 18.8% 20.0% ##
+ [ 3, 4) 29 5.8% 25.8% #
+ [ 4, 6) 22 4.4% 30.2%
+ [ 6, 8) 15 3.0% 33.2%
+ [ 8, 11) 55 11.0% 44.2% #
+ [ 11, 15) 31 6.2% 50.4% #
+ [ 15, 20) 174 34.8% 85.2% ###
+ [ 20, 26) 14 2.8% 88.0%
+ [ 26, 34) 54 10.8% 98.8% #
+ [ 34, 44) 6 1.2% 100.0%
+ [ 44, 57) 0 0.0% 100.0%
+ [ 57, 73) 0 0.0% 100.0%
+ [ 73, 94) 0 0.0% 100.0%
+ [ 94, 120) 0 0.0% 100.0%
+ [120, 153) 0 0.0% 100.0%
+ [153, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks___10B 100 95315574 ns/op 0.02 MB/s
--- Histogram (unit: ms)
- Count: 50 Min: 22 Max: 222 Avg: 137.50
+ Count: 100 Min: 23 Max: 150 Avg: 94.81
------------------------------------------------------------
- [ 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
+ [ 23, 24) 1 1.0% 1.0%
+ [ 24, 25) 0 0.0% 1.0%
+ [ 25, 26) 0 0.0% 1.0%
+ [ 26, 28) 1 1.0% 2.0%
+ [ 28, 31) 0 0.0% 2.0%
+ [ 31, 36) 1 1.0% 3.0%
+ [ 36, 42) 2 2.0% 5.0%
+ [ 42, 51) 5 5.0% 10.0% #
+ [ 51, 64) 7 7.0% 17.0% #
+ [ 64, 82) 17 17.0% 34.0% ##
+ [ 82, 107) 24 24.0% 58.0% ##
+ [107, 141) 38 38.0% 96.0% ####
+ [141, 189) 4 4.0% 100.0%
+ [189, 255) 0 0.0% 100.0%
+ [255, 346) 0 0.0% 100.0%
+ [346, 472) 0 0.0% 100.0%
+ [472, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks___10B-2 2000 5107260 ns/op 0.39 MB/s
--- Histogram (unit: ms)
- Count: 200 Min: 5 Max: 117 Avg: 29.41
+ Count: 2000 Min: 1 Max: 46 Avg: 4.61
------------------------------------------------------------
- [ 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
+ [ 1, 2) 15 0.8% 0.8%
+ [ 2, 3) 792 39.6% 40.4% ####
+ [ 3, 4) 669 33.5% 73.8% ###
+ [ 4, 6) 289 14.5% 88.2% #
+ [ 6, 8) 28 1.4% 89.7%
+ [ 8, 11) 23 1.2% 90.8%
+ [ 11, 15) 34 1.7% 92.5%
+ [ 15, 20) 36 1.8% 94.3%
+ [ 20, 27) 71 3.6% 97.9%
+ [ 27, 36) 37 1.9% 99.7%
+ [ 36, 48) 6 0.3% 100.0%
+ [ 48, 64) 0 0.0% 100.0%
+ [ 64, 85) 0 0.0% 100.0%
+ [ 85, 112) 0 0.0% 100.0%
+ [112, 146) 0 0.0% 100.0%
+ [146, 190) 0 0.0% 100.0%
+ [190, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks__100B 100 94447578 ns/op 0.02 MB/s
--- Histogram (unit: ms)
- Count: 50 Min: 19 Max: 292 Avg: 165.50
+ Count: 100 Min: 2 Max: 149 Avg: 93.96
------------------------------------------------------------
- [ 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
+ [ 2, 3) 1 1.0% 1.0%
+ [ 3, 4) 0 0.0% 1.0%
+ [ 4, 5) 0 0.0% 1.0%
+ [ 5, 7) 0 0.0% 1.0%
+ [ 7, 10) 2 2.0% 3.0%
+ [ 10, 15) 0 0.0% 3.0%
+ [ 15, 22) 1 1.0% 4.0%
+ [ 22, 32) 2 2.0% 6.0%
+ [ 32, 46) 7 7.0% 13.0% #
+ [ 46, 65) 9 9.0% 22.0% #
+ [ 65, 92) 20 20.0% 42.0% ##
+ [ 92, 130) 40 40.0% 82.0% ####
+ [130, 184) 18 18.0% 100.0% ##
+ [184, 259) 0 0.0% 100.0%
+ [259, 364) 0 0.0% 100.0%
+ [364, 511) 0 0.0% 100.0%
+ [511, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks__100B-2 2000 5333802 ns/op 0.37 MB/s
--- Histogram (unit: ms)
- Count: 200 Min: 5 Max: 136 Avg: 43.85
+ Count: 2000 Min: 1 Max: 55 Avg: 4.84
------------------------------------------------------------
- [ 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
+ [ 1, 2) 16 0.8% 0.8%
+ [ 2, 3) 766 38.3% 39.1% ####
+ [ 3, 4) 670 33.5% 72.6% ###
+ [ 4, 6) 318 15.9% 88.5% ##
+ [ 6, 8) 36 1.8% 90.3%
+ [ 8, 11) 12 0.6% 90.9%
+ [ 11, 15) 26 1.3% 92.2%
+ [ 15, 21) 46 2.3% 94.5%
+ [ 21, 29) 65 3.2% 97.8%
+ [ 29, 39) 34 1.7% 99.5%
+ [ 39, 53) 7 0.4% 99.8%
+ [ 53, 71) 4 0.2% 100.0%
+ [ 71, 95) 0 0.0% 100.0%
+ [ 95, 126) 0 0.0% 100.0%
+ [126, 167) 0 0.0% 100.0%
+ [167, 221) 0 0.0% 100.0%
+ [221, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks___1KB 100 106144273 ns/op 0.02 MB/s
--- Histogram (unit: ms)
- Count: 100 Min: 10 Max: 161 Avg: 97.40
+ Count: 100 Min: 6 Max: 173 Avg: 105.63
------------------------------------------------------------
- [ 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
+ [ 6, 7) 1 1.0% 1.0%
+ [ 7, 8) 0 0.0% 1.0%
+ [ 8, 9) 0 0.0% 1.0%
+ [ 9, 11) 0 0.0% 1.0%
+ [ 11, 14) 1 1.0% 2.0%
+ [ 14, 19) 3 3.0% 5.0%
+ [ 19, 26) 1 1.0% 6.0%
+ [ 26, 36) 4 4.0% 10.0%
+ [ 36, 51) 4 4.0% 14.0%
+ [ 51, 72) 8 8.0% 22.0% #
+ [ 72, 102) 24 24.0% 46.0% ##
+ [102, 144) 26 26.0% 72.0% ###
+ [144, 204) 28 28.0% 100.0% ###
+ [204, 288) 0 0.0% 100.0%
+ [288, 406) 0 0.0% 100.0%
+ [406, 573) 0 0.0% 100.0%
+ [573, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks___1KB-2 1000 7132495 ns/op 0.28 MB/s
--- Histogram (unit: ms)
- Count: 100 Min: 5 Max: 111 Avg: 59.16
+ Count: 1000 Min: 1 Max: 43 Avg: 6.64
------------------------------------------------------------
- [ 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%
+ [ 1, 2) 24 2.4% 2.4%
+ [ 2, 3) 286 28.6% 31.0% ###
+ [ 3, 4) 272 27.2% 58.2% ###
+ [ 4, 6) 217 21.7% 79.9% ##
+ [ 6, 8) 44 4.4% 84.3%
+ [ 8, 11) 15 1.5% 85.8%
+ [ 11, 15) 11 1.1% 86.9%
+ [ 15, 20) 19 1.9% 88.8%
+ [ 20, 27) 14 1.4% 90.2%
+ [ 27, 36) 87 8.7% 98.9% #
+ [ 36, 48) 11 1.1% 100.0%
+ [ 48, 63) 0 0.0% 100.0%
+ [ 63, 82) 0 0.0% 100.0%
+ [ 82, 107) 0 0.0% 100.0%
+ [107, 139) 0 0.0% 100.0%
+ [139, 181) 0 0.0% 100.0%
+ [181, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks__10KB 100 75825411 ns/op 0.03 MB/s
+--- Histogram (unit: ms)
+ Count: 100 Min: 3 Max: 130 Avg: 75.35
+ ------------------------------------------------------------
+ [ 3, 4) 1 1.0% 1.0%
+ [ 4, 5) 0 0.0% 1.0%
+ [ 5, 6) 0 0.0% 1.0%
+ [ 6, 8) 0 0.0% 1.0%
+ [ 8, 11) 0 0.0% 1.0%
+ [ 11, 16) 0 0.0% 1.0%
+ [ 16, 22) 4 4.0% 5.0%
+ [ 22, 31) 0 0.0% 5.0%
+ [ 31, 44) 7 7.0% 12.0% #
+ [ 44, 62) 14 14.0% 26.0% #
+ [ 62, 87) 38 38.0% 64.0% ####
+ [ 87, 121) 29 29.0% 93.0% ###
+ [121, 169) 7 7.0% 100.0% #
+ [169, 235) 0 0.0% 100.0%
+ [235, 326) 0 0.0% 100.0%
+ [326, 452) 0 0.0% 100.0%
+ [452, inf) 0 0.0% 100.0%
+Benchmark___1KB_mux___1K_chunks__10KB-2 200 38383294 ns/op 0.05 MB/s
+--- Histogram (unit: ms)
+ Count: 200 Min: 1 Max: 81 Avg: 37.88
+ ------------------------------------------------------------
+ [ 1, 2) 1 0.5% 0.5%
+ [ 2, 3) 10 5.0% 5.5% #
+ [ 3, 4) 4 2.0% 7.5%
+ [ 4, 6) 3 1.5% 9.0%
+ [ 6, 9) 9 4.5% 13.5%
+ [ 9, 13) 3 1.5% 15.0%
+ [ 13, 18) 12 6.0% 21.0% #
+ [ 18, 25) 7 3.5% 24.5%
+ [ 25, 35) 37 18.5% 43.0% ##
+ [ 35, 48) 46 23.0% 66.0% ##
+ [ 48, 66) 48 24.0% 90.0% ##
+ [ 66, 90) 20 10.0% 100.0% #
+ [ 90, 123) 0 0.0% 100.0%
+ [123, 167) 0 0.0% 100.0%
+ [167, 226) 0 0.0% 100.0%
+ [226, 305) 0 0.0% 100.0%
+ [305, inf) 0 0.0% 100.0%
diff --git a/runtimes/google/ipc/stream/crypto/tls.go b/runtimes/google/ipc/stream/crypto/tls.go
index da35acc..fafa18c 100644
--- a/runtimes/google/ipc/stream/crypto/tls.go
+++ b/runtimes/google/ipc/stream/crypto/tls.go
@@ -166,6 +166,7 @@
}
func (c *tlsCrypter) Decrypt(ciphertext *iobuf.Slice) (*iobuf.Slice, error) {
+ defer ciphertext.Release()
if ciphertext.Size() == 0 {
return ciphertext, nil
}
diff --git a/runtimes/google/ipc/stream/manager/manager.go b/runtimes/google/ipc/stream/manager/manager.go
index f76a522..7b2b05c 100644
--- a/runtimes/google/ipc/stream/manager/manager.go
+++ b/runtimes/google/ipc/stream/manager/manager.go
@@ -138,6 +138,7 @@
if !retry || verror.ErrorID(err) != verror.Aborted {
return vc, err
}
+ vf.Close()
m.vifs.Delete(vf)
vlog.VI(2).Infof("VIF %v is closed, removing from cache", vf)
}
diff --git a/runtimes/google/ipc/stream/proxy/proxy.go b/runtimes/google/ipc/stream/proxy/proxy.go
index a498b4b..2b79f97 100644
--- a/runtimes/google/ipc/stream/proxy/proxy.go
+++ b/runtimes/google/ipc/stream/proxy/proxy.go
@@ -46,15 +46,18 @@
// process encapsulates the physical network connection and the routing table
// associated with the process at the other end of the network connection.
type process struct {
- Conn net.Conn
+ proxy *Proxy
+ conn net.Conn
+ pool *iobuf.Pool
+ reader *iobuf.Reader
isSetup bool
ctrlCipher crypto.ControlCipher
- Queue *upcqueue.T
+ queue *upcqueue.T
mu sync.RWMutex
routingTable map[id.VC]*destination
nextVCI id.VC
servers map[id.VC]*vc.VC // servers wishing to be proxied create a VC that terminates at the proxy
- BQ bqueue.T // Flow control for messages sent on behalf of servers.
+ bq bqueue.T // Flow control for messages sent on behalf of servers.
}
// destination is an entry in the routingtable of a process.
@@ -70,6 +73,7 @@
}
func (s *server) RoutingID() naming.RoutingID { return s.VC.RemoteAddr().RoutingID() }
+
func (s *server) Close(err error) {
if vc := s.Process.RemoveServerVC(s.VC.VCI()); vc != nil {
if err != nil {
@@ -80,6 +84,7 @@
s.Process.SendCloseVC(s.VC.VCI(), err)
}
}
+
func (s *server) String() string {
return fmt.Sprintf("RoutingID %v on process %v (VCI:%v Blessings:%v)", s.RoutingID(), s.Process, s.VC.VCI(), s.VC.RemoteBlessings())
}
@@ -102,6 +107,7 @@
proxyLog().Infof("Started proxying server: %v", server)
return nil
}
+
func (m *servermap) Remove(server *server) {
key := server.RoutingID()
m.mu.Lock()
@@ -111,6 +117,7 @@
}
m.mu.Unlock()
}
+
func (m *servermap) Process(rid naming.RoutingID) *process {
m.mu.Lock()
defer m.mu.Unlock()
@@ -119,6 +126,7 @@
}
return nil
}
+
func (m *servermap) List() []string {
m.mu.Lock()
defer m.mu.Unlock()
@@ -168,220 +176,36 @@
}
func (p *Proxy) acceptProcess(conn net.Conn) {
+ pool := iobuf.NewPool(0)
process := &process{
- Conn: conn,
+ proxy: p,
+ conn: conn,
+ pool: pool,
+ reader: iobuf.NewReader(pool, conn),
ctrlCipher: &crypto.NullControlCipher{},
- Queue: upcqueue.New(),
+ queue: upcqueue.New(),
routingTable: make(map[id.VC]*destination),
servers: make(map[id.VC]*vc.VC),
- BQ: drrqueue.New(vc.MaxPayloadSizeBytes),
+ bq: drrqueue.New(vc.MaxPayloadSizeBytes),
}
- go writeLoop(process)
- go serverVCsLoop(process)
- go p.readLoop(process)
-}
-func writeLoop(process *process) {
- defer processLog().Infof("Exited writeLoop for %v", process)
- defer process.Close()
- for {
- item, err := process.Queue.Get(nil)
- if err != nil {
- if err != upcqueue.ErrQueueIsClosed {
- processLog().Infof("upcqueue.Get failed on %v: %v", process, err)
- }
- return
- }
- if err = message.WriteTo(process.Conn, item.(message.T), process.ctrlCipher); err != nil {
- processLog().Infof("message.WriteTo on %v failed: %v", process, err)
- return
- }
- }
-}
-func serverVCsLoop(process *process) {
- for {
- w, bufs, err := process.BQ.Get(nil)
- if err != nil {
- return
- }
- vci, fid := unpackIDs(w.ID())
- if vc := process.ServerVC(vci); vc != nil {
- queueDataMessages(bufs, vc, fid, process.Queue)
- if len(bufs) == 0 {
- m := &message.Data{VCI: vci, Flow: fid}
- m.SetClose()
- process.Queue.Put(m)
- w.Shutdown(true)
- }
- continue
- }
- releaseBufs(0, bufs)
- }
-}
-func releaseBufs(start int, bufs []*iobuf.Slice) {
- for i := start; i < len(bufs); i++ {
- bufs[i].Release()
- }
-}
-func queueDataMessages(bufs []*iobuf.Slice, vc *vc.VC, fid id.Flow, q *upcqueue.T) {
- for ix, b := range bufs {
- m := &message.Data{VCI: vc.VCI(), Flow: fid}
- var err error
- if m.Payload, err = vc.Encrypt(fid, b); err != nil {
- msgLog().Infof("vc.Encrypt failed. VC:%v Flow:%v Error:%v", vc, fid, err)
- releaseBufs(ix+1, bufs)
- return
- }
- if err = q.Put(m); err != nil {
- msgLog().Infof("Failed to enqueue data message %v: %v", m, err)
- m.Release()
- releaseBufs(ix+1, bufs)
- return
- }
- }
-}
-func (p *Proxy) startProcess(process *process) {
p.mu.Lock()
p.processes[process] = struct{}{}
p.mu.Unlock()
+
+ go process.serverVCsLoop()
+ go process.writeLoop()
+ go process.readLoop()
+
processLog().Infof("Started process %v", process)
}
-func (p *Proxy) stopProcess(process *process) {
- process.Close()
+
+func (p *Proxy) removeProcess(process *process) {
p.mu.Lock()
delete(p.processes, process)
p.mu.Unlock()
- processLog().Infof("Stopped process %v", process)
}
-func (p *Proxy) readLoop(process *process) {
- p.startProcess(process)
- defer p.stopProcess(process)
- reader := iobuf.NewReader(iobuf.NewPool(0), process.Conn)
- defer reader.Close()
- for {
- msg, err := message.ReadFrom(reader, process.ctrlCipher)
- if err != nil {
- processLog().Infof("Read on %v failed: %v", process, err)
- return
- }
- msgLog().Infof("Received msg: %T = %v", msg, msg)
- switch m := msg.(type) {
- case *message.Data:
- if vc := process.ServerVC(m.VCI); vc != nil {
- if err := vc.DispatchPayload(m.Flow, m.Payload); err != nil {
- processLog().Infof("Ignoring data message %v from process %v: %v", m, process, err)
- }
- if m.Close() {
- vc.ShutdownFlow(m.Flow)
- }
- break
- }
- srcVCI := m.VCI
- if d := process.Route(srcVCI); d != nil {
- m.VCI = d.VCI
- if err := d.Process.Queue.Put(m); err != nil {
- process.RemoveRoute(srcVCI)
- process.SendCloseVC(srcVCI, fmt.Errorf("proxy failed to forward data message: %v", err))
- }
- break
- }
- process.SendCloseVC(srcVCI, errNoRoutingTableEntry)
- case *message.OpenFlow:
- if vc := process.ServerVC(m.VCI); vc != nil {
- if err := vc.AcceptFlow(m.Flow); err != nil {
- processLog().Infof("OpenFlow %+v on process %v failed: %v", m, process, err)
- cm := &message.Data{VCI: m.VCI, Flow: m.Flow}
- cm.SetClose()
- process.Queue.Put(cm)
- }
- vc.ReleaseCounters(m.Flow, m.InitialCounters)
- break
- }
- srcVCI := m.VCI
- if d := process.Route(srcVCI); d != nil {
- m.VCI = d.VCI
- if err := d.Process.Queue.Put(m); err != nil {
- process.RemoveRoute(srcVCI)
- process.SendCloseVC(srcVCI, fmt.Errorf("proxy failed to forward open flow message: %v", err))
- }
- break
- }
- process.SendCloseVC(srcVCI, errNoRoutingTableEntry)
- case *message.CloseVC:
- if vc := process.RemoveServerVC(m.VCI); vc != nil {
- vc.Close(m.Error)
- break
- }
- srcVCI := m.VCI
- if d := process.Route(srcVCI); d != nil {
- m.VCI = d.VCI
- d.Process.Queue.Put(m)
- d.Process.RemoveRoute(d.VCI)
- }
- process.RemoveRoute(srcVCI)
- case *message.AddReceiveBuffers:
- p.routeCounters(process, m.Counters)
- case *message.OpenVC:
- dstrid := m.DstEndpoint.RoutingID()
- if naming.Compare(dstrid, p.rid) || naming.Compare(dstrid, naming.NullRoutingID) {
- // VC that terminates at the proxy.
- // See protocol.vdl for details on the protocol between the server and the proxy.
- vcObj := process.NewServerVC(m)
- // route counters after creating the VC so counters to vc are not lost.
- p.routeCounters(process, m.Counters)
- if vcObj != nil {
- server := &server{Process: process, VC: vcObj}
- go p.runServer(server, vcObj.HandshakeAcceptedVC(vc.LocalPrincipal{p.principal}))
- }
- break
- }
- dstprocess := p.servers.Process(dstrid)
- if dstprocess == nil {
- process.SendCloseVC(m.VCI, fmt.Errorf("no server with routing id %v is being proxied", dstrid))
- p.routeCounters(process, m.Counters)
- break
- }
- srcVCI := m.VCI
- dstVCI := dstprocess.AllocVCI()
- startRoutingVC(srcVCI, dstVCI, process, dstprocess)
- // Forward the OpenVC message.
- // Typically, an OpenVC message is accompanied with Counters for the new VC.
- // Keep that in the forwarded message and route the remaining counters separately.
- counters := m.Counters
- m.Counters = message.NewCounters()
- for cid, bytes := range counters {
- if cid.VCI() == srcVCI {
- m.Counters.Add(dstVCI, cid.Flow(), bytes)
- delete(counters, cid)
- }
- }
- m.VCI = dstVCI
- dstprocess.Queue.Put(m)
- p.routeCounters(process, counters)
- case *message.HopSetup:
- // Set up the hop. This takes over the process during negotiation.
- if process.isSetup {
- // Already performed authentication. We don't do it again.
- processLog().Infof("Process %v is already setup", process)
- return
- }
- var blessings security.Blessings
- if p.principal != nil {
- blessings = p.principal.BlessingStore().Default()
- }
- c, err := vif.AuthenticateAsServer(process.Conn, nil, p.principal, blessings, nil, m)
- if err != nil {
- processLog().Infof("Process %v failed to authenticate: %s", process, err)
- return
- }
- process.ctrlCipher = c
- process.isSetup = true
- default:
- processLog().Infof("Closing %v because of unrecognized message %T", process, m)
- return
- }
- }
-}
+
func (p *Proxy) runServer(server *server, c <-chan vc.HandshakeResult) {
hr := <-c
if hr.Error != nil {
@@ -439,6 +263,7 @@
// Wait for this flow to be closed.
<-conn.Closed()
}
+
func (p *Proxy) routeCounters(process *process, counters message.Counters) {
// Since each VC can be routed to a different process, split up the
// Counters into one message per VC.
@@ -453,13 +278,14 @@
if d := process.Route(srcVCI); d != nil {
c := message.NewCounters()
c.Add(d.VCI, cid.Flow(), bytes)
- if err := d.Process.Queue.Put(&message.AddReceiveBuffers{Counters: c}); err != nil {
+ if err := d.Process.queue.Put(&message.AddReceiveBuffers{Counters: c}); err != nil {
process.RemoveRoute(srcVCI)
process.SendCloseVC(srcVCI, fmt.Errorf("proxy failed to forward receive buffers: %v", err))
}
}
}
}
+
func startRoutingVC(srcVCI, dstVCI id.VC, srcProcess, dstProcess *process) {
dstProcess.AddRoute(dstVCI, &destination{VCI: srcVCI, Process: srcProcess})
srcProcess.AddRoute(srcVCI, &destination{VCI: dstVCI, Process: dstProcess})
@@ -477,13 +303,210 @@
func (p *Proxy) Shutdown() {
p.ln.Close()
p.mu.Lock()
- defer p.mu.Unlock()
- for process, _ := range p.processes {
+ processes := p.processes
+ p.processes = nil
+ p.mu.Unlock()
+ for process, _ := range processes {
process.Close()
}
}
+
+func (p *process) serverVCsLoop() {
+ for {
+ w, bufs, err := p.bq.Get(nil)
+ if err != nil {
+ return
+ }
+ vci, fid := unpackIDs(w.ID())
+ if vc := p.ServerVC(vci); vc != nil {
+ queueDataMessages(bufs, vc, fid, p.queue)
+ if len(bufs) == 0 {
+ m := &message.Data{VCI: vci, Flow: fid}
+ m.SetClose()
+ p.queue.Put(m)
+ w.Shutdown(true)
+ }
+ continue
+ }
+ releaseBufs(0, bufs)
+ }
+}
+
+func releaseBufs(start int, bufs []*iobuf.Slice) {
+ for _, buf := range bufs[start:] {
+ buf.Release()
+ }
+}
+
+func queueDataMessages(bufs []*iobuf.Slice, vc *vc.VC, fid id.Flow, q *upcqueue.T) {
+ for ix, b := range bufs {
+ m := &message.Data{VCI: vc.VCI(), Flow: fid}
+ var err error
+ if m.Payload, err = vc.Encrypt(fid, b); err != nil {
+ msgLog().Infof("vc.Encrypt failed. VC:%v Flow:%v Error:%v", vc, fid, err)
+ releaseBufs(ix+1, bufs)
+ return
+ }
+ if err = q.Put(m); err != nil {
+ msgLog().Infof("Failed to enqueue data message %v: %v", m, err)
+ m.Release()
+ releaseBufs(ix+1, bufs)
+ return
+ }
+ }
+}
+
+func (p *process) writeLoop() {
+ defer processLog().Infof("Exited writeLoop for %v", p)
+ defer p.Close()
+
+ for {
+ item, err := p.queue.Get(nil)
+ if err != nil {
+ if err != upcqueue.ErrQueueIsClosed {
+ processLog().Infof("upcqueue.Get failed on %v: %v", p, err)
+ }
+ return
+ }
+ if err = message.WriteTo(p.conn, item.(message.T), p.ctrlCipher); err != nil {
+ processLog().Infof("message.WriteTo on %v failed: %v", p, err)
+ return
+ }
+ }
+}
+
+func (p *process) readLoop() {
+ defer processLog().Infof("Exited readLoop for %v", p)
+ defer p.Close()
+
+ for {
+ msg, err := message.ReadFrom(p.reader, p.ctrlCipher)
+ if err != nil {
+ processLog().Infof("Read on %v failed: %v", p, err)
+ return
+ }
+ msgLog().Infof("Received msg: %T = %v", msg, msg)
+ switch m := msg.(type) {
+ case *message.Data:
+ if vc := p.ServerVC(m.VCI); vc != nil {
+ if err := vc.DispatchPayload(m.Flow, m.Payload); err != nil {
+ processLog().Infof("Ignoring data message %v from process %v: %v", m, p, err)
+ }
+ if m.Close() {
+ vc.ShutdownFlow(m.Flow)
+ }
+ break
+ }
+ srcVCI := m.VCI
+ if d := p.Route(srcVCI); d != nil {
+ m.VCI = d.VCI
+ if err := d.Process.queue.Put(m); err != nil {
+ m.Release()
+ p.RemoveRoute(srcVCI)
+ p.SendCloseVC(srcVCI, fmt.Errorf("proxy failed to forward data message: %v", err))
+ }
+ break
+ }
+ p.SendCloseVC(srcVCI, errNoRoutingTableEntry)
+ case *message.OpenFlow:
+ if vc := p.ServerVC(m.VCI); vc != nil {
+ if err := vc.AcceptFlow(m.Flow); err != nil {
+ processLog().Infof("OpenFlow %+v on process %v failed: %v", m, p, err)
+ cm := &message.Data{VCI: m.VCI, Flow: m.Flow}
+ cm.SetClose()
+ p.queue.Put(cm)
+ }
+ vc.ReleaseCounters(m.Flow, m.InitialCounters)
+ break
+ }
+ srcVCI := m.VCI
+ if d := p.Route(srcVCI); d != nil {
+ m.VCI = d.VCI
+ if err := d.Process.queue.Put(m); err != nil {
+ p.RemoveRoute(srcVCI)
+ p.SendCloseVC(srcVCI, fmt.Errorf("proxy failed to forward open flow message: %v", err))
+ }
+ break
+ }
+ p.SendCloseVC(srcVCI, errNoRoutingTableEntry)
+ case *message.CloseVC:
+ if vc := p.RemoveServerVC(m.VCI); vc != nil {
+ vc.Close(m.Error)
+ break
+ }
+ srcVCI := m.VCI
+ if d := p.Route(srcVCI); d != nil {
+ m.VCI = d.VCI
+ d.Process.queue.Put(m)
+ d.Process.RemoveRoute(d.VCI)
+ }
+ p.RemoveRoute(srcVCI)
+ case *message.AddReceiveBuffers:
+ p.proxy.routeCounters(p, m.Counters)
+ case *message.OpenVC:
+ dstrid := m.DstEndpoint.RoutingID()
+ if naming.Compare(dstrid, p.proxy.rid) || naming.Compare(dstrid, naming.NullRoutingID) {
+ // VC that terminates at the proxy.
+ // See protocol.vdl for details on the protocol between the server and the proxy.
+ vcObj := p.NewServerVC(m)
+ // route counters after creating the VC so counters to vc are not lost.
+ p.proxy.routeCounters(p, m.Counters)
+ if vcObj != nil {
+ server := &server{Process: p, VC: vcObj}
+ go p.proxy.runServer(server, vcObj.HandshakeAcceptedVC(vc.LocalPrincipal{p.proxy.principal}))
+ }
+ break
+ }
+ dstprocess := p.proxy.servers.Process(dstrid)
+ if dstprocess == nil {
+ p.SendCloseVC(m.VCI, fmt.Errorf("no server with routing id %v is being proxied", dstrid))
+ p.proxy.routeCounters(p, m.Counters)
+ break
+ }
+ srcVCI := m.VCI
+ dstVCI := dstprocess.AllocVCI()
+ startRoutingVC(srcVCI, dstVCI, p, dstprocess)
+ // Forward the OpenVC message.
+ // Typically, an OpenVC message is accompanied with Counters for the new VC.
+ // Keep that in the forwarded message and route the remaining counters separately.
+ counters := m.Counters
+ m.Counters = message.NewCounters()
+ for cid, bytes := range counters {
+ if cid.VCI() == srcVCI {
+ m.Counters.Add(dstVCI, cid.Flow(), bytes)
+ delete(counters, cid)
+ }
+ }
+ m.VCI = dstVCI
+ dstprocess.queue.Put(m)
+ p.proxy.routeCounters(p, counters)
+ case *message.HopSetup:
+ // Set up the hop. This takes over the process during negotiation.
+ if p.isSetup {
+ // Already performed authentication. We don't do it again.
+ processLog().Infof("Process %v is already setup", p)
+ return
+ }
+ var blessings security.Blessings
+ if p.proxy.principal != nil {
+ blessings = p.proxy.principal.BlessingStore().Default()
+ }
+ c, err := vif.AuthenticateAsServer(p.conn, p.reader, nil, p.proxy.principal, blessings, nil, m)
+ if err != nil {
+ processLog().Infof("Process %v failed to authenticate: %s", p, err)
+ return
+ }
+ p.ctrlCipher = c
+ p.isSetup = true
+ default:
+ processLog().Infof("Closing %v because of unrecognized message %T", p, m)
+ return
+ }
+ }
+}
+
func (p *process) String() string {
- r := p.Conn.RemoteAddr()
+ r := p.conn.RemoteAddr()
return fmt.Sprintf("(%s, %s)", r.Network(), r)
}
func (p *process) Route(vci id.VC) *destination {
@@ -520,10 +543,15 @@
if err != nil {
estr = err.Error()
}
- p.Queue.Put(&message.CloseVC{VCI: vci, Error: estr})
+ p.queue.Put(&message.CloseVC{VCI: vci, Error: estr})
}
+
func (p *process) Close() {
p.mu.Lock()
+ if p.routingTable == nil {
+ p.mu.Unlock()
+ return
+ }
rt := p.routingTable
p.routingTable = nil
for _, vc := range p.servers {
@@ -533,15 +561,19 @@
for _, d := range rt {
d.Process.SendCloseVC(d.VCI, errProcessVanished)
}
- p.BQ.Close()
- p.Queue.Close()
- p.Conn.Close()
+ p.bq.Close()
+ p.queue.Close()
+ p.conn.Close()
+
+ p.proxy.removeProcess(p)
}
+
func (p *process) ServerVC(vci id.VC) *vc.VC {
p.mu.Lock()
defer p.mu.Unlock()
return p.servers[vci]
}
+
func (p *process) NewServerVC(m *message.OpenVC) *vc.VC {
p.mu.Lock()
defer p.mu.Unlock()
@@ -558,7 +590,7 @@
VCI: m.VCI,
LocalEP: m.DstEndpoint,
RemoteEP: m.SrcEndpoint,
- Pool: iobuf.NewPool(0),
+ Pool: p.pool,
ReserveBytes: message.HeaderSizeBytes,
Helper: p,
Version: version,
@@ -567,6 +599,7 @@
proxyLog().Infof("Registered VC %v from server on process %v", vc, p)
return vc
}
+
func (p *process) RemoveServerVC(vci id.VC) *vc.VC {
p.mu.Lock()
defer p.mu.Unlock()
@@ -581,22 +614,24 @@
// Make process implement vc.Helper
func (p *process) NotifyOfNewFlow(vci id.VC, fid id.Flow, bytes uint) {
msg := &message.OpenFlow{VCI: vci, Flow: fid, InitialCounters: uint32(bytes)}
- if err := p.Queue.Put(msg); err != nil {
+ if err := p.queue.Put(msg); err != nil {
processLog().Infof("Failed to send OpenFlow(%+v) on process %v: %v", msg, p, err)
}
}
+
func (p *process) AddReceiveBuffers(vci id.VC, fid id.Flow, bytes uint) {
if bytes == 0 {
return
}
msg := &message.AddReceiveBuffers{Counters: message.NewCounters()}
msg.Counters.Add(vci, fid, uint32(bytes))
- if err := p.Queue.Put(msg); err != nil {
+ if err := p.queue.Put(msg); err != nil {
processLog().Infof("Failed to send AddReceiveBuffers(%+v) on process %v: %v", msg, p, err)
}
}
+
func (p *process) NewWriter(vci id.VC, fid id.Flow) (bqueue.Writer, error) {
- return p.BQ.NewWriter(packIDs(vci, fid), 0, vc.DefaultBytesBufferedPerFlow)
+ return p.bq.NewWriter(packIDs(vci, fid), 0, vc.DefaultBytesBufferedPerFlow)
}
// Convenience functions to assist with the logging convention.
diff --git a/runtimes/google/ipc/stream/vc/vc.go b/runtimes/google/ipc/stream/vc/vc.go
index d273830..d690fef 100644
--- a/runtimes/google/ipc/stream/vc/vc.go
+++ b/runtimes/google/ipc/stream/vc/vc.go
@@ -101,7 +101,7 @@
LocalEP naming.Endpoint // Endpoint of the local end of the VC.
RemoteEP naming.Endpoint // Endpoint of the remote end of the VC.
Pool *iobuf.Pool // Byte pool used for read and write buffer allocations.
- ReserveBytes uint // Number of bytes to reserve in iobuf.Slices.
+ ReserveBytes uint // Number of padding bytes to reserve for headers.
Helper Helper
Version version.IPCVersion
}
@@ -345,8 +345,8 @@
vc.flowMap = nil
if vc.listener != nil {
vc.listener.Close()
+ vc.listener = nil
}
- vc.listener = nil
vc.closeReason = reason
vc.mu.Unlock()
diff --git a/runtimes/google/ipc/stream/vif/auth.go b/runtimes/google/ipc/stream/vif/auth.go
index db659c2..312c3a6 100644
--- a/runtimes/google/ipc/stream/vif/auth.go
+++ b/runtimes/google/ipc/stream/vif/auth.go
@@ -5,7 +5,6 @@
"errors"
"fmt"
"io"
- "net"
"golang.org/x/crypto/nacl/box"
@@ -61,7 +60,7 @@
// including a hash of the HopSetup message in the encrypted stream. It is
// likely that this will be addressed in subsequent protocol versions (or it may
// not be addressed at all if IPCVersion6 becomes the only supported version).
-func AuthenticateAsClient(ctx *context.T, conn net.Conn, versions *version.Range, principal security.Principal, dc vc.DischargeClient) (crypto.ControlCipher, error) {
+func AuthenticateAsClient(ctx *context.T, writer io.Writer, reader *iobuf.Reader, versions *version.Range, principal security.Principal, dc vc.DischargeClient) (crypto.ControlCipher, error) {
if versions == nil {
versions = version.SupportedRange
}
@@ -82,13 +81,11 @@
if err != nil {
return nil, err
}
- if err := message.WriteTo(conn, &pub, nullCipher); err != nil {
+ if err := message.WriteTo(writer, &pub, nullCipher); err != nil {
return nil, err
}
// Read the server's public data.
- pool := iobuf.NewPool(0)
- reader := iobuf.NewReader(pool, conn)
pmsg, err := message.ReadFrom(reader, nullCipher)
if err != nil {
return nil, err
@@ -111,7 +108,7 @@
// Perform the authentication.
switch v {
case ipcversion.IPCVersion6:
- return authenticateAsClientIPC6(ctx, conn, reader, principal, dc, &pvt, &pub, ppub)
+ return authenticateAsClientIPC6(ctx, writer, reader, principal, dc, &pvt, &pub, ppub)
default:
return nil, errUnsupportedEncryptVersion
}
@@ -137,7 +134,7 @@
// based on the max common version.
//
// See AuthenticateAsClient for a description of the negotiation.
-func AuthenticateAsServer(conn net.Conn, versions *version.Range, principal security.Principal, lBlessings security.Blessings,
+func AuthenticateAsServer(writer io.Writer, reader *iobuf.Reader, versions *version.Range, principal security.Principal, lBlessings security.Blessings,
dc vc.DischargeClient, ppub *message.HopSetup) (crypto.ControlCipher, error) {
var err error
if versions == nil {
@@ -156,7 +153,7 @@
if err != nil {
return nil, err
}
- if err := message.WriteTo(conn, &pub, nullCipher); err != nil {
+ if err := message.WriteTo(writer, &pub, nullCipher); err != nil {
return nil, err
}
@@ -173,22 +170,20 @@
// Perform authentication.
switch v {
case ipcversion.IPCVersion6:
- return authenticateAsServerIPC6(conn, principal, lBlessings, dc, &pvt, &pub, ppub)
+ return authenticateAsServerIPC6(writer, reader, principal, lBlessings, dc, &pvt, &pub, ppub)
default:
return nil, errUnsupportedEncryptVersion
}
}
-func authenticateAsServerIPC6(conn net.Conn, principal security.Principal, lBlessings security.Blessings, dc vc.DischargeClient,
+func authenticateAsServerIPC6(writer io.Writer, reader *iobuf.Reader, principal security.Principal, lBlessings security.Blessings, dc vc.DischargeClient,
pvt *privateData, pub, ppub *message.HopSetup) (crypto.ControlCipher, error) {
box := ppub.NaclBox()
if box == nil {
return nil, errVersionNegotiationFailed
}
c := crypto.NewControlCipherIPC6(&box.PublicKey, &pvt.naclBoxPrivateKey, true)
- pool := iobuf.NewPool(0)
- reader := iobuf.NewReader(pool, conn)
- sconn := newSetupConn(conn, reader, c)
+ sconn := newSetupConn(writer, reader, c)
// TODO(jyh): act upon authentication results.
_, _, err := vc.AuthenticateAsServer(sconn, principal, lBlessings, dc, crypto.NewNullCrypter(), ipcversion.IPCVersion6)
if err != nil {
diff --git a/runtimes/google/ipc/stream/vif/vif.go b/runtimes/google/ipc/stream/vif/vif.go
index 3b51d61..1e5294e 100644
--- a/runtimes/google/ipc/stream/vif/vif.go
+++ b/runtimes/google/ipc/stream/vif/vif.go
@@ -37,8 +37,10 @@
// single physical interface, multiple Virtual Circuits (VCs) can be
// established over a single VIF.
type VIF struct {
+ // All reads must be performed through reader, and not directly through conn.
conn net.Conn
pool *iobuf.Pool
+ reader *iobuf.Reader
localEP naming.Endpoint
// control channel encryption.
@@ -72,6 +74,9 @@
// actually supported by this IPC implementation (which is always
// what you want outside of tests).
versions *version.Range
+
+ isClosedMu sync.Mutex
+ isClosed bool // GUARDED_BY(isClosedMu)
}
// ConnectorAndFlow represents a Flow and the Connector that can be used to
@@ -118,11 +123,13 @@
span.Annotatef("(%v, %v)", conn.RemoteAddr().Network(), conn.RemoteAddr())
defer span.Finish()
}
- c, err := AuthenticateAsClient(ctx, conn, versions, principal, dc)
+ pool := iobuf.NewPool(0)
+ reader := iobuf.NewReader(pool, conn)
+ c, err := AuthenticateAsClient(ctx, conn, reader, versions, principal, dc)
if err != nil {
return nil, err
}
- return internalNew(conn, rid, id.VC(vc.NumReservedVCs), versions, nil, nil, c)
+ return internalNew(conn, pool, reader, rid, id.VC(vc.NumReservedVCs), versions, nil, nil, c)
}
// InternalNewAcceptedVIF creates a new virtual interface over the provided
@@ -136,11 +143,12 @@
// placed inside veyron/runtimes/google. Code outside the
// veyron/runtimes/google/* packages should never call this method.
func InternalNewAcceptedVIF(conn net.Conn, rid naming.RoutingID, versions *version.Range, lopts ...stream.ListenerOpt) (*VIF, error) {
- var nc crypto.NullControlCipher
- return internalNew(conn, rid, id.VC(vc.NumReservedVCs)+1, versions, upcqueue.New(), lopts, &nc)
+ pool := iobuf.NewPool(0)
+ reader := iobuf.NewReader(pool, conn)
+ return internalNew(conn, pool, reader, rid, id.VC(vc.NumReservedVCs)+1, versions, upcqueue.New(), lopts, &crypto.NullControlCipher{})
}
-func internalNew(conn net.Conn, rid naming.RoutingID, initialVCI id.VC, versions *version.Range, acceptor *upcqueue.T, listenerOpts []stream.ListenerOpt, c crypto.ControlCipher) (*VIF, error) {
+func internalNew(conn net.Conn, pool *iobuf.Pool, reader *iobuf.Reader, rid naming.RoutingID, initialVCI id.VC, versions *version.Range, acceptor *upcqueue.T, listenerOpts []stream.ListenerOpt, c crypto.ControlCipher) (*VIF, error) {
// Some cloud providers (like Google Compute Engine) seem to blackhole
// inactive TCP connections, set a TCP keep alive to prevent that.
// See: https://developers.google.com/compute/docs/troubleshooting#communicatewithinternet
@@ -187,7 +195,8 @@
}
vif := &VIF{
conn: conn,
- pool: iobuf.NewPool(0),
+ pool: pool,
+ reader: reader,
ctrlCipher: c,
vcMap: newVCMap(),
acceptor: acceptor,
@@ -238,6 +247,14 @@
// underlying network connection after draining all pending writes on those
// VCs.
func (vif *VIF) Close() {
+ vif.isClosedMu.Lock()
+ if vif.isClosed {
+ vif.isClosedMu.Unlock()
+ return
+ }
+ vif.isClosed = true
+ vif.isClosedMu.Unlock()
+
vlog.VI(1).Infof("Closing VIF %s", vif)
// Stop accepting new VCs.
vif.StopAccepting()
@@ -323,14 +340,12 @@
func (vif *VIF) readLoop() {
defer vif.Close()
- reader := iobuf.NewReader(vif.pool, vif.conn)
- defer reader.Close()
defer vif.stopVCDispatchLoops()
for {
// vif.ctrlCipher is guarded by vif.writeMu. However, the only mutation
// to it is in handleMessage, which runs in the same goroutine, so a
// lock is not required here.
- msg, err := message.ReadFrom(reader, vif.ctrlCipher)
+ msg, err := message.ReadFrom(vif.reader, vif.ctrlCipher)
if err != nil {
vlog.VI(1).Infof("Exiting readLoop of VIF %s because of read error: %v", vif, err)
return
@@ -420,7 +435,7 @@
return errVersionNegotiationFailed
}
vif.writeMu.Lock()
- c, err := AuthenticateAsServer(vif.conn, vif.versions, principal, lBlessings, dischargeClient, m)
+ c, err := AuthenticateAsServer(vif.conn, vif.reader, vif.versions, principal, lBlessings, dischargeClient, m)
if err != nil {
vif.writeMu.Unlock()
return err
@@ -520,7 +535,7 @@
case vif.expressQ:
for _, b := range bufs {
if err := vif.writeSerializedMessage(b.Contents); err != nil {
- vlog.Errorf("Exiting writeLoop of VIF %s because Control message write failed: %s", vif, err)
+ vlog.VI(1).Infof("Exiting writeLoop of VIF %s because Control message write failed: %s", vif, err)
releaseBufs(bufs)
return
}
@@ -792,6 +807,9 @@
}
// Methods and type that implement vc.Helper
+//
+// We create a separate type for vc.Helper to hide the vc.Helper methods
+// from the exported method set of VIF.
type vcHelper struct{ vif *VIF }
func (h vcHelper) NotifyOfNewFlow(vci id.VC, fid id.Flow, bytes uint) {
diff --git a/runtimes/google/ipc/stream/vif/vif_test.go b/runtimes/google/ipc/stream/vif/vif_test.go
index edffeba..0ba3a12 100644
--- a/runtimes/google/ipc/stream/vif/vif_test.go
+++ b/runtimes/google/ipc/stream/vif/vif_test.go
@@ -261,10 +261,12 @@
if n, err := serverFlow.Read(buf); n != 0 || err == nil {
t.Fatal("Got (%d, %v) = %q, want (0, nil)", n, err, buf[:n])
}
+ server.Close()
}
func TestShutdownVCs(t *testing.T) {
client, server := NewClientServer()
+ defer server.Close()
defer client.Close()
testN := func(N int) error {
diff --git a/runtimes/google/lib/iobuf/allocator.go b/runtimes/google/lib/iobuf/allocator.go
index 7c68de1..4483159 100644
--- a/runtimes/google/lib/iobuf/allocator.go
+++ b/runtimes/google/lib/iobuf/allocator.go
@@ -25,8 +25,7 @@
// contiguous iobuf. This can be used to reverse space for a header, for
// example.
func NewAllocator(pool *Pool, reserve uint) *Allocator {
- iobuf := pool.alloc(reserve)
- return &Allocator{pool: pool, reserve: reserve, index: reserve, iobuf: iobuf}
+ return &Allocator{pool: pool, reserve: reserve, index: reserve}
}
// Release releases the allocator.
@@ -34,15 +33,18 @@
if a.iobuf != nil {
a.iobuf.release()
a.iobuf = nil
- a.pool = nil
}
+ a.pool = nil
}
// Alloc allocates a new Slice.
func (a *Allocator) Alloc(bytes uint) *Slice {
if a.iobuf == nil {
- vlog.Info("iobuf.Allocator has already been closed")
- return nil
+ if a.pool == nil {
+ vlog.Info("iobuf.Allocator has already been closed")
+ return nil
+ }
+ a.iobuf = a.pool.alloc(a.reserve + bytes)
}
if uint(len(a.iobuf.Contents))-a.index < bytes {
a.allocIOBUF(bytes)
diff --git a/runtimes/google/lib/iobuf/iobuf.go b/runtimes/google/lib/iobuf/iobuf.go
index 2d55835..918ddba 100644
--- a/runtimes/google/lib/iobuf/iobuf.go
+++ b/runtimes/google/lib/iobuf/iobuf.go
@@ -59,7 +59,14 @@
allocated uint64 // Total number of iobufs allocated.
}
+const defaultMinSize = 1 << 12
+
+// NewPool creates a new pool. The pool will allocate iobufs in multiples of minSize.
+// If minSize is zero, the default value (4K) will be used.
func NewPool(minSize uint) *Pool {
+ if minSize == 0 {
+ minSize = defaultMinSize
+ }
return &Pool{minSize: minSize, freelist: []*buf{}}
}
@@ -72,9 +79,12 @@
// alloc allocates a new iobuf. The returned iobuf has at least <size> bytes of free space.
func (pool *Pool) alloc(size uint) *buf {
- if size < pool.minSize {
+ if size == 0 {
size = pool.minSize
+ } else if r := size % pool.minSize; r > 0 {
+ size += pool.minSize - r
}
+
pool.mutex.Lock()
defer pool.mutex.Unlock()
if pool.freelist == nil {