搭載固態硬盤的服務器究竟比機械硬盤快多少

相信你們都知道固態硬盤(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。oop

先來看一下機械硬盤:性能

file

在固態硬盤下:
file測試

這個數據看來,在順序IO狀況下,其實搭載HDD的服務器IO性能並無被搭載ssd的落下太多。這是由於對象

  • 順序IO的狀況下,RAID卡的命中率高,尤爲是設置了RAID預取
  • 自己順序IO也是機械磁盤工做最擅長的狀態

因此,現代在服務器領域裏,SSD只是應用愈來愈多了,但並無可以全面替代HDD。緣由之一是由於機械硬盤的順序IO其實並不慢,再加上Raid的加持,因此還有很大的市場佔比。
比較完了順序IO,咱們再來比較另一個應用場景,隨機IO。blog

隨機讀取PK

還記得開頭的fio壓測參數中咱們把Page Cache給禁用了,再加上測試文件的大小定的是100GB,這個大大超過了Raid卡的緩存大小。因此基於這個前提下的隨機IO,各級緩存基本都失去用武之地了,IO表現速度就徹底看硬盤自身了。內存

在《機械硬盤隨機IO慢的超乎你的想象》中,咱們看來機械硬盤的隨機IO的表現真的是太糟糕了。

file

再來看搭載SSD的服務器IO表現:

file

對比來看,機械硬盤的隨機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吧。


file


開發內功修煉之硬盤篇專輯:


個人公衆號是「開發內功修煉」,在這裏我不是單純介紹技術理論,也不僅介紹實踐經驗。而是把理論與實踐結合起來,用實踐加深對理論的理解、用理論提升你的技術實踐能力。歡迎你來關注個人公衆號,也請分享給你的好友~~~

相關文章
相關標籤/搜索