8

搭载固态硬盘的服务器究竟比搭机械硬盘快多少?

 2 years ago
source link: https://mp.weixin.qq.com/s?__biz=MjM5Njg5NDgwNA%3D%3D&mid=2247484023&idx=1&sn=1946b4c286ed72da023b402cc30908b6&chksm=a6e3034c91948a5aa3b0e6beb31c1d3804de9a11c668400d598c2a6b12462e179cf9f1dc33e2&scene=178&cur_album_id=1371808335259090944
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

搭载固态硬盘的服务器究竟比搭机械硬盘快多少?

Original 张彦飞allen 开发内功修炼 2020-07-02 01:33
收录于合集 #开发内功修炼之磁盘篇 13个
640?wx_fmt=jpeg

相信大家都知道固态硬盘(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。

先来看一下机械硬盘: 

640?wx_fmt=png
在固态硬盘下: 
640?wx_fmt=png

这个数据看来,在顺序IO情况下,其实搭载HDD的服务器IO性能并没有被搭载ssd的落下太多。这是因为

  • 顺序IO的情况下,RAID卡的命中率高,尤其是设置了RAID预取

  • 本身顺序IO也是机械磁盘工作最擅长的状态

所以,现代在服务器领域里,SSD只是应用越来越多了,但并没有能够全面替代HDD。原因之一是因为机械硬盘的顺序IO其实并不慢,再加上Raid的加持,所以还有很大的市场占比。比较完了顺序IO,我们再来比较另外一个应用场景,随机IO。

随机读取PK

还记得开头的fio压测参数中我们把Page Cache给禁用了,再加上测试文件的大小定的是100GB,这个大大超过了Raid卡的缓存大小。所以基于这个前提下的随机IO,各级缓存基本都失去用武之地了,IO表现速度就完全看硬盘自身了。

《机械硬盘随机IO慢的超乎你的想象》中,我们看来机械硬盘的随机IO的表现真的是太糟糕了。 

640?wx_fmt=png

再来看搭载SSD的服务器IO表现:

640?wx_fmt=png

对比来看,机械硬盘的随机IO的速度可真的不是一般的慢,我们挑选上述结果中最被业务认可的4K IO size来看。

  • 带宽角度看,只有不到1M的吞吐,

  • 延迟角度看,在4.4ms左右

再看固态硬盘下的4K IO Size下的表现。

  • 带宽角度看,仍然有32M,比HDD能快几十倍

  • 延迟角度看,大约120us左右。比HDD,就是4400:120,也是几十倍的提升

在服务器级别的机器上,因为有Raid卡缓存的加持,顺序IO的情况下,基于HDD组成的Raid阵列服务器在IO性能上并没有太落下风。

但是在随机读取的场景下,无论带宽还是延迟指标,SSD都要比HDD快几十倍以上。所以在服务器中应用SSD,更主要解决的是随机IO的问题。所以如果你的服务器里存在过多的Page Cache,Raid卡缓存都兜不住的随机IO请求,那么请把HDD更换成SSD吧。

640?wx_fmt=png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK