PCIe-SSD卡下的xfs vs ext4对比fileio及TpmC测试

此前听说过某公司把xfs都替换成了ext4,感觉有些诧异,才有了本次测试。此次测试本意是想对比下xfs和ext4的差异,看看xfs是否还一如既往的靠谱。在测试的过程中,我还顺带测试了下MySQL 5.7.7和Percona-5.6.23的对比。

最终的建议写在前面:
1、可以继续放心大胆的采用xfs文件系统
2、使用xfs文件系统时,无需刻意加一些优化参数,默认的(defaults,noatime,nodiratime,nobarrier)就够了;
3、可以继续优先选择Percona分支版本,除了thread pool,它还有其他很多优秀的特性(MySQL官方暂无计划把thread pool功能移植到社区版);
4、 MySQL 5.7版本同样非常值得期待,但更希望加入Percona/MariaDB已经采用的、成熟的优秀补丁(thread pool、slowlog、锁/mutex拆分等);
5、在一些高IOPS设备服务器上跑MySQL时,建议采用多实例模式,不建议只运行一个实例,尽可能发挥服务器的最大性能。

来看看下面的测试结果:

1、fio测试显示的iops以及I/O吞吐能力

pcie-ssd-xfs-vs-ext4-fio-iops

pcie-ssd-xfs-vs-ext4-fio-bw

2、再来看下在做fio测试时,I/O设备的iowait以及%util值,还有PCIe-SSD卡监控到的写延迟数据:

pcie-ssd-xfs-vs-ext4-fio-iowait

pcie-ssd-xfs-vs-ext4-fio-util

pcie-xfs-vs-ext4-fio-writelatency

3、以及最终及各个不同测试模式下的MySQL tps结果对比:

pcie-ssd-xfs-vs-ext4-oltp-tpmc

小结:
1、 在%util基本相差不大的情况下,xfs相对ext4拥有绝对优势以及更好的IOPS提升空间
2、 xfs没必要刻意进行优化,默认的参数就足够了。

欢迎各位同行们也分享下您在PCIe-SSD设备下相关测试结果,相互借鉴下。

上面图表中几个不同颜色分别表示含义:

1) 蓝色:表示经过优化的xfs
格式化时的参数:
mkfs.xfs -d agcount=256 -l size=128m,lazy-count=1,version=2 /dev/diska1

mount时的参数
defaults,noatime,nodiratime,nobarrier,discard,allocsize=256m,logbufs=8,attr2,logbsize=256k

2) 灰色:表示默认的xfs
格式化时的参数:
mkfs.xfs -f -L /data /dev/diska1

mount时的参数
defaults,noatime,nodiratime,nobarrier

3) 黄色:表示ext4。
格式化时的参数:
mkfs.ext4 /dev/diska2

mount时的参数:
defaults,noatime,nodiratime,nobarrier
延伸阅读:
1、MySQL 5.6.17/Percona5.6.16/MariaDB 10.0.11/OneSQL 5.6.16 TpmC测试
2、tpcc-mysql安装、使用、结果解读
3、SAS vs SSD各种模式下MySQL TPCC OLTP对比测试结果
4、XFS设计

PCIe-SSD卡下的xfs vs ext4对比fileio及TpmC测试》上有5条评论

  1. YANG

    这个fio的IOPS测试的是4k随机吗?数值都非常不错,是什么样的硬件呢?(Fusion的Iomemory?)

  2. 叶金荣 文章作者

    我是直接模拟MySQL InnoDB的16KB随机读写的,也就是block size是16KB。
    所使用的硬件是m**厂家的,我就不写全名了,主要测试目的是xfs vs ext4,因此什么设备是其次。

  3. 匿名

    测试不能代表一切,很多问题都是在生产环境中才能体现的。我这边使用xfs做数据存储时系统负载非常不稳定,换回ext4就没再发生过

发表评论

电子邮件地址不会被公开。

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

Time limit is exhausted. Please reload CAPTCHA.