相信大家都知道固態硬碟(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.搭載固態硬碟的服務器究竟比搭機械硬碟快多少?
我的公眾號是「開發內功修煉」,在這里我不是單純介紹技術理論,也不只介紹實踐經驗,而是把理論與實踐結合起來,用實踐加深對理論的理解、用理論提高你的技術實踐能力,歡迎你來關注我的公眾號,也請分享給你的好友~~~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/204509.html
標籤:其他
