当前位置:网站首页>搭载固态硬盘的服务器究竟比机械硬盘快多少
搭载固态硬盘的服务器究竟比机械硬盘快多少
2020-11-08 16:17:00 【张彦飞allen】
相信大家都知道固态硬盘(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.搭载固态硬盘的服务器究竟比搭机械硬盘快多少?
我的公众号是「开发内功修炼」,在这里我不是单纯介绍技术理论,也不只介绍实践经验。而是把理论与实践结合起来,用实践加深对理论的理解、用理论提高你的技术实践能力。欢迎你来关注我的公众号,也请分享给你的好友~~~
版权声明
本文为[张彦飞allen]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4746202/blog/4707202
边栏推荐
猜你喜欢
我用 Python 找出了删除我微信的所有人并将他们自动化删除了
打工人,打工魂,抽终身会员,成为人上人!
新型存算一体芯片诞生,利好人工智能应用~
Design by contract (DBC) and its application in C language
API生命周期的5个阶段
Flink: from introduction to Zhenxiang (6. Flink implements UDF function - realizes more fine-grained control flow)
Flink from introduction to Zhenxiang (7. Sink data output file)
Tencent, which is good at to C, how to take advantage of Tencent's cloud market share in these industries?
Welcome to offer, grade P7, face-to-face sharing, 10000 words long text to take you through the interview process
How to solve the conflict when JD landed on Devops platform?
随机推荐
机械硬盘随机IO慢的超乎你的想象
C + + things: from rice cookers to rockets, C + + is everywhere
[Python 1-6] Python tutorial 1 -- number
AI weekly: employees are allowed to voluntarily reduce salary; company response: employees are happy and satisfied; tiger tooth HR takes employees out of the company; Sweden forbids Huawei ZTE 5g equi
学习记录并且简单分析
Rabbitmq (1) - basic introduction
Do these mistakes in your resume affect your annual salary of one million?
Golang system ping program to detect the surviving host (any permission)
. net large data concurrency solution
二叉树的四种遍历方应用
Solution to the problem of offline connection between ADB and mobile phone
浅谈OpenGL之DSA
喜获蚂蚁offer,定级p7,面经分享,万字长文带你走完面试全过程
大龄程序员没有出路吗?
TypeScript(1-2-2)
VIM configuration tutorial + source code
Comics: looking for the best time to buy and sell stocks
Suitable for C / C + + novice learning some projects, do not give me to miss!
laravel8更新之速率限制改进
苏州游记