深入浅出计算机组成原理
徐文浩
bothub 创始人
70433 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
深入浅出计算机组成原理
15
15
1.0x
00:00/00:00
登录|注册

44 | 理解IO_WAIT:I/O性能到底是怎么回事儿?

查看占用大量I/O的进程
查看实际硬盘读写情况
查看CPU等待IO操作的百分比
4K-Thrd(4K线程)
Acc.Time(响应时间)
4K(随机读写)
Seq(顺序读写)
PCI Express接口
SATA 3.0接口
了解更多关于IOPS和IO_WAIT的文章
研究4K-Thrd指标的应用场景
下载AS SSD软件测试硬盘性能
优化程序以减少I/O操作
硬盘性能瓶颈
iotop命令
iostat命令
top命令
AS SSD软件测试
SSD硬盘
HDD硬盘
IOPS(每秒输入输出操作的次数)
数据传输率(Data Transfer Rate)
响应时间(Response Time)
推荐阅读
思考题
性能优化
IO_WAIT定位
性能测试
硬盘类型
I/O性能指标
I/O性能总结

该思维导图由 AI 生成,仅供参考

在专栏一开始的时候,我和你说过,在计算机组成原理这门课里面,很多设计的核心思路,都来源于性能。在前面讲解 CPU 的时候,相信你已经有了切身的感受了。
大部分程序员开发的都是应用系统。在开发应用系统的时候,我们遇到的性能瓶颈大部分都在 I/O 上。在第 36 讲讲解局部性原理的时候,我们一起看了通过把内存当作是缓存,来提升系统的整体性能。在第 37 讲讲解 CPU Cache 的时候,我们一起看了 CPU Cache 和主内存之间性能的巨大差异。
然而,我们知道,并不是所有问题都能靠利用内存或者 CPU Cache 做一层缓存来解决。特别是在这个“大数据”的时代。我们在硬盘上存储了越来越多的数据,一个 MySQL 数据库的单表有个几千万条记录,早已经不算是什么罕见现象了。这也就意味着,用内存当缓存,存储空间是不够用的。大部分时间,我们的请求还是要打到硬盘上。那么,这一讲我们就来看看硬盘 I/O 性能的事儿。

IO 性能、顺序访问和随机访问

如果去看硬盘厂商的性能报告,通常你会看到两个指标。一个是响应时间(Response Time),另一个叫作数据传输率(Data Transfer Rate)。没错,这个和我们在专栏的一开始讲的 CPU 的性能一样,前面那个就是响应时间,后面那个就是吞吐率了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

硬盘I/O性能对计算机系统至关重要,尤其在应用系统开发中常成为性能瓶颈。本文从硬盘的数据传输率、响应时间以及顺序访问和随机访问的性能差异出发,介绍了HDD和SSD硬盘性能对比,以及IOPS对服务器性能的重要性。通过实际测试结果展示了如何通过top和iostat命令来定位CPU是否在等待I/O操作完成的问题,以及如何通过iotop命令找出具体占用大量I/O的进程。文章强调了通过这些命令的组合可以快速定位程序遇到的I/O瓶颈,并提出了推荐阅读和课后思考的内容。总结来看,本文通过深入讨论硬盘的核心指标和相关命令,为读者提供了快速了解硬盘I/O性能重要性以及解决I/O性能问题的方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出计算机组成原理》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(29)

  • 最新
  • 精选
  • Joe Black
    请问下顺序IO在开发上是怎么实现的?比如对于C开发,就是以append only的方式打开一个文件直接写就行了?还是说有什么特别的控制指令? 我看挺多数据库软件写日志的时候用的都是所谓的AOF文件,说顺序写完日志再应用到库里,是不是也是同样的方式?

    作者回复: 钱晓明同学, 你好,在应用开发层面,的确只要append only直接写文件就OK了。 是的,这种先写日志,再commit到实际的数据库内部的存储结构的WAL(Write Ahead Logging)日志的方式,其实也就是AOF(Append Only File)的方式。

    2020-02-07
    10
  • 88591
    老师,怎么能控制磁盘的顺序读写和随机读写,操作系统有什么api 吗。一直没有找到

    作者回复: loser同学, 你好,这个由文件系统来控制,而不是由上层的应用API来控制。

    2019-12-12
    3
  • Frank
    pci-e 的ssd 磁盘iops 才20000。那云平台的云磁盘是不是更低了。

    作者回复: we同学, 你好,硬件设备日新月异,而且现在云平台下的SSD硬件都很不错的,你可以自己用stress压压看。

    2019-08-07
    6
    3
  • 许童童
    老师你好,我在CENTOS下用Stress命令,IO_WAIT并没有上去,是什么原因?

    作者回复: 能贴一下具体的指令么?

    2019-08-07
    4
    2
  • 许童童
    老师你好,我有一台云主机,怎么样才能测出硬盘的性能,比如最大的IOPS?

    作者回复: 你可以用我在这一讲的stress命令压一下。不过云主机大家现在都是超卖的,而且可能存在别人的应用也在运行的情况。有时候测出来数据会有波动。

    2019-08-07
    2
    1
  • bro.
    4K-64Thrd是随机64队列深度测试,软件则会生成64个16MB大小的测试文件(共计1GB),然后同时以4KB的单位尺寸,同时在这64个文件中进行写入和读取测试,最后依然以平均成绩为结果!
    2019-08-07
    53
  • 有铭
    才注意到,硬盘的随机读的性能是不如随机写的。我以前一直以为是反过来的,但是为什么呢?按这个现象,原来硬盘类设备是“写多读少”的设计思路?
    2019-08-07
    5
    23
  • 活的潇洒
    工作经常遇到IO_WAIT的案例 老师讲的正好可以用上 day44 笔记:https://www.cnblogs.com/luoahong/p/11363137.html
    2019-08-21
    4
    7
  • Monday
    top 中 %CPU的wa是实时CPU等待io占用百分比。若是要收集一段时间内的io耗时占比呢?比如一周
    2020-06-16
    2
    5
  • 草帽路飞
    您好,老师程序中如果直接写文件是顺序读写么?
    2020-03-24
    3
收起评论
显示
设置
留言
29
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部