rados bench
命令行参数:
bench <seconds> write|seq|rand [-t concurrent_operations] [--no-cleanup] [--run-name run_name] [--no-hints] [--reuse-bench]
default is 16 concurrent IOs and 4 MB ops
default is to clean up after write benchmark
default run-name is 'benchmark_last_metadata'
// 需要先运行 write 测试,以写入数据,用于后面的读取测试;
// seq and rand are read benchmarks, either sequential or random.
// 但是,我们没有找到该 write 属于 rand 还是 seq 模式;
通过 rados bench 命令:
# rados bench 60 write -p benchmark-rados-bench --no-cleanup -t 32 -block_size 4K
hints = 1
Maintaining 32 concurrent writes of 1048576 bytes to objects of size 1048576 for up to 60 seconds or 0 objects
Object prefix: benchmark_data_laptop-asus-k53sd_4090139
sec Cur ops started finished avg MB/s cur MB/s last lat(s) avg lat(s)
...
48 32 1581 1549 32.2665 42 0.851067 0.979014
49 32 1608 1576 32.1589 27 0.863697 0.980051
50 32 1652 1620 32.3956 44 0.556496 0.983059
51 32 1686 1654 32.427 34 0.432927 0.980162
52 32 1707 1675 32.2072 21 1.12784 0.979656
53 32 1744 1712 32.2975 37 0.96849 0.984544
...
sec Cur ops started finished avg MB/s cur MB/s last lat(s) avg lat(s)
60 32 1988 1956 32.5954 32 1.02473 0.976075
Total time run: 60.6794
Total writes made: 1988
Write size: 1048576
Object size: 1048576
Bandwidth (MB/sec): 32.7623
Stddev Bandwidth: 10.2822
Max bandwidth (MB/sec): 52
Min bandwidth (MB/sec): 0
Average IOPS: 32
Stddev IOPS: 10.2822
Max IOPS: 52
Min IOPS: 0
Average Latency(s): 0.972106
Stddev Latency(s): 0.427355
Max latency(s): 3.40564
Min latency(s): 0.02613
// -------------------------------------------------------- // 针对刚才写入数据,顺序读取测试(Seq. R)
# rados bench -p benchmark-rados-bench 60 seq -t 32
hints = 1
sec Cur ops started finished avg MB/s cur MB/s last lat(s) avg lat(s)
0 0 0 0 0 0 - 0
1 32 217 185 184.949 185 0.253322 0.15118
2 32 406 374 186.953 189 0.454107 0.15539
3 32 604 572 190.625 198 0.073045 0.16255
4 32 780 748 186.962 176 0.0393228 0.165087
5 32 928 896 179.167 148 0.0247802 0.169356
6 32 1086 1054 175.636 158 0.0269572 0.176997
7 32 1258 1226 175.113 172 0.0232565 0.17913
8 32 1413 1381 172.594 155 0.0316313 0.180196
9 32 1563 1531 170.082 150 0.0293289 0.184506
10 32 1765 1733 173.271 202 0.121964 0.179903
Total time run: 10.8224
Total reads made: 1988
Read size: 1048576
Object size: 1048576
Bandwidth (MB/sec): 183.693
Average IOPS: 183
Stddev IOPS: 19.9391
Max IOPS: 202
Min IOPS: 148
Average Latency(s): 0.17253
Max latency(s): 0.816741
Min latency(s): 0.0125693
// -------------------------------------------------------- // 针对刚才写入数据,随机读取测试(Rnd. R)
# rados bench -p benchmark-rados-bench 60 rand -t 32
hints = 1
sec Cur ops started finished avg MB/s cur MB/s last lat(s) avg lat(s)
0 0 0 0 0 0 - 0
1 32 255 223 222.948 223 0.0296851 0.128705
2 32 444 412 205.964 189 0.0342931 0.132819
3 32 662 630 209.968 218 0.0595981 0.147189
4 32 894 862 215.47 232 0.0284013 0.143189
5 32 1125 1093 218.571 231 0.0383546 0.143222
6 32 1378 1346 224.303 253 0.0189111 0.139522
7 32 1650 1618 231.112 272 0.0258337 0.135715
...
Total time run: 60.1821
Total reads made: 16498
Read size: 1048576
Object size: 1048576
Bandwidth (MB/sec): 274.135
Average IOPS: 274
Stddev IOPS: 53.8228
Max IOPS: 424
Min IOPS: 185
Average Latency(s): 0.116254
Max latency(s): 1.45039
Min latency(s): 0.00138064
rados load-gen
通过 rados load-gen 命令,测试块存储性能:
# rados load-gen -p benchmark-rados-bench --num-objects 50 \
--min-object-size 4M --max-object-size 4M --max-ops 16 \
--min-op-len 4M --max-op-len 4M --percent 5 --target-throughput 2000 --run-length 60
// --num-objects:对象总数;
// --min-object-size:对象最小字节数;
// --min-ops:操作最小数;
// --min-op-len:操作的最小 IO 大小;
// --percent:Read 操作的百分比;
// --target-throughput:目标吞吐量(以字节为单位)
// --run-length:总时间(以秒为单位);
fio
WIP IO Engine = rados
参考文献