Ceph测试系列(二):ceph性能测试ceph自带工具(1 of 4)

转载:Ceph自带性能测试工具和方法

摘要:

Ceph自带测试工具(参考:Benchmark Ceph Cluster Performance)

内容:

集群基准性能测试

1. rados bench 测试带宽和延时

命令行格式:

rados bench  write|seq|rand [-t concurrent_operations] [--no-cleanup] [--run-name run_name] [--no-hints]
                                    default is 16 concurrent IOs and 4 MB ops
                                    default is to clean up after write benchmark
                                    default run-name is 'benchmark_last_metadata'

常用格式:rados bench -p [pool_name] seconds mode [ -b objsize ] [ -t threads ]

参数说明:

-pool_name:测试所针对的存储池

-seconds:测试所持续的秒数

-mode: 可以是 write|seq|rand,seq 和 rand 分别是顺序读、随机读压力测试;

-b:block size,即块大小,默认为 4M;

-t:读/写并行数,默认为 16 ;

--no-cleanup 表示测试完成后不删除测试用数据。 注:-b objsize 仅适用于 write 模式。

例如:

rados bench -p rbd 30 write -b 4M --no-cleanup
rados bench -p rbd 30 seq
rados bench -p rbd 30 rand

root@ceph1:~# rados bench -p rbd 10 write --no-cleanup
 Maintaining 16 concurrent writes of 4194304 bytes for up to 10 seconds or 0 objects
 Object prefix: benchmark_data_ceph1_12884
   sec Cur ops   started  finished  avg MB/s  cur MB/s  last lat   avg lat
     0       0         0         0         0         0         -         0
     1      16        16         0         0         0         -         0
...
    12      15        75        60   19.9671         4   3.05943   2.46556

Total time run:         12.135344
Total writes made:      75
Write size:             4194304
Bandwidth (MB/sec):     24.721

Stddev Bandwidth:       13.5647
Max bandwidth (MB/sec): 36
Min bandwidth (MB/sec): 0

Average Latency:        2.57614
Stddev Latency:         0.781915
Max latency:            4.50816
Min latency:            1.04075
root@ceph1:~# rados bench -p rbd 10 seq
   sec Cur ops   started  finished  avg MB/s  cur MB/s  last lat   avg lat
     0      16        16         0         0         0         -         0
Total time run:        0.601027
Total reads made:     75
Read size:            4194304
Bandwidth (MB/sec):    499.146

Average Latency:       0.123632
Max latency:           0.209325
Min latency:           0.030446

2. rados load-gen 产生混合类型的测试负载

有点类似rados bench, rados load-gen 是CEPH提供的另一个测试工具,  像它的命名一样,rados load-gen 工具能用来在Ceph cluster上生成负载和用于模拟高负载场。

例如,rados -p rbd load-gen --read-percent 0 --min-object-size 4194304 --max-object-size 16777216 --max-ops 1 --read-percent 0 --min-op-len 4194304 --max-op-len 4194304 --target-throughput 67108864 --max_backlog 67108864.

命令行格式及参数说明:

rados -p  load-gen
--num-objects: 生成测试用的对象数,默认 200
--min-object-size: 测试对象的最小size,默认 1KB,单位byte
--max-object-size: 测试对象的最大size,默认 5GB,单位byte
--min-ops: 一次提交的最小IO数,相当于iodepth
--max-ops: 一次提交的最大IO数,相当于iodepth
--min-op-len: 压测IO的最小operation size,默认 1KB,单位byte
--max-op-len: 压测IO的最大operation size,默认 2MB,单位byte
--max-backlog: 一次提交IO的吞吐量上限,默认10MB/s (in MB)
--percent:读操作所占的百分百
--target-throughput: 一次提交IO的历史累计吞吐量上限,默认 5MB/s (in MB)
--run-length: 运行的时间,默认60s,单位秒

在 ceph1上运行

rados -p rbd load-gen --read-percent 0 --min-object-size 1073741824 --max-object-size 1073741824 --max-ops 1 --read-percent 0 --min-op-len 4194304 --max-op-len 4194304 --target-throughput 1073741824 --max_backlog 1073741824

