深入浅出计算机组成原理
徐文浩
bothub创始人
立即订阅
13019 人已学习
课程目录
已完结 62 讲
0/4登录后,你可以任选4讲全文学习。
入门篇 (5讲)
开篇词 | 为什么你需要学习计算机组成原理?
免费
01 | 冯·诺依曼体系结构:计算机组成的金字塔
02 | 给你一张知识地图,计算机组成原理应该这么学
03 | 通过你的CPU主频,我们来谈谈“性能”究竟是什么?
04 | 穿越功耗墙,我们该从哪些方面提升“性能”?
原理篇:指令和运算 (12讲)
05 | 计算机指令:让我们试试用纸带编程
06 | 指令跳转:原来if...else就是goto
07 | 函数调用:为什么会发生stack overflow?
08 | ELF和静态链接:为什么程序无法同时在Linux和Windows下运行?
09 | 程序装载:“640K内存”真的不够用么?
10 | 动态链接:程序内部的“共享单车”
11 | 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?
12 | 理解电路:从电报机到门电路,我们如何做到“千里传信”?
13 | 加法器:如何像搭乐高一样搭电路(上)?
14 | 乘法器:如何像搭乐高一样搭电路(下)?
15 | 浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?
16 | 浮点数和定点数(下):深入理解浮点数到底有什么用?
原理篇:处理器 (18讲)
17 | 建立数据通路(上):指令+运算=CPU
18 | 建立数据通路(中):指令+运算=CPU
19 | 建立数据通路(下):指令+运算=CPU
20 | 面向流水线的指令设计(上):一心多用的现代CPU
21 | 面向流水线的指令设计(下):奔腾4是怎么失败的?
22 | 冒险和预测(一):hazard是“危”也是“机”
23 | 冒险和预测(二):流水线里的接力赛
24 | 冒险和预测(三):CPU里的“线程池”
25 | 冒险和预测(四):今天下雨了,明天还会下雨么?
26 | Superscalar和VLIW:如何让CPU的吞吐率超过1?
27 | SIMD:如何加速矩阵乘法?
28 | 异常和中断:程序出错了怎么办?
29 | CISC和RISC:为什么手机芯片都是ARM?
30 | GPU(上):为什么玩游戏需要使用GPU?
31 | GPU(下):为什么深度学习需要使用GPU?
32 | FPGA和ASIC:计算机体系结构的黄金时代
33 | 解读TPU:设计和拆解一块ASIC芯片
34 | 理解虚拟机:你在云上拿到的计算机是什么样的?
原理篇:存储与I/O系统 (17讲)
35 | 存储器层次结构全景:数据存储的大金字塔长什么样?
36 | 局部性原理:数据库性能跟不上,加个缓存就好了?
37 | 高速缓存(上):“4毫秒”究竟值多少钱?
38 | 高速缓存(下):你确定你的数据更新了么?
39 | MESI协议:如何让多核CPU的高速缓存保持一致?
40 | 理解内存(上):虚拟内存和内存保护是什么?
41 | 理解内存(下):解析TLB和内存保护
42 | 总线:计算机内部的高速公路
43 | 输入输出设备:我们并不是只能用灯泡显示“0”和“1”
44 | 理解IO_WAIT:I/O性能到底是怎么回事儿?
45 | 机械硬盘:Google早期用过的“黑科技”
46 | SSD硬盘(上):如何完成性能优化的KPI?
47 | SSD硬盘(下):如何完成性能优化的KPI?
48 | DMA:为什么Kafka这么快?
49 | 数据完整性(上):硬件坏了怎么办?
50 | 数据完整性(下):如何还原犯罪现场?
51 | 分布式计算:如果所有人的大脑都联网会怎样?
应用篇 (5讲)
52 | 设计大型DMP系统(上):MongoDB并不是什么灵丹妙药
53 | 设计大型DMP系统(下):SSD拯救了所有的DBA
54 | 理解Disruptor(上):带你体会CPU高速缓存的风驰电掣
55 | 理解Disruptor(下):不需要换挡和踩刹车的CPU,有多快?
结束语 | 知也无涯,愿你也享受发现的乐趣
免费
答疑与加餐 (5讲)
特别加餐 | 我在2019年F8大会的两日见闻录
FAQ第一期 | 学与不学,知识就在那里,不如就先学好了
用户故事 | 赵文海:怕什么真理无穷,进一寸有一寸的欢喜
FAQ第二期 | 世界上第一个编程语言是怎么来的?
特别加餐 | 我的一天怎么过?
深入浅出计算机组成原理
登录|注册

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

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

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

