「CEPH」- 性能测试:RADOS 性能测试

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

参考文献

rados bench二三事 – 开发者头条