当前位置:网站首页>搭载固态硬盘的服务器究竟比机械硬盘快多少
搭载固态硬盘的服务器究竟比机械硬盘快多少
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
边栏推荐
- How to solve the conflict when JD landed on Devops platform?
- RestfulApi 学习笔记——父子资源(四)
- 模板引擎的整理归纳
- I used Python to find out all the people who deleted my wechat and deleted them automatically
- 优化if-else代码的八种方案
- 构建者模式(Builder pattern)
- . net large data concurrency solution
- 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水
- Arduino IDE搭建ESP8266开发环境,文件下载过慢解决方法 | ESP-01制作WiFi开关教程,改造宿舍灯
- 数据库连接报错之IO异常(The Network Adapter could not establish the connection)
猜你喜欢
关于update操作并发问题
Workers, workers soul, draw lifelong members, become a person!
C++的那些事儿:从电饭煲到火箭,C++无处不在
别再在finally里面释放资源了,解锁个新姿势!
Eight ways to optimize if else code
Interpretation of deepmind's latest paper: the causal reasoning algorithm in discrete probability tree is proposed for the first time
rabbitmq(一)-基础入门
Flink from introduction to Zhenxiang (7. Sink data output file)
小青台正式踏上不归路的第3天
谷歌开源能翻译101种语言的AI模型,只比Facebook多一种
随机推荐
Google's AI model, which can translate 101 languages, is only one more than Facebook
laravel8更新之速率限制改进
Station B STM32 video learning
学习记录并且简单分析
【Python 1-6】Python教程之——数字
Hello world of rabbitmq
Golang ICMP Protocol detects viable hosts
谷歌开源能翻译101种语言的AI模型,只比Facebook多一种
契约式设计(Dbc)以及其在C语言中的应用
rabbitmq(一)-基础入门
非常规聚合问题举例
三、函数的参数
2020-11-05
I used Python to find out all the people who deleted my wechat and deleted them automatically
Improvement of maintenance mode of laravel8 update
浅谈OpenGL之DSA
AI周报:允许“员工自愿降薪”;公司回应:员工内心高兴满意;虎牙HR将员工抬出公司;瑞典禁用华为中兴5G设备
Workers, workers soul, draw lifelong members, become a person!
【Python 1-6】Python教程之——数字
laravel8更新之维护模式改进