磁盘I/O性能优化的几个思路

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等

虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联。

顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难。

找出了 I/O 的性能瓶颈后,下一步要做的就是优化了,也就是如何以最快的速度完成 I/O操作,或者换个思路,减少甚至避免磁盘的 I/O 操作。

本文,我就来说说,优化 I/O 性能问题的思路和注意事项。

I/O基准测试

按照我的习惯,优化之前,我会先问自己, I/O 性能优化的目标是什么?换句话说,我们观察的这些 I/O 性能指标(比如 IOPS、吞吐量、延迟等),要达到多少才合适呢?

事实上,I/O 性能指标的具体标准,每个人估计会有不同的答案,因为我们每个人的应用场景、使用的文件系统和物理磁盘等,都有可能不一样。

为了更客观合理地评估优化效果,我们首先应该对磁盘和文件系统进行基准测试,得到文件系统或者磁盘 I/O 的极限性能。

fio(Flexible I/O Tester)正是最常用的文件系统和磁盘 I/O 性能基准测试工具。它提供了大量的可定制化选项,可以用来测试,裸盘或者文件系统在各种场景下的 I/O 性能,包括了不同块大小、不同 I/O 引擎以及是否使用缓存等场景。

fio 的安装比较简单,你可以执行下面的命令来安装它:

# Ubuntu
apt-get install -y fio
# CentOS
yum install -y fio

安装完成后,就可以执行 man fio 查询它的使用方法。

fio 的选项非常多, 我会通过几个常见场景的测试方法,介绍一些最常用的选项。这些常见场景包括随机读、随机写、顺序读以及顺序写等,你可以执行下面这些命令来测试:

#随机读
fio -name=randread -direct=1 -iodepth=64 -rw=randread -ioengine=libaio -bs=4k -size=1G
#随机写
fio -name=randwrite -direct=1 -iodepth=64 -rw=randwrite -ioengine=libaio -bs=4k -size=1G
#顺序读
fio -name=read -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=4k -size=1G -numjobs=
#顺序写
fio -name=write -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=4k -size=1G -numjob

在这其中,有几个参数需要你重点关注一下。

  • direct,表示是否跳过系统缓存。上面示例中,我设置的 1 ,就表示跳过系统缓存。
  • iodepth,表示使用异步 I/O(asynchronous I/O,简称 AIO)时,同时发出的 I/O 请求上限。在上面的示例中,我设置的是 64。
  • rw,表示 I/O 模式。
Linux内核性能优化实战演练 整理了一些个人觉得比较好的Linux相关学习书籍、Linux内核视频资料共享在群里面,有需要的可以自行添加哦!】小编推荐自己的Linux内核源码交流群:【套路篇:磁盘 I/O 性能优化几个思路 阅读详情

相关推荐

探索fio参数如何选择以及全方位对比HDD和SSD性能

由于公司要部署一套Ceph环境,趁任务并不太着急,在部署之前先对HDD和SSD进行周密的测试,以便和部署之后的Ceph服务能力(RBD、CephFS、NFS的性能)进行对比。 本文的目的是解答如下几个问题: fio工具的参数到底该如何选择,比如:多长时间的runtime更经济?bs对测试结果有何影响?numjobs和iodepth应该设置多少? 正儿八经了解一下HDD和SSD的性能。 本文有不少数据和图表,希望能够为有同样疑惑的朋友提供有益参考。 测试HDD性能 磁盘的配置如下: 磁盘为7200转3.

刘康的专栏 1万+

fio -iodepth -numjobs 参数测试报告(转载)

fio工具中的iodepth参数与numjobs参数-对测试结果的影响测试环境3台服务器:ceph配置内外网分离,外网使用万兆线,内网使用千兆线,osd共21个。1台客户端:安装fio工具、内核客户端,使用万兆线。测试目的针对fio工具中的iodepth(队列深度)和numjobs(线程数)参数,分析使用fio工具时,哪个参数对带宽值测试结果影响比较大。测试思路测试过程:集群通过内核客户端挂载到客...