结果为:

WRITE : oid=obj-y0UPAZyRQNhnabq off=929764660 len=4194304
op 19 completed, throughput=16MB/sec
WRITE : oid=obj-nPcOZAc4ebBcnyN off=143211384 len=4194304
op 20 completed, throughput=20MB/sec
WRITE : oid=obj-sWGUAzzASPjCcwF off=343875215 len=4194304
op 21 completed, throughput=24MB/sec
WRITE : oid=obj-79r25fxxSMgVm11 off=383617425 len=4194304
op 22 completed, throughput=28MB/sec

该命令的含义是:在 1G 的对象上,以 iodepth = 1 顺序写入 block size 为 4M 的总量为 1G 的数据,基本和 rados bench 的结果相当。

在 client 上,同样的配置,顺序写的BW大概在 20MB/s,顺序读的 BW 大概在 100 MB/s。

可见,与 rados bench 相比,rados load-gen 的特点是可以产生混合类型的测试负载,而 rados bench 只能产生一种类型的负载。但是 load-gen 只能输出吞吐量,只合适做类似于 4M 这样的大block size 数据测试,输出还不包括延迟。

3. rbd bench-write 进行块设备写性能测试

3.1 执行如下命令来准备Ceph客户端:

$ rbd create image1 --size 1024
$ sudo rbd info --image image1
rbd image 'image1':
        size 1GiB in 256 objects
        order 22 (4MiB objects)
        block_name_prefix: rbd_data.10356b8b4567
        format: 2
        features: layering
        flags:
        create_timestamp: Wed Jun 19 16:05:40 2019

3.2 命令行格式:rbd bench-write ,可以带如下参数:

[–io-size size-in-B/K/M/G/T]:单位 byte,默认 4096 bytes = 4K
[–io-threads num-ios-in-flight]: 线程数,默认 16 
[–io-total total-size-to-write-in-B/K/M/G/T]:总写入字节,单位为字节,默认 1024M
[–io-pattern seq|rand]:写模式,默认为 seq 即顺序写

例如:
rbd bench-write image --pool=pool --io-size size --io-pattern seq
rbd bench-write image --pool=pool --io-size size --io-pattern rand

rbd bench-write image1 --io-total 171997300

rbd bench --io-type write rbdimage --io-total 2G

在客户端上做测试:

$ sudo rbd bench-write image1 --io-total 171997300
rbd: bench-write is deprecated, use rbd bench --io-type write ...
bench  type write io_size 4096 io_threads 16 bytes 171997300 pattern sequential
  SEC       OPS   OPS/SEC   BYTES/SEC
    1     34883  34899.65  142948979.86
elapsed:     1  ops:    41992  ops/sec: 31133.85  bytes/sec: 127524265.89

4. 测试工具小结

工具

用途

语法

说明

rados bench

RADOS 性能测试工具

rados bench -p -b -t --no-cleanup

  • Ceph 自带的 RADOS 性能测试工具

rados load-gen

RADOS 性能测试工具

# rados -p rbd load-gen

--num-objects     #产生的对象数目

--min-object-size #最小对象大小

--max-object-size #最大对象大小

--max-ops         #最大操作数目

--min-op-len      #最小操作长度

--max-op-len      #最大操作长度

--read-percent    #读操作的百分比

--target-throughput #目标吞吐量,单位 MB

--run-length      #运行时长,单位秒

 

  • Ceph 自带的 rados 性能测试工具
  • 可在集群内产生指定类型的负载
  • rados bench 功能丰富,能指定更多的参数

rbd bench-write

ceph 自带的 rbd 性能测试工具

rbd bench-write

  • --io-size:单位 byte,默认 4M
  • --io-threads:线程数,默认 16
  • --io-total:总写入字节,默认 1024M
  • --io-pattern :写模式,默认为 seq 即顺序写
  • 只能对块设备做写测试

 

你可能感兴趣的:(Ceph)