置信大家都晓得固态硬盘(SSD)的劣势在于速度比传统的机械硬盘(HDD)要快,所以当初线上服务器里越来越多看到固态硬盘的呈现。不过作为一个对性能数字宽宏大量的开发,我想更准确地弄明确搭载 SSD 的服务器在 IO 性能上比搭载 HDD 的到底快多少,程序 IO 状况下快多少,随机 IO 状况下又能快多少?终于在最近抽空搞了一次性能测试比照。
测试环境
别离找了两台服务器,其磁盘都是 Raid 阵列,别离是搭载 SSD 和 HDD,更具体的配置如下:
-
HDD 实机:
- Raid 卡型号是 PERC H730 Mini,1GB RAM 缓存
- 4 块 500GB SSD 组成的 raid5,可用容量 1.3T
-
SSD 实机:
- Raid 卡型号同上
- 7 块 300G HDD 硬盘组成的 Raid5,可用容量 1.6T
好了,较量选手曾经就位,再抉择压测工具 fio。指定比 (压) 赛(测)规 (参) 则(数)如下:
- IO 引擎:为了给硬盘充沛施压,选用异步形式 libaio
- PageCache:为了更靠近磁盘自身性能,开启 Direct 参数绕开 Linux 零碎的内存缓存
- 压测对象:稳当起见,没有应用裸设施,用的文件
- 文件大小:100GB,因为我的 Raid 卡缓存是 1G,保障远远大于缓存
- 调度策略:抉择常见的 noop
比照测试正式开始。
程序读取 PK
咱们先进行程序拜访下的测试,因为这个环境下无论是机械硬盘,还是固态硬盘,性能都将会是最优的。IO 大小从 512K 始终到 1M。
先来看一下机械硬盘:
在固态硬盘下:
这个数据看来,在程序 IO 状况下,其实搭载 HDD 的服务器 IO 性能并没有被搭载 ssd 的落下太多。这是因为
- 程序 IO 的状况下,RAID 卡的命中率高,尤其是设置了 RAID 预取
- 自身程序 IO 也是机械磁盘工作最善于的状态
所以,古代在服务器畛域里,SSD 只是利用越来越多了,但并没有可能全面代替 HDD。起因之一是因为机械硬盘的程序 IO 其实并不慢,再加上 Raid 的加持,所以还有很大的市场占比。
比拟完了程序 IO,咱们再来比拟另外一个利用场景,随机 IO。
随机读取 PK
还记得结尾的 fio 压测参数中咱们把 Page Cache 给禁用了,再加上测试文件的大小定的是 100GB,这个大大超过了 Raid 卡的缓存大小。所以基于这个前提下的随机 IO,各级缓存根本都失去用武之地了,IO 体现速度就齐全看硬盘本身了。
在《机械硬盘随机 IO 慢的超乎你的设想》中,咱们看来机械硬盘的随机 IO 的体现真的是太蹩脚了。
再来看搭载 SSD 的服务器 IO 体现:
比照来看,机械硬盘的随机 IO 的速度可真的不是个别的慢,咱们筛选上述后果中最被业务认可的 4K IO size 来看。
- 带宽角度看,只有不到 1M 的吞吐,
- 提早角度看,在 4.4ms 左右
再看固态硬盘下的 4K IO Size 下的体现。而同等条件下的 SSD 可有 32M。
- 带宽角度看,依然有 32M,比 HDD 能快几十倍
- 提早角度看,大概 120us 左右。比 HDD,就是 4400:120,也是几十倍的晋升
总结
在程序 IO 的状况下,因为有 Raid 卡缓存的加持,基于 HDD 组成的 Raid 阵列服务器在 IO 性能上并没有太落下风。然而在随机读取的场景下,无论带宽还是提早指标,SSD 都要比 HDD 快几十倍以上。
所以在服务器中利用 SSD,更次要解决的是随机 IO 的问题。所以如果你的服务器里存在过多的 Page Cache,Raid 卡缓存都兜不住的随机 IO 申请,那么请把 HDD 更换成 SSD 吧。
开发内功修炼之硬盘篇专辑:
- 1. 磁盘开篇:扒开机械硬盘坚挺的外衣!
- 2. 磁盘分区也是隐含了技术技巧的
- 3. 咱们怎么解决机械硬盘既慢又容易坏的问题?
- 4. 拆解固态硬盘构造
- 5. 新建一个空文件占用多少磁盘空间?
- 6. 只有 1 个字节的文件理论占用多少磁盘空间
- 7. 文件过多时 ls 命令为什么会卡住?
- 8. 了解格式化原理
- 9.read 文件一个字节理论会产生多大的磁盘 IO?
- 10.write 文件一个字节后何时发动写磁盘 IO?
- 11. 机械硬盘随机 IO 慢的超乎你的设想
- 12. 搭载固态硬盘的服务器到底比搭机械硬盘快多少?
我的公众号是「开发内功修炼」,在这里我不是单纯介绍技术实践,也不只介绍实践经验。而是把实践与实际联合起来,用实际加深对实践的了解、用实践进步你的技术实际能力。欢送你来关注我的公众号,也请分享给你的好友~~~