转载:Ceph自带性能测试工具和方法
Ceph自带测试工具(参考:Benchmark Ceph Cluster Performance)
集群基准性能测试
命令行格式:
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
有点类似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.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
工具 |
用途 |
语法 |
说明 |
rados bench |
RADOS 性能测试工具 |
rados bench -p |
|
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 #运行时长,单位秒 |
|
rbd bench-write |
ceph 自带的 rbd 性能测试工具 |
rbd bench-write
|
|