jpmsdn的专栏 3626

FIO磁盘性能测试工具

ioengine:FIO 工作时使用的引擎。使用 FIO 工具测试硬盘性能,首先确定待模拟IO负载的IO参数,如I/O type,Block size,I/O engine,I/O depth,Target file/device等。rw: 读写方式,顺序读read,顺序写write,随机读randread ,随机写randwrite,混合读写randrw,如果要测试吞吐量,需要设为顺序读read,顺序写write。根据实际业务的场景,一般将 I/O 的表现分为四种场景,随机读、随机写、顺序读、顺序写。

weixin_42241611的博客 2077

FIO测试存储性能iodepth队列深度对iops的影响

FIO是用来测试磁盘IO性能比较常用的工具,它的强大之处在于提供了一套测试框架,能够支持多线程多进程的IO测试,用户只需进行参数的配置,便能够方便地定制不同的IO行为(顺序读写,随机读写等),并对其性能进行监测。此次我们来测试金山私有云KingStack某套环境下SSD磁盘的4KB随机写的IOPS,验证一下增加队列深度对磁盘性能的影响。加大磁盘队列深度就是让磁盘不断工作,减少磁盘的空闲时间。 1、FIO测试命令: [root@KingStack-FIO ~]# fio -ioengine=libaio -b

Python研究所 9844

磁盘 I/O 性能优化几个思路

本文是通过学习倪朋飞老师的《Linux性能优化实战》 :磁盘 I/O 性能优化几个思路 磁盘 I/O 性能优化几个思路I/O 基准测试 I/O 基准测试 按照惯例,优化之前,我们会评估, I/O 性能优化的目标是什么?换句话说,我们观察的这些 I/O 性能指标(比如 IOPS、吞吐量、延迟等),要达到多少才合适呢? 事实上,I/O 性能指标的具体标准,每个人估计会有不同的答案,因为我们每个人的应用场景、使用的文件系统和物理磁盘等,都有可能不一样。 为了更客观合理地评估优化效果,我们首先应该对磁盘和文.

zhanglu0302的博客 928

套路篇:磁盘 I/O 性能优化几个思路

上一节,我们一起回顾了常见的文件系统和磁盘 I/O 性能指标,梳理了核心的 I/O 性能观测工具,最后还总结了快速分析 I/O 性能问题的思路。虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联。顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难。找出了 I/O 的性能瓶颈后,下一步要做的就是优化了,也就是如何以最快的速度完成 I/O操作,或者换个思路,减少甚至避免磁盘的 I/O 操作。

echohuangshihuxue的博客 1247

Linux性能优化-磁盘 I/O 性能优化几个思路

磁盘 I/O 性能优化几个思路

hixiaoxiaoniao的专栏 2458

31 | 套路篇:磁盘 I/O 性能优化几个思路

上一节,我们一起回顾了常见的文件系统和磁盘 I/O 性能指标,梳理了核心的 I/O 性能观测工具,最后还总结了快速分析 I/O 性能问题的思路。虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联。顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难。找出了 I/O 的性能瓶颈后,下一步要做的就是优化了,也就是如何以最快的速度完成 I/O 操作,或者换个思路,减少甚至避免磁盘的 I/O 操作。

qq_37756660的博客 1276

Linux【IO】8.磁盘 I/O 性能优化几个思路

文章目录1. I/O 基准测试2. I/O 性能优化3. 应用程序优化4. 文件系统优化5. 磁盘优化 1. I/O 基准测试 I/O 性能优化的目标是什么?换句话说,我们观察的这些 I/O 性能指标(比如 IOPS、吞吐量、延迟等),要达到多少才合适呢? 事实上,I/O 性能指标的具体标准,每个人估计会有不同的答案,因为我们每个人的应用场景、使用的文件系统和物理磁盘等,都有可能不一样。为了更客观合理地评估优化效果,我们首先应该对磁盘和文件系统进行基准测试,得到文件系统或者磁盘 I/O 的极限性能。 fi

