clusterperf output as measured on September 29, 2014 (rc1-rc20)
Recent changes that may have affected performance:
- Cache prefetching improved latency for small RPCs
- Multi-op scheduler rewritten: better throughput with multiple servers
- InfRc optimized to retrieve multiple completions at once and use zeroCopy for results as well as requests
- Use random reads in most clusterperf tests now (e.g., "basic" used to read a single object, now it randomizes)
basic.read100 4.8 us read random 100B object (30B key) median basic.read100.min 4.4 us read random 100B object (30B key) minimum basic.read100.9 5.7 us read random 100B object (30B key) 90% basic.read100.99 7.1 us read random 100B object (30B key) 99% basic.read100.999 69.3 us read random 100B object (30B key) 99.9% basic.readBw100 18.6 MB/s bandwidth reading 100B objects (30B key) basic.read1K 7.0 us read random 1KB object (30B key) median basic.read1K.min 6.1 us read random 1KB object (30B key) minimum basic.read1K.9 8.0 us read random 1KB object (30B key) 90% basic.read1K.99 9.0 us read random 1KB object (30B key) 99% basic.read1K.999 12.6 us read random 1KB object (30B key) 99.9% basic.readBw1K 130.1 MB/s bandwidth reading 1KB objects (30B key) basic.read10K 10.3 us read random 10KB object (30B key) median basic.read10K.min 9.0 us read random 10KB object (30B key) minimum basic.read10K.9 11.2 us read random 10KB object (30B key) 90% basic.read10K.99 12.6 us read random 10KB object (30B key) 99% basic.read10K.999 74.6 us read random 10KB object (30B key) 99.9% basic.readBw10K 904.3 MB/s bandwidth reading 10KB objects (30B key) basic.read100K 42.9 us read random 100KB object (30B key) median basic.read100K.min 36.5 us read random 100KB object (30B key) minimum basic.read100K.9 44.2 us read random 100KB object (30B key) 90% basic.read100K.99 74.5 us read random 100KB object (30B key) 99% basic.read100K.999 124.1 us read random 100KB object (30B key) 99.9% basic.readBw100K 2.1 GB/s bandwidth reading 100KB objects (30B key) basic.read1M 357.6 us read random 1MB object (30B key) median basic.read1M.min 308.1 us read random 1MB object (30B key) minimum basic.read1M.9 363.9 us read random 1MB object (30B key) 90% basic.read1M.99 407.1 us read random 1MB object (30B key) 99% basic.read1M.999 436.9 us read random 1MB object (30B key) 99.9% basic.readBw1M 2.6 GB/s bandwidth reading 1MB objects (30B key) basic.write100 15.3 us write random 100B object (30B key) median basic.write100.min 13.7 us write random 100B object (30B key) minimum basic.write100.9 16.5 us write random 100B object (30B key) 90% basic.write100.99 76.5 us write random 100B object (30B key) 99% basic.write100.999 152.6 us write random 100B object (30B key) 99.9% basic.writeBw100 5.7 MB/s bandwidth writing 100B objects (30B key) basic.write1K 19.5 us write random 1KB object (30B key) median basic.write1K.min 17.8 us write random 1KB object (30B key) minimum basic.write1K.9 20.8 us write random 1KB object (30B key) 90% basic.write1K.99 111.8 us write random 1KB object (30B key) 99% basic.write1K.999 176.1 us write random 1KB object (30B key) 99.9% basic.writeBw1K 43.6 MB/s bandwidth writing 1KB objects (30B key) basic.write10K 35.3 us write random 10KB object (30B key) median basic.write10K.min 32.6 us write random 10KB object (30B key) minimum basic.write10K.9 37.6 us write random 10KB object (30B key) 90% basic.write10K.99 200.6 us write random 10KB object (30B key) 99% basic.write10K.999 265.6 us write random 10KB object (30B key) 99.9% basic.writeBw10K 237.6 MB/s bandwidth writing 10KB objects (30B key) basic.write100K 227.5 us write random 100KB object (30B key) median basic.write100K.min 209.3 us write random 100KB object (30B key) minimum basic.write100K.9 292.3 us write random 100KB object (30B key) 90% basic.write100K.99 415.3 us write random 100KB object (30B key) 99% basic.write100K.999 488.0 us write random 100KB object (30B key) 99.9% basic.writeBw100K 392.5 MB/s bandwidth writing 100KB objects (30B key) basic.write1M 2.2 ms write random 1MB object (30B key) median basic.write1M.min 2.1 ms write random 1MB object (30B key) minimum basic.write1M.9 2.3 ms write random 1MB object (30B key) 90% basic.write1M.99 2.5 ms write random 1MB object (30B key) 99% basic.write1M.999 2.6 ms write random 1MB object (30B key) 99.9% basic.writeBw1M 430.0 MB/s bandwidth writing 1MB objects (30B key) # RAMCloud multiRead performance for 100 B objects with 30 byte keys # located on a single master. # Generated by 'clusterperf.py multiRead_oneMaster' # # Num Objs Num Masters Objs/Master Latency (us) Latency/Obj (us) #---------------------------------------------------------------------------- 1 1 1 5.4 5.39 2 1 2 6.9 3.47 3 1 3 8.2 2.72 4 1 4 8.6 2.15 5 1 5 9.5 1.89 6 1 6 10.8 1.80 7 1 7 11.7 1.67 8 1 8 11.7 1.46 9 1 9 12.5 1.39 10 1 10 13.3 1.33 20 1 20 19.6 0.98 30 1 30 25.6 0.85 40 1 40 31.7 0.79 50 1 50 36.7 0.73 60 1 60 42.8 0.71 70 1 70 51.7 0.74 80 1 80 53.2 0.67 90 1 90 53.6 0.60 100 1 100 54.6 0.55 200 1 200 84.0 0.42 300 1 300 93.8 0.31 400 1 400 107.4 0.27 500 1 500 134.1 0.27 600 1 600 144.9 0.24 700 1 700 159.8 0.23 800 1 800 177.0 0.22 900 1 900 214.4 0.24 1000 1 1000 214.6 0.21 2000 1 2000 431.0 0.22 3000 1 3000 646.2 0.22 4000 1 4000 885.3 0.22 5000 1 5000 1107.7 0.22 # RAMCloud multiRead performance for 100 B objects with 30 byte keys # with one object located on each master. # Generated by 'clusterperf.py multiRead_oneObjectPerMaster' # # Num Objs Num Masters Objs/Master Latency (us) Latency/Obj (us) #---------------------------------------------------------------------------- 1 1 1 5.4 5.41 2 2 1 6.7 3.33 3 3 1 7.7 2.55 4 4 1 9.0 2.26 5 5 1 10.2 2.05 6 6 1 12.1 2.02 7 7 1 16.3 2.34 8 8 1 13.8 1.73 9 9 1 15.4 1.71 10 10 1 17.0 1.70 11 11 1 20.0 1.81 12 12 1 24.9 2.07 13 13 1 33.0 2.53 14 14 1 33.0 2.35 15 15 1 27.5 1.84 16 16 1 28.3 1.77 17 17 1 41.4 2.44 18 18 1 41.8 2.32 19 19 1 38.9 2.05 20 20 1 42.0 2.10 # RAMCloud multi-read throughput of a single server with a # varying number of clients issuing 70-object multi-reads on # randomly-chosen 100-byte objects with 30-byte keys # Generated by 'clusterperf.py multiReadThroughput' # # numClients throughput worker utiliz. # (kreads/sec) #------------------------------------------- 1 1429 0.419 2 2613 0.945 3 3324 1.497 4 4149 2.001 5 4851 2.460 6 5023 2.710 7 6197 2.940 8 6321 2.958 9 6696 2.949 10 6273 2.955 11 6340 2.964 12 6721 2.948 13 6361 2.964 14 6208 2.943 15 6449 2.937 # RAMCloud multiWrite performance for 100 B objects with 30 byte keys # located on a single master. # Generated by 'clusterperf.py multiWrite_oneMaster' # # Num Objs Num Masters Objs/Master Latency (us) Latency/Obj (us) #---------------------------------------------------------------------------- 1 1 1 16.8 16.78 2 1 2 19.2 9.59 3 1 3 21.0 7.01 4 1 4 22.8 5.70 5 1 5 24.7 4.94 6 1 6 26.1 4.36 7 1 7 27.6 3.94 8 1 8 29.9 3.74 9 1 9 31.6 3.51 10 1 10 32.0 3.20 20 1 20 47.2 2.36 30 1 30 63.0 2.10 40 1 40 81.0 2.02 50 1 50 96.8 1.94 60 1 60 225.3 3.75 70 1 70 133.1 1.90 80 1 80 137.4 1.72 90 1 90 137.0 1.52 100 1 100 139.4 1.39 200 1 200 2965.0 14.83 300 1 300 1159.6 3.87 400 1 400 390.7 0.98 500 1 500 2790.9 5.58 600 1 600 562.0 0.94 700 1 700 5459.0 7.80 800 1 800 728.6 0.91 900 1 900 10932.4 12.15 1000 1 1000 948.8 0.95 2000 1 2000 17275.3 8.64 3000 1 3000 6348.1 2.12 4000 1 4000 9894.5 2.47 5000 1 5000 11550.5 2.31 # Cumulative distribution of time for a single client to read a # random 100-byte object from a single server. Each line indicates # that a given fraction of all reads took at most a given time # to complete. # Generated by 'clusterperf.py readDist' # # Time (usec) Cum. Fraction #--------------------------- 0.00 0.000 4.36 0.000 4.49 0.010 4.51 0.020 4.52 0.030 4.53 0.040 4.54 0.050 4.54 0.060 4.55 0.070 4.55 0.080 4.56 0.090 4.56 0.100 4.56 0.110 4.57 0.120 4.57 0.130 4.57 0.140 4.57 0.150 4.58 0.160 4.58 0.170 4.58 0.180 4.58 0.190 4.59 0.200 4.59 0.210 4.59 0.220 4.59 0.230 4.60 0.240 4.60 0.250 4.60 0.260 4.60 0.270 4.60 0.280 4.61 0.290 4.61 0.300 4.61 0.310 4.61 0.320 4.62 0.330 4.62 0.340 4.62 0.350 4.62 0.360 4.63 0.370 4.63 0.380 4.63 0.390 4.64 0.400 4.64 0.410 4.64 0.420 4.64 0.430 4.65 0.440 4.65 0.450 4.65 0.460 4.65 0.470 4.65 0.480 4.66 0.490 4.66 0.500 4.66 0.510 4.67 0.520 4.67 0.530 4.67 0.540 4.68 0.550 4.68 0.560 4.68 0.570 4.69 0.580 4.69 0.590 4.69 0.600 4.70 0.610 4.70 0.620 4.71 0.630 4.71 0.640 4.72 0.650 4.72 0.660 4.73 0.670 4.73 0.680 4.74 0.690 4.75 0.700 4.75 0.710 4.76 0.720 4.77 0.730 4.78 0.740 4.79 0.750 4.80 0.760 4.82 0.770 4.84 0.780 4.87 0.790 4.91 0.800 5.04 0.810 5.19 0.820 5.23 0.830 5.25 0.840 5.27 0.850 5.29 0.860 5.31 0.870 5.34 0.880 5.36 0.890 5.40 0.900 5.46 0.910 5.62 0.920 5.77 0.930 5.83 0.940 5.89 0.950 5.96 0.960 6.07 0.970 6.26 0.980 6.91 0.990 9.39 0.999 24.19 0.9999 101.99 1.000 # RAMCloud read throughput of a single server with a varying # number of clients issuing individual reads on randomly # chosen 100-byte objects with 30-byte keys # Generated by 'clusterperf.py readThroughput' # # numClients throughput worker utiliz. # (kreads/sec) #------------------------------------------- 1 201 0.150 2 382 0.300 3 552 0.455 4 683 0.568 5 726 0.603 6 796 0.664 7 815 0.686 8 872 0.741 9 828 0.705 10 830 0.705 11 841 0.710 12 894 0.757 13 835 0.707 14 835 0.707 15 937 0.793 # RAMCloud read performance for 100 B objects # with keys of various lengths. # Generated by 'clusterperf.py readVaryingKeyLength' # # Key Length Latency (us) Bandwidth (MB/s) #---------------------------------------------------------------------------- 1 4.4 22.0 5 4.4 22.8 10 4.4 23.8 15 4.4 24.8 20 4.4 25.9 25 4.4 26.8 30 4.4 28.3 35 4.5 28.4 40 4.5 29.4 45 4.5 30.4 50 4.5 31.5 55 4.6 32.4 60 4.6 33.5 65 4.6 34.4 70 4.6 35.4 75 4.6 36.2 80 4.6 37.2 85 4.6 38.0 90 4.6 39.0 95 4.7 39.8 100 4.7 40.8 200 5.4 53.1 300 5.6 68.2 400 6.0 79.4 500 6.2 92.5 600 6.3 106.2 700 6.4 118.9 800 6.6 130.6 900 6.7 142.7 1000 6.8 153.5 2000 7.5 266.9 3000 8.2 362.4 4000 8.8 444.5 5000 9.6 507.8 6000 10.2 569.5 7000 10.9 623.9 8000 12.0 646.1 9000 12.3 702.9 10000 13.1 736.0 20000 21.4 897.3 30000 29.3 978.2 40000 39.7 964.0 50000 47.9 998.5 60000 55.8 1026.8 # RAMCloud write performance for 100 B objects # with keys of various lengths. # Generated by 'clusterperf.py writeVaryingKeyLength' # # Key Length Latency (us) Bandwidth (MB/s) #---------------------------------------------------------------------------- 1 14.2 6.8 5 14.5 6.9 10 14.3 7.4 15 14.2 7.7 20 14.3 8.0 25 14.3 8.3 30 14.3 8.7 35 14.5 8.9 40 14.6 9.2 45 14.4 9.6 50 14.5 9.9 55 14.9 9.9 60 14.5 10.5 65 14.6 10.8 70 14.5 11.2 75 14.6 11.4 80 14.6 11.7 85 15.2 11.6 90 15.4 11.8 95 15.5 12.0 100 15.5 12.3 200 16.1 17.8 300 16.9 22.5 400 17.5 27.3 500 18.0 31.8 600 18.4 36.2 700 18.9 40.3 800 20.1 42.6 900 21.1 45.2 1000 21.6 48.6 2000 25.2 79.5 3000 28.8 102.5 4000 32.6 119.8 5000 36.4 133.5 6000 39.8 146.3 7000 44.4 152.5 8000 47.9 161.1 9000 52.4 165.6 10000 56.6 170.2 20000 101.5 188.9 30000 145.0 198.0 40000 190.5 200.8 50000 236.8 201.7 60000 283.1 202.5