internal:projects:directkv:write_amp
Write amplification for RocksDB
Write Type: fillseq Input Data Size: 1GB Cache Size: 0MB Written Data: 1669.75 MB fillseq: 321.309 micros/op 3112 ops/sec; 3.1 MB/s Running Time: 6 minutes Write Type: fillsync Input Data Size: 1GB Cache Size: 0MB Written Data: 38724.7 MB fillsync: 604.234 micros/op 1654 ops/sec; 1.6 MB/s (1048 ops) Running Time: 10:56 minutes Write Type: fillrandomsync Input Data Size: 1GB Cache Size: 0MB Written Data: 38995.1 MB fillrandomsync: 608.505 micros/op 1643 ops/sec; 1.6 MB/s Running Time: 11:01 minutes
sudo ./run_benchmark.sh -f -n 1048576 -b fillsync -c 134217728 53.36s user 80.16s system 59% cpu 3:43.15 total fillsync : 190.635 micros/op 5245 ops/sec; 5.2 MB/s (1048 ops) /tmp/kk 1.04785 MB read 7861.96 MB written sudo ./run_benchmark.sh -f -n 1048576 -b fillrandomsync -c 134217728 53.18s user 80.95s system 59% cpu 3:47.07 total fillrandomsync : 190.659 micros/op 5244 ops/sec; 5.2 MB/s /tmp/kk 1.04785 MB read 7860.55 MB written
Write Type: fillseq Input Data Size: 4GB Cache Size: 0MB Written Data: 5367.59 fillseq : 1918.276 micros/op 521 ops/sec; 0.5 MB/s Running Time: 2:14:27 Write Type: fillsync Input Data Size: 4GB Cache Size: 0MB Written Data: 161780 MB fillsync : 647.437 micros/op 1544 ops/sec; 1.5 MB/s (4194 ops) Running Time: 45:44 minutes Write Type: fillrandomsync Input Data Size: 4GB Cache Size: 0MB Written Data: 161892 MB fillrandomsync : 646.120 micros/op 1547 ops/sec; 1.5 MB/s Running Time: 45:36 minutes
sudo ./run_benchmark.sh -f -n 4194304 -b fillseq -c 536870912 41.14s user 14.95s system 89% cpu 1:02.98 totaltotal fillseq : 7.497 micros/op 133391 ops/sec; 132.3 MB/s /tmp/kk 1.04004 MB read 5898.29 MB written sudo ./run_benchmark.sh -f -n 4194304 -b fillsync -c 536870912 247.12s user 333.16s system 68% cpu 14:10.15 total fillsync : 197.111 micros/op 5073 ops/sec; 5.0 MB/s (4194 ops) /tmp/kk 1.04785 MB read 31754.1 MB written sudo ./run_benchmark.sh -f -n 4194304 -b fillrandomsync -c 536870912 245.78s user 333.24s system 67% cpu 14:23.00 total fillrandomsync : 196.207 micros/op 5096 ops/sec; 5.1 MB/s /tmp/kk 1.04785 MB read 31749.1 MB written
Write amplification for nvmkv
The following values were obtained using iostat while running a workload defined by the string “kv_open:kv_put:kv_get:kv_close”. I tried running the puts separated from the gets but it failes b/c the keys that are putted are generated randomly and then are not found by get. There is an options to generate the keys sequentially avoiding the problem, but when enabled, this causes the put to failed returning a NVM_ERR_OBJECT_EXISTS error.
nvmkv-1.0.0.12_kv_open:kv_put:kv_get:kv_close_d1024mb_c0mb_t1_iostat 1523.58 MB read 1536.01 MB written nvmkv-1.0.0.12-cache_kv_open:kv_put:kv_get:kv_close_d1024mb_c128mb_t1_iostat 1526.69 MB read 1536.01 MB written nvmkv-1.0.0.12-cache_kv_open:kv_put:kv_get:kv_close_d4096mb_c512mb_t1_iostat 6135.87 MB read 6143.98 MB written nvmkv-1.0.0.12-cache_kv_open:kv_put:kv_get:kv_close_d16384mb_c2048mb_t1_iostat 24574.6 MB read 24575.9 MB written
Performance for nvmkv
nvmkv-1.0.0.12-cache_kv_open:kv_put:kv_get:kv_close_d1024mb_c0mb_t1 KV PUT - time delta = 65873928, Avg latency = 62, IOPS = 15918 KV PUT Data throughput 15.54MB/s Using a 1-thread-pool to test kv_get KV GET - time delta = 114618446, Avg latency = 109, IOPS = 9148 KV GET Data throughput 89.34MB/s nvmkv-1.0.0.12-cache_kv_open:kv_put:kv_get:kv_close_d4096mb_c0mb_t1 KV PUT - time delta = 262166962, Avg latency = 62, IOPS = 15999 KV PUT Data throughput 0.00MB/s Using a 1-thread-pool to test kv_get KV GET - time delta = 457883503, Avg latency = 109, IOPS = 9160 KV GET Data throughput 0.00MB/s nvmkv-1.0.0.12-cache_kv_open:kv_put:kv_get:kv_close_d16384mb_c0mb_t1 KV PUT - time delta = 1077625943, Avg latency = 64, IOPS = 15569 KV PUT Data throughput 0.00MB/s Using a 1-thread-pool to test kv_get KV GET - time delta = 1834484677, Avg latency = 109, IOPS = 9145 KV GET Data throughput 0.00MB/s
nvmkv-1.0.0.12-cache_kv_open:kv_put:kv_get:kv_close_d1024mb_c128mb_t1 KV PUT - time delta = 76605511, Avg latency = 73, IOPS = 13688 KV PUT Data throughput 13.37MB/s Using a 1-thread-pool to test kv_get KV GET - time delta = 125195104, Avg latency = 119, IOPS = 8376 KV GET Data throughput 81.79MB/s nvmkv-1.0.0.12-cache_kv_open:kv_put:kv_get:kv_close_d4096mb_c512mb_t1 KV PUT - time delta = 308835896, Avg latency = 73, IOPS = 13581 KV PUT Data throughput 0.00MB/s Using a 1-thread-pool to test kv_get KV GET - time delta = 508229441, Avg latency = 121, IOPS = 8253 KV GET Data throughput 0.00MB/s nvmkv-1.0.0.12-cache_kv_open:kv_put:kv_get:kv_close_d16384mb_c2048mb_t1 KV PUT - time delta = 1276636342, Avg latency = 76, IOPS = 13142 KV PUT Data throughput 0.00MB/s Using a 1-thread-pool to test kv_get KV GET - time delta = 2055414591, Avg latency = 122, IOPS = 8162 KV GET Data throughput 0.00MB/s
Write amplification for leveldb 1gb of data
These read amplification numbers make no sense. We should read at least 1GB of data, which is what's being written.
leveldb.git_fillseq_c0mb_d1024mb_xfs_iostat 1.05664 MB read 2707.23 MB written leveldb.git_fillseq_c128mb_d1024mb_xfs_iostat 1.05664 MB read 2682.41 MB written leveldb.git_fillrandom_c0mb_d1024mb_xfs_iostat 1.05664 MB read 34823.3 MB written leveldb.git_fillrandom_c128mb_d1024mb_xfs_iostat 1.05664 MB read 34391.7 MB written leveldb.git_fillrandomsync_c0mb_d1024mb_xfs_iostat 1.06543 MB read 43603.7 MB written leveldb.git_fillrandomsync_c128mb_d1024mb_xfs_iostat 1.08301 MB read 43348.5 MB written leveldb.git_fillsync_c0mb_d1024mb_xfs_iostat 1.05664 MB read 2650.86 MB written leveldb.git_fillsync_c128mb_d1024mb_xfs_iostat 1.02734 MB read 386.876 MB written The following number are not valid leveldb.git_readseq_c0mb_d1024mb_xfs_iostat 1.04004 MB read 2013.05 MB written leveldb.git_readseq_c129mb_d1024mb_xfs_iostat 5.84961 MB read 2706.62 MB written leveldb.git_readrandom_c0mb_d1024mb_xfs_iostat 1.04004 MB read 2013.13 MB written leveldb.git_readrandom_c128mb_d1024mb_xfs_iostat 5.84961 MB read 2706.7 MB written
Performance for leveldb 1gb of data
Notice that the read operations did not find the key-value paris. This may be the reason for the meaningless read amplification numbers.
leveldb.git_fillseq_c0mb_d1024mb_xfs_iostat fillseq : 163.081 micros/op; 6.1 MB/s leveldb.git_fillseq_c128mb_d1024mb_xfs_iostat fillseq : 163.393 micros/op; 6.1 MB/s leveldb.git_fillrandom_c0mb_d1024mb_xfs fillrandom : 547.799 micros/op; 1.8 MB/s leveldb.git_fillrandom_c128mb_d1024mb_xfs fillrandom : 541.217 micros/op; 1.8 MB/s leveldb.git_fillrandomsync_c0mb_d1024mb_xfs fillrandomsync : 645.497 micros/op; 1.5 MB/s leveldb.git_fillrandomsync_c128mb_d1024mb_xfs fillrandomsync : 650.001 micros/op; 1.5 MB/s leveldb.git_fillsync_c0mb_d1024mb_xfs fillsync : 156.158 micros/op; 6.4 MB/s (1048 ops) leveldb.git_fillsync_c128mb_d1024mb_xfs fillsync : 159.961 micros/op; 6.2 MB/s (1048 ops) leveldb.git_readseq_c0mb_d1024mb_xfs readseq : 9.147 micros/op; 108 MB/s leveldb.git_readseq_c128mb_d1024mb_xfs readseq : 1.875 micros/op; 529 MB/s leveldb.git_readrandom_c0mb_d1024mb_xfs readrandom : 31.619 micros/op; (1048576 of 1048576 found) leveldb.git_readrandom_c128mb_d1024mb_xfs readrandom : 8.423 micros/op; (1048576 of 1048576 found)
Write amplification for leveldb 4gb of data
leveldb.git_fillrandom_c0mb_d4096mb_xfs_iostat 1.05664 MB read 141366 MB written leveldb.git_fillrandom_c536870912mb_d4096mb_xfs_iostat 1.04785 MB read 6772.15 MB written leveldb.git_fillrandomsync_c0mb_d4096mb_xfs_iostat 1.07422 MB read 179847 MB written leveldb.git_fillrandomsync_c536870912mb_d4096mb_xfs_iostat 1.06543 MB read 30967.6 MB written leveldb.git_fillseq_c0mb_d4096mb_xfs_iostat 1.05664 MB read 9644.59 MB written leveldb.git_fillseq_c536870912mb_d4096mb_xfs_iostat 1.04004 MB read 6891.19 MB written leveldb.git_fillsync_c0mb_d4096mb_xfs_iostat 1.06734 MB read 95611.8 MB written leveldb.git_fillsync_c536870912mb_d4096mb_xfs_iostat 1.02734 MB read 386.876 MB written The following numbers are not valid leveldb.git_readrandom_c0mb_d4096mb_xfs_iostat 1.04004 MB read 6891.3 MB written leveldb.git_readrandom_c536870912mb_d4096mb_xfs_iostat 1.04004 MB read 6891.34 MB written leveldb.git_readseq_c0mb_d4096mb_xfs_iostat 1.04004 MB read 6891.2 MB written leveldb.git_readseq_c536870912mb_d4096mb_xfs_iostat 1.04004 MB read 6891.24 MB written
Performance leveldb 4gb of data
leveldb.git_fillrandom_c0mb_d4096mb_xfs fillrandom : 561.553 micros/op; 1.8 MB/s leveldb.git_fillrandom_c536870912mb_d4096mb_xfs fillrandom : 9.802 micros/op; 101.2 MB/s leveldb.git_fillrandomsync_c0mb_d4096mb_xfs fillrandomsync : 674.941 micros/op; 1.5 MB/s leveldb.git_fillrandomsync_c536870912mb_d4096mb_xfs fillrandomsync : 146.057 micros/op; 6.8 MB/s leveldb.git_fillseq_c0mb_d4096mb_xfs fillseq : 739.931 micros/op; 1.3 MB/s leveldb.git_fillseq_c536870912mb_d4096mb_xfs fillseq : 6.927 micros/op; 143.2 MB/s leveldb.git_fillsync_c0mb_d4096mb_xfs fillsync : 742.362 micros/op; 1.3 MB/s (4194 ops) leveldb.git_fillsync_c536870912mb_d4096mb_xfs fillsync : 120.186 micros/op; 8.3 MB/s (4194 ops) leveldb.git_readrandom_c0mb_d4096mb_xfs readrandom : 101.547 micros/op; (4194304 of 4194304 found) leveldb.git_readrandom_c536870912mb_d4096mb_xfs readrandom : 16.548 micros/op; (4194304 of 4194304 found) leveldb.git_readseq_c0mb_d4096mb_xfs readseq : 18.836 micros/op; 52.6 MB/s leveldb.git_readseq_c512mb_d4096mb_xfs readseq : 1.831 micros/op; 541.7 MB/s
internal/projects/directkv/write_amp.txt · Last modified: 2024/06/28 20:42 by 127.0.0.1