爱死亡机器人 1054

模拟磁盘文件系统实现_磁盘I/O性能优化几个思路

虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联。顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难。找出了 I/O 的性能瓶颈后,下一步要做的就是优化了,也就是如何以最快的速度完成 I/O操作,或者换个思路,减少甚至避免磁盘的 I/O 操作。本文,我就来说说,优化 I/O 性能问题的思路和注意事项。I/O...

weixin_39676348的博客 313

三十一、 套路篇:磁盘 I/O 性能优化几个思路

IO性能优化 应用程序优化 用追加写代替随机写,减少寻址开销,加快 I/O 写的速度 借助缓存 I/O ,充分利用系统缓存,降低实际 I/O 的次数。 应用程序内部构建自己的缓存 外部缓存系统Redis 能在应用程序内部,控制缓存的数据和生命周期 C 标准库提供的 fopen、fread 等库函数,都会利用标准库的缓存,减少磁盘的操作。而你直接使用 open、...

MyySophia的博客 2702

mysql+磁盘i+o+优化_31 | 套路篇:磁盘 I/O 性能优化几个思路

上一节,我们一起回顾了常见的文件系统和磁盘 I/O 性能指标,梳理了核心的 I/O 性能观测工具,最后还总结了快速分析 I/O 性能问题的思路。虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联。顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难。找出了 I/O 的性能瓶颈后,下一步要做的就是优化了,也就是如...

weixin_42318708的博客 245

Linux性能优化实战:套路篇-磁盘 I/O 性能优化几个思路(31)

一、上节回顾 上一节,我们一起回顾了常见的文件系统和磁盘 I/O 性能指标,梳理了核心的 I/O 性能观测工具,最后还总结了快速分析 I/O 性能问题的思路。 虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联。 顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难。找出了 I/O 的性能瓶颈后...

weixin_30235225的博客 1231

二十八、套路篇:磁盘I_O性能优化几个思路

上一节,回顾了常见的文件系统和磁盘 I/O 性能指标,梳理了核心的 I/O 性能观测工具,最后还总结了快速分析 I/O 性能问题的思路。虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联。顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难。找出了 I/O 的性能瓶颈后,下一步要做的就是优化了,也就是如何以最快的速度完成 I/O操作,或者换个思路,减少甚至避免磁盘的 I/O 操作。

qingmu_kai的博客 1821

磁盘 I/O 性能优化思路

磁盘 I/O 性能优化思路 文章目录磁盘 I/O 性能优化思路前言一、I/O 基准测试二、I/O 性能指标文件系统 I/O 性能指标磁盘 I/O 性能指标三、性能工具四、如何迅速分析 I/O 的性能瓶颈四、I/O 性能优化应用程序优化文件系统优化磁盘优化总结 前言 虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联。顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难。找出了 I/O 的性能瓶颈后,下一步要做的就是优

qq_40500045的博客 1796

科普文:Linux服务器磁盘的 I/O 性能优化思路

这里需要注意的是,对同步 I/O 来说,由于 I/O 提交和 I/O 完成是一个动作,所以 slat 实际上就是 I/O 完成的时间,而 clat 是 0。应用程序处于整个 I/O 栈的最上端,它可以通过系统调用,来调整 I/O 模式(如顺序还是随机、同步还是异步), 同时,它也是 I/O 数据的最终来源。记住,磁盘和文件系统的 I/O ,通常是整个系统中最慢的一个模块。所以,在优化 I/O 问题时,除了可以优化 I/O 的执行流程,还可以借助更快的内存、网络、CPU 等,减少 I/O 调用。

为无为,事无事,味无味。 1657
上一篇: Java虚拟机是怎么实现synchronized的?
下一篇: 阿里大佬是怎么监控Kafka?这次算是长见识了
程序员摩西
博客等级 码龄7年 44粉丝 104原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值