SSD性能测试之“砖”

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

 

作者简介

 
 

唐杰

 

目前在Xilinx从事DC架构,曾任职于Fusion-IOLSI,希捷等公司。

 
 

想要和唐大师还有全世界的大牛讨论SSD及存储相关技术?加nanoarch为微信好友,拉你进ssdfans微信群 

 
 

“砖”的缘起

 

事情的起因是这样的,这个ssdfans群里,冬瓜哥和往常一样在帮助大家回答问题。在回答一个SSD上文件系统mount的参数的问题是,俺不知深浅地插了一句嘴,该打。然后就为了拍瓜哥一个马屁,就说瓜哥应该写一个SSD性能测试的指导,结果瓜哥说自己不是专业人士不能写,俺又不明就里地说俺可以写一个,结果,瓜哥说俺写了,瓜哥就写一个。

 

正好在杭州到上海的高铁上,信号一如往常的烂,于是有了这一片”砖”来引瓜哥的玉了。

 

在谈这个具体内容之前,俺要强调,俺的砖全是脑中所记,因为不方便上网,而且也是砖,就比较散漫,写到哪里算哪里了。

 


 

工具篇:

 

FIO: 目前最常用的性能测试工具,主要是linux下。这个工具是目前我用过的最能生成IO请求的工具。Fio可以用比较小的代价在短时间能生产IO,这个能力的确没有其他工具可以比。因此文中缺省的测试工具就是它了。

 

Vdbench: SUN遗留下来的工具,因为基于Java,他的可移植性比fio好,同时支持压缩和dedup的测试,因此也是企业测试的首选。

 

Iometer:Windows平台为主,因为是gui的,因此脚本化比较难,之前windows比较流行的时候,用的多,现在在数据中心就呵呵了。

 

SQLIOorion都是数据库厂商的工具,主要测试8K的随机I/O和1M的顺序I/O,是DBA的最爱,作为SSD性能狗必须跪舔。

 

Sysbench因为可以测试MySQL,也是新贵的最爱,要知道霸爷到ali的第一个blog就是sysbench.

 

Workload 篇:

 

I/O size: 4K 是主流,8K是MSSQL和Oracle,16K是Mysql Innodb

Queue Depth:这个缺省是32, 因此目前的SSD,特别是SATA的SSD,NCQ是31,因此不能太少。

Numjobs:生成I/O的engine的数量,如果thread=1就是几个线程,否则就是进程,建议线程。Numjobs可以等于CPU的core就行,不算HT。

 

Numjobs和Queue Depth定义了I/O的workload的压力,基本上是 fio numjobs×QD = vdbench的thread。

I/O 引擎: 基本上是libaio,这个是冲IOPS的,对于延时为主的测试,建议psync。

Direct I/O: 这个是本地测试标配,但是要注意网络I/O可能只支持buffer I/O。

 

随机顺序和IO比例方面:

  1. 测试建议先做随机,再做顺序,因为顺序可能有cache的影响。先做写,再做读,因为SSD的特性,写入量大之后会性能下降。
  2. I/O读写比例,数据库基本是7:3, 9:1, 对于网络存储,建议的比例是5:5

 

文件系统篇:

 

  1. Ext2 无视,基本上是ext3和ext4。缺省的格式化流行,如果基于md,要考虑I/O的对齐问题。
  2. Mount的时候,不管XFS,EXT3/4都建议noatime,noadirtime和nobarrier。Discard这东西还是免了,真心不知道trim的用处。
  3. 其他的,在测试文件系统的时候,要注意在写入的时候会有锁的问题,因此建议使用nrfiles来生成多个文件。

 

操作系统篇:

 

  1. 对于基于SATA的SSD,对于block层的修改是必须的,必须参考之前LSI nytro的推荐,基本上是:
    1. 增大queue的深度
    2. Disable 预读
    3. Disable 和随机发生器的关系
    4. 还有就是IO affinity, 建议使用的配置是使用生成I/O请求的CPU来响应I/O,降低context 切换的影响。
  2. 比较懒的可以用RHEL的tuned-adm来设置。
  3. 这里还有一个就是操作系统的I/O监控:
    1. Iostat –dmx /dev/sda 1 这个是必须的命令
    2. Mpstat –P ALL 1, 看CPU的使用情况,如果都在softirp,说明你I/O生成有问题,使用numactl来控制。如果都在iowait,说明你的I/O设备的确不行。如果都在sys,说明跑的很正常。不可能都在user,因为fio的I/O请求的数据直接就丢掉了,不可能有usr。
    3. 高级一点的,可以用perf top看看系统调用的时间,如果都在spinlock上,说明你的IO文件有互斥了。

       

硬件系统篇:

 

  1. BIOS里面,CPU的C states是必须disable,测性能,省毛电。
  2. HT也是要关的,但是在NVME SSD中,HT貌似不错,请自行研究。
  3. VT之类,都是必须关的。Dell/HP/IBM都有BIOS推荐的设置。
  4. NUMA,这东西对于性能真心没好处,还是一点要避免。BIOS能关就关,不能关的话,用numactl来指定吧。
  5. 还有就是硬件的中断,不要用irqbalance,一定要用irq_affinity来做mask。
  6. 对于PCIE slot,尽可能让两个设备在不同的CPU上,用taskset,或者numactl来进行分离。

 

最后一点,测试只是测试,一定要上应用,这个是对自己和公司负责的行为。

车已经到了嘉兴,俺也吐了两页,希望可以挤出瓜哥的玉了。找个信号好的地就发了。嘿嘿

分类目录 SSD, 技术文章.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。