跳到主要内容

磁盘性能

主要影响性能的因素

  • 存储节点的总磁盘数,磁盘数越多性能越好
  • 存储节点的内存,内存越多可以缓存的内容也就越多
  • 千兆网络一定会成为瓶颈,至少保证万兆网络

集群配置

因为每个集群的存储系统差异非常大,这里的性能测试都是基于某个正在使用的集群,配置如下:

  • 存储节点 4 个
  • 两个存储节点有 22 块硬盘 HDD
  • 两个存储节点有 24 块硬盘 NVME SSD
  • 内网是 100 Gbps 以太网

概念解释

IO 深度(iodepth):一个测试进程的最大「飞行中」请求数(或者说,已经提交但是还没有被处理完毕的请求数)。测试进程不允许在飞行中请求数大于 IO 深度的情况下继续提交请求。

进程数(procs):同时进行测试的进程数。

读写模式(mode):read 表示读,write 表示写,rw 表示读写交替进行。rand 前缀表示随机读写,否则是顺序读写。

块大小(block sizebs):单次 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

数据集性能测试图表