磁盘性能
主要影响性能的因素
- 存储节点的总磁盘数,磁盘数越多性能越好
- 存储节点的内存,内存越多可以缓存的内容也就越多
- 千兆网络一定会成为瓶颈,至少保证万兆网络
集群配置
因为每个集群的存储系统差异非常大,这里的性能测试都是基于某个正在使用的集群,配置如下:
- 存储节点 4 个
- 两个存储节点有 22 块硬盘 HDD
- 两个存储节点有 24 块硬盘 NVME SSD
- 内网是 100 Gbps 以太网
概念解释
IO 深度(iodepth
):一个测试进程的最大「飞行中」请求数(或者说,已经提交但是还没有被处理完毕的请求数)。测试进程不允许在飞行中请求数大于 IO 深度的情况下继续提交请求。
进程数(procs
):同时进行测试的进程数。
读写模式(mode
):read
表示读,write
表示写,rw
表示读写交替进行。rand
前缀表示随机读写,否则是顺序读写。
块大小(block size
、bs
):单次 IO 请求的数据块的大小。4k
的情况出现在读写配置文件,读写细碎的小文件时会出现。4M
的情况会在读写大型压缩包,视频文件等等情况出现。
IOPS: IO per second,每秒钟处理的请求数。
吞吐:每秒钟取/写入的数据量
临时存储空间性能测试命令
fio --name=disktest \
--ioengine=libaio \
--iodepth=$IODEPTH \
--numjobs=$PROCS \
--rw=$MODE \
--bs=$BLOCK_SIZE \
--direct=1 --buffered=0 \
--size=2G \
--runtime=30 \
--time_based \
--group_reporting \
--output-format=json
临时存储空间性能测试图表
数据集性能测试命令
fio --name=disktest \
--ioengine=libaio \
--iodepth=$IODEPTH \
--numjobs=$PROCS \
--rw=$MODE \
--bs=$BLOCK_SIZE \
--direct=1 --buffered=0 \
--filename=/input0/train.zip \ # 一个 14G 的文件
--runtime=30 \
--time_based \
--group_reporting \
--output-format=json