Java基本数据类型 ScrollView 人工智能 计算机网络 jquery sqlite servlets ssh cmd compilation vue异步加载组件 vue基础教程 pmp教程 jquery删除子元素 pytorch安装教程 eclipse闪退 h5下拉刷新 winbox使用教程 eclipse显示左边目录 python如何注释 pythonapi python抛异常 java编程基础 java运行环境配置 java数组添加 java实现多线程 java版本查看 java语言入门 ps插入表格 隐藏进程 无法打开搜索页 批处理if 摩斯密码在线翻译 图片轮播代码 工信部手机入网查询 2700U maven项目打包 php取整 php递归 天正建筑2007
当前位置: 首页 > 学习教程  > 编程语言

EXT4与XFS文件系统对I/O的影响

2021/1/13 19:20:38 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

背景说明 最近一直在讨论关于MySQL的优化问题,谈论到了关于文件系统的话题,由于历史原因,线上机器的部署虽然使用的是centos7,但是文件系统并没有使用默认的xfs,而是使用的ext4,原因是ext4相对于xfs更稳定…

背景说明

最近一直在讨论关于MySQL的优化问题,谈论到了关于文件系统的话题,由于历史原因,线上机器的部署虽然使用的是centos7,但是文件系统并没有使用默认的xfs,而是使用的ext4,原因是ext4相对于xfs更稳定一些,所以当时选择了ext4。在决定是否需要切回到xfs之前,先做了两者的比较。
说明:不做压测,只做数据结果对比,观察EXT4和XFS文件系统对文件I/O操作和MySQL场景下的性能表现差异。

文件系统读写逻辑和流程

  1. 文件系统读操作
    在这里插入图片描述
  2. 文件系统写操作
    在这里插入图片描述

环境准备

OS版本:centos7.6
kernel版本:3.10.0-957.el7.x86_64
磁盘:NVMe SSD U.2 3.2T
mount参数:defaults
MySQL版本:5.7.29
工具:sysbench 1.1.0

测试过程

说明:全部测试只采用sysbench工具,测试数据盘NVMe SSD,挂载目录/ssd,挂载选项默认defaults,未对挂载参数做优化(atime,barrier),结果影响不大。

1、格式化ext4,并挂载

mkfs.ext4 /dev/nvme0n1
mount /dev/nvme0n1 /ssd

2、测试文件I/O,分别测试顺序读,顺序写,随机读,随机写和随机读写,测试文件块大小为4k,16k,64k,128k和512k,每种场景测试10分钟,测试过程中注意清除缓存,记录数据,并观察CPU和磁盘利用率。

sysbench fileio --file-num=1 --file-total-size=500G --file-block-size=4k --file-test-mode=seqrd --file-io-mode=sync --file-extra-flags=direct
sysbench fileio --file-num=1 --file-total-size=500G --file-block-size=4k --file-test-mode=seqwr --file-io-mode=sync --file-extra-flags=direct
sysbench fileio --file-num=1 --file-total-size=500G --file-block-size=4k --file-test-mode=rndrd --file-io-mode=sync --file-extra-flags=direct
sysbench fileio --file-num=1 --file-total-size=500G --file-block-size=4k --file-test-mode=rndwr --file-io-mode=sync --file-extra-flags=direct
sysbench fileio --file-num=1 --file-total-size=500G --file-block-size=4k --file-test-mode=rndrw --file-io-mode=sync --file-extra-flags=direct

3、测试数据库MySQL的查询,插入,更新和读写操作,测试并发数12、24、36、48、60,测试数据库大小100000记录,每种场景测试10分钟,测试过程中注意清除缓存,记录数据,并观察CPU和磁盘利用率。

sysbench /tmp/test/sysbench-master/src/lua/oltp_point_select.lua --tables=1 --table_size=100000  --threads=12
sysbench /tmp/test/sysbench-master/src/lua/oltp_insert.lua --tables=1 --table_size=100000 --threads=12
sysbench /tmp/test/sysbench-master/src/lua/oltp_update_index.lua --tables=1 --table_size=100000--threads=12
sysbench /tmp/test/sysbench-master/src/lua/oltp_read_write.lua --tables=1 --table_size=100000 --threads=12

4、重新格式化xfs,并挂载

mkfs.xfs /dev/nvme0n1
mount /dev/nvme0n1 /ssd

5、重复2和3

测试结果

文件I/O测试
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MySQL场景测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试结论

1、ext4和xfs没有孰强孰弱之分,性能几乎一致
2、在数据库场景下,读有3%左右的提升,但是在写方面没有明显优势
3、xfs相比ext4而言,磁盘io利用率低。文件I/O时CPU利用率xfs要高一些,数据库场景下CPU利用率ext4要高一些
4、综上,没有做替换的必要

参考文档

https://github.com/kernel-z/filesystem
https://github.com/akopytov/sysbench


本文链接: http://www.dtmao.cc/news_show_600031.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?