如果去看硬盘厂商的性能报告,通常你会看到两个指标。一个是响应时间(Response Time),另一个叫作数据传输率(Data Transfer Rate)。没错,这个和我们在专栏的一开始讲的 CPU 的性能一样,前面那个就是响应时间,后面那个就是吞吐率了。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入浅出计算机组成原理》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(16)

  • 有铭
    才注意到,硬盘的随机读的性能是不如随机写的。我以前一直以为是反过来的,但是为什么呢?按这个现象,原来硬盘类设备是“写多读少”的设计思路?
    2019-08-07
    2
    6
  • bro.
    4K-64Thrd是随机64队列深度测试,软件则会生成64个16MB大小的测试文件(共计1GB),然后同时以4KB的单位尺寸,同时在这64个文件中进行写入和读取测试,最后依然以平均成绩为结果!
    2019-08-07
    3
  • 活的潇洒
    工作经常遇到IO_WAIT的案例 老师讲的正好可以用上
    day44 笔记:https://www.cnblogs.com/luoahong/p/11363137.html
    2019-08-21
    1
  • loser
    老师,怎么能控制磁盘的顺序读写和随机读写,操作系统有什么api 吗。一直没有找到
    2019-12-12
  • 陈志恒
    重点:iostat iotop top三个命令 判断io等待原因
    2019-11-28
  • 随心而至
    A server orientated measure of a drives ability to write 64 files in parallel.

    4K 64 thread write speed is a measure of how well a device can write random 4K blocks of data at a queue depth of 64. General consumer computer disks rarely need to service more than one or two requests at a time making this measure particularly well suited to servers.

    https://ssd.userbenchmark.com/Faq/What-is-4K-64-thread-write-speed/59
    2019-10-23
  • prader
    计算机的cpu主频很好,所以很快。硬盘的吞吐率和响应时间比较小,所以性能主要卡在这里。
    lunix 下 可以用,top iostat iotop 快速定位计算机的性能卡在哪个io进程。
    2019-10-16
  • Knight²º¹⁸
    一直有个问题,在Linux的IO模型中无论是BIO、NIO、IO多路复用实际上在等待IO响应的时候用户线程基本上都是没干啥事的,要么是空跑要么是阻塞。这些个IO模型对应用程序来讲实际并没有提升单个线程的执行效率,那么些IO模型要解决的问题点在哪里,提升的是哪部分的性能?提升应用程序的吞吐量?
    2019-08-11
    1
  • humor
    我实验的结果也是sy高,但是wa是0.0。不知道为什么
    2019-08-07
  • 许童童
    老师你好,我有一台云主机,怎么样才能测出硬盘的性能,比如最大的IOPS?

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

    2019-08-07
  • 许童童
    那么 4K-Thrd 这个指标又是什么意思呢?测试这个指标对应的应用场景又是怎么样的呢?
    这个指标是同时读写64个文件时的吞吐量,应用场景主要是服务器端需要处理大量并发请求。
    2019-08-07
  • 许童童
    老师你好,我在CENTOS下用Stress命令,IO_WAIT并没有上去,是什么原因?

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

    2019-08-07
    3
  • haer
    关于 stress -i 2 命令
    在VMware虚拟机中测试,99 sy,0.0 wa
    在vps中测试,24.3 sy,73.1 wa
    为什么会这样呢?
    2019-08-07
  • we
    我在本地虚拟机里面测试,iowait 没有升高。而是平均负载与sy 特别高。
    2019-08-07
  • we
    老师,stress 命令在centos 下有三个类似的包。是哪个呢? stress-ng,http ress,
    2019-08-07
    1
  • we
    pci-e 的ssd 磁盘iops 才20000。那云平台的云磁盘是不是更低了。

    作者回复: we同学,

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

    2019-08-07
收起评论
16
返回
顶部