IOPS和頻寬對儲存效能指標的影響
原文出處:http://975220.blog.51cto.com/965220/531449/
說起儲存產品的評價,效能永遠是第一重要的問題。關於效能的各種指標實在五花八門:頻寬(Bandwidth)、IOPS、順序(Sequential)讀寫、隨機(Random)讀寫、持續吞吐(Sustained Throughput)、突發處理能力(Burst I/O)等等看似甚為專業的名詞充斥著解決方案和技術分析報告。儲存產品的效能似乎被量化得格外清晰,作為使用者,只需要簡單的比較兩個數字,就可以清楚的得出孰優孰劣的結論。然而,事實果真如此嗎?
就讓我們走進那些五花八門的指數背後,去看看效能的真實面目。
1、頻寬與I/O
這是兩個衡量儲存裝置效能最基本的概念,明確的區分兩者也是對儲存產品效能瞭解的第一步。如果我們把儲存裝置比做一間會議室,被存取的資料就是前來參加會議或從會議中離開的人,那麼頻寬效能就是指這間會議室大門的寬度,大門越寬,可以同時進出的人也就越多,而I/O效能是指房門開合的頻繁程度,迎來一批前來參加會議的人,就需要開啟一次大門,送走一批人也是一樣,哪怕這“一批人”其實只是一個人。由此可見,當我們考察會議室的門設計得是否合理時,必須結合會議本身的性質。
對紀律嚴明的會議來說,與會者輕易不會凌亂的進出會場,人們在會議開始時統一進入,結束時再統一離開。對這種情況,門的寬度就十分重要,而是否易於開合則顯得不那麼關鍵,反正這扇門在整個會議中只需要開合兩次而已。相反的,對於聯歡性質的聚會而言,門設計得太寬除了顯得氣派之外,並沒有什麼實際的意義,但是門開合的頻率卻很重要,因為會有客人頻繁的進進出出。
對應到儲存裝置上,道理也是一樣。大檔案持續傳輸型的應用需要的是充分的頻寬效能,而小檔案隨機讀寫的應用則要求足夠的I/O能力。
2、影響效能的因素
當然,僅看產品彩頁中的簡單數字還是遠遠不夠的。儲存裝置的標稱指數只是其最最理想情況下的表現,而實際應用中,儲存裝置表現出的處理能力往往與其標稱指數相去甚遠。為了反映更多的細節,會議室的比喻不足以說明問題。所以我們前面的例子再改進一下,把儲存裝置看作一棟有很多房間的大廈。人們從門口進入大廈,先來到大堂,經過走廊,最後到達房間。人們進大廈的方式也分為兩種:一種是所有人按房間號碼順序排好隊,一起進入大廈,我們稱之為“順序進入”;另一種是他們無規律的自由進入,我們稱為“隨即進入”。
顯而易見,“順序進入”的效率要大大高於“隨即進入”。這就說明,一般情況下,順序讀寫的效能要遠高於隨即讀寫的效能。還有一個結論也不難得出,一個寬敞的大堂更有利於偶然性較大的“隨機進入”,而對“順序進入”的人群而言,經過大堂基本屬於浪費時間。儲存裝置中的“大堂”就是快取記憶體。
還記得前面討論的頻寬和I/O的差別嗎?頻寬考察的是單位時間進入大廈的人數,而I/O關心的是單位時間進出大廈的批次。從次可見,如果走廊沒有任何變化,那麼大堂只要不是太小,就不會影響頻寬效能。相對的,對I/O效能而言,大堂顯然是越大越好。總之,影響頻寬的因素主要是前端控制器(大門)和後端磁碟通道(走廊)的頻寬;而影響I/O的因素主要是控制器(大門)處理能力和快取記憶體(大堂)容量。
當然,前面的討論都基於一個假設前提:磁碟(房間)足夠多。如若只配置寥寥幾個磁碟,它們就會成為整個系統的效能瓶頸。任憑其他配置如何奢華,也於事無補。那麼,“足夠多”又是多少呢?對光纖通道儲存裝置來說,每個光纖通道上的磁碟數量達到50~60個的時候效能達到最佳。所以一般中高階儲存裝置都把每通道50~60個磁碟設計為擴充套件極限,而不是光纖通道技術規定的126個。
圖1. 磁碟數量影響光纖環路效能
這樣設計儲存產品,可以讓系統的效能隨著容量的增加而增長。但是同時,使用者必須明白,在容量沒有配置到最大值的時候,效能就無法達到廠商所宣稱的指標。一些廠商還宣告其產品的效能可以隨著容量的增長而線性增長,按這樣講,當你的儲存裝置只配置了最大容量的一半時,你得到的效能也只有系統最佳效能的一半。
3、效能曲線
這裡所說的“最佳效能”就是廠商所宣稱的指數嗎?很遺憾,答案是不一定,一般都不是,而且可能會相差很遠!我已經聽到有人在叫“天啊!那廠商公佈的數字到底有什麼意義啊。”別急,看到下面兩個圖示就清楚了。
圖2. IOPS效能曲線示例
圖3. 頻寬效能示例
這兩個圖示是典型的儲存裝置效能實測曲線,所有曲線來自同一個儲存裝置的同一個配置。不同產品在縱向指標上表現各異,但曲線的形狀都大體相同。從圖上可以看出,使用者環境中儲存裝置的效能表現嚴重依賴資料塊的大小。以順序讀取操作為例,如果應用產生的資料塊大小在8KB左右,那麼頻寬效能和I/O效能最多也只能達到峰值效能的一半左右。如果希望得到更好的I/O效能,就需要儘量將資料塊調整得更小。但不幸的是,如果希望頻寬效能更好,就需要想辦法把資料塊設定得更大。看來,頻寬與I/O效能是魚與熊掌,難以兼得啦。
不過沒關係,如我們前面提到的,幸好大多數使用者其實只需要其中一種效能。要麼是大檔案型別的應用,需要頻寬效能;抑或是小檔案型別應用,需要I/O能力。需要頻寬的使用者相對容易得到滿足。從圖3可以看出,只要資料塊大於128KB,順序讀的效能就基本可以達到系統飽和值。對順序寫,飽和資料塊略大一些,但256KB也不算難以達到的尺寸。
得到最佳的I/O效能似乎就沒那麼容易了。從圖2的曲線來看,I/O效能並沒有一個飽和狀態,這就要求資料塊無窮盡的儘量小。然而所有應用都不可能支援無窮小的資料塊。實際上,大多數的資料庫應用產生的資料塊都在2KB或4KB左右。在這個尺度上,應用得到的效能距離最高效能還有至少20~30%的空間呢。
4、持續和突發
回到我們那個關於大廈的例子。如果大廈臨時發生緊急情況,比如火災,人們爭先恐後的蜂擁在門口,景象一定是一片混亂。在實際應用中,儲存系統也可能遭遇類似的情況,一時間大量資料同時被訪問,造成系統嚴重堵塞。這就像儲存系統內的交通高峰,往往需要類似交通管制的手段才能提高系統效率。一些廠商會宣稱他們的產品在這種情況下的“交通管制”能力有多強,以致可以從容應付大規模的突發訪問。諸如“全交換結構”、“直接矩陣結構”等技術均屬此類。究其本質,這些“交通管制”都是在大堂(快取記憶體)的設計上做文章,將原本一個公共大堂的結構變成若干獨立大堂的結構。以此來避免火災發生時,所有人都擁擠到一個大堂裡。
這樣設計的確可在訪問突然爆發時緩解系統壓力,但是需要注意,這樣設計的大廈內部一定佈滿了各種指示牌和路標,對任何一個進入大廈的人而言,進入房間的過程都將變得更復雜。其結果就是,非突發狀態下,系統的持續讀寫能力往往還不如同等計算能力的簡單結構儲存。
5、其他影響
除了前面所談到諸多方面外,還有很多因素都會影響到儲存裝置在實際執行中的效能。例如RAID級別的設定、磁碟型別甚至型號批次的匹配、快取的映象、SCSI指令佇列深度的設定,這些方面都與效能結果直接相關。而且,為了能夠得到最好的效能指數,幾乎所有的廠商在測試自己產品效能的時候都會採用無冗餘的RAID0、選用15k rpm的高速磁碟、將寫快取映象保護關閉或者乾脆關閉寫快取、將指令佇列深度設定為最大。如此配置方式相信不是每個使用者都可以接受的。
另外,所有儲存裝置在執行快照或遠端映象等附加功能之後,效能都會明顯下降,有些情況甚至會下降60%之多。如果使用者的應用恰巧需要這些附加功能,就需要在選用儲存裝置之前認真的實地測量一下真實效能。免得滿懷希望的買回家,使用起來卻失望至極。
結論和建議
想要知道梨子的滋味,最好的辦法就是親自嘗一嘗。對儲存裝置,這個道理尤其重要。只有在使用者需要的配置方式下,在實際的應用系統中,實實在在的執行之後,使用者才能真正清楚的感知儲存裝置的真實效能表現。紙上談兵只怕會使使用者在各種資料中迷失方向,難以做出正確結論。
相關推薦
IOPS和頻寬對儲存效能指標的影響
原文出處:http://975220.blog.51cto.com/965220/531449/ 說起儲存產品的評價,效能永遠是第一重要的問題。關於效能的各種指標實在五花八門:頻寬(Bandwidth)、IOPS、順序(Sequential)讀寫、隨機(Random)讀寫、持續吞吐(Susta
IOPS和頻寬對儲存效能的影響?
說 起儲存產品的評價,效能永遠是第一重要的問題。關於效能的各種指標實在五花八門:頻寬(Bandwidth)、IOPS、順序(Sequential)讀 寫、隨機(Random)讀寫、持續吞吐(Sustained Throughput)、突發處理能力(Burst I/O)等等
從矩陣乘法來看-O優化和ijk執行順序對程式效能的影響
從矩陣乘法來看-O優化和ijk執行順序對程式效能的影響 根據計算矩陣乘積的c程式,主要想做想做兩件事情: 統計採用不同的優化選項編譯程式所用的時間,感受-O優化帶來的效能提升。 看看矩陣乘法中不同迴圈順序對程式效能的影響: 改變三重迴圈的順序,統
【MYSQL】CPU資源和可用記憶體大小對資料庫效能的影響
前言 可能影響到資料庫效能的幾個點,其一就是伺服器硬體,也是本節要說的CPU與可用記憶體。 引入 當熱資料超過可用記憶體大小,MemCache儲存引擎快取層容易失效(當快取大量失效時,容易產生大量的網路傳輸),從而影響伺服器的效能。 當出現這類I/O系統瓶頸時,我們
儲存效能指標--iops
IOPS是指單位時間內系統能處理的I/O請求數量,一般以每秒處理的I/O請求數量為單位。隨機讀寫頻繁的應用,如OLTP(Online Transaction Processing),IOPS是關鍵衡
聯合國釋出AI報告:自動化和AI對亞洲有巨大影響
本文來自網易智慧(公眾號 smartman163) 選自 | 聯合國開發計劃署 編譯 | nariiy、小小; 科技的飛速發展將深刻地影響社會變革,第四次工業革命以人工智慧、自動化和生物科技等
說出ArrayList, LinkedList 和Vector的儲存效能和特性
ArrayList和Vector都是使用陣列方式儲存資料,此陣列元素數大於實際儲存的資料以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及陣列元素移動等記憶體操作,所以索引資料快而插入資料慢 Vector由於使用了synchronized方法
使用jvisualvm監控JAVA程式,注意對程式效能的影響
最近在使用阿里的Dubbo【http://code.alibabatech.com/wiki/display/dubbo/Home-zh】做一個實時分析功能,為了提高效能,對程式進行了很多的優化工作,在此過程中JDK中的jvisualvm的確功勞不小,但是也有讓
C++11:互斥鎖對程式效能的影響
在多執行緒中,對資料的保護機制,我們用到了互斥量、臨界區、讀寫鎖、條件變數等方法。一直以來都有些擔心鎖會降低程式的效能,儘管它是必須的,但究竟它能降低多少呢?那只有靠資料說話,下面的程式碼是2個執行緒同時操作一個變數:class TestA { public: explic
以矩陣乘法為例 瞭解cpu cache對程式效能的影響
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 /*square1.cpp*//*未經優化的矩陣乘法程式*/#include <i
以矩陣乘法為例,瞭解cpu cache對程式效能的影響
/*square1.cpp*/ /*未經優化的矩陣乘法程式*/ #include using namespace std; #define N 1000 int a[N][N] = {0}, b[N][N] = {0}, c[N][N] = {0}; int main()
淺談索引對資料庫效能的影響
大家都知道,對於資料庫來說,常見的瓶頸問題多是CPU or IO過高造成的,如果能夠有效的解決這兩個問題,那麼的確是功德可見的,那麼業界現在也有很多的方式在達到這樣的目的,比如:在DB層的前面加一箇中間層:例如:memcached。做DB的資料快取,然後從一定程度上減少熱
SQL對程式效能的影響
【先思考一個問題:聾子和瞎子在一起會有什麼結果?】 昨天寫程式,有個小模組是通過分析數十萬條記錄,與異構的資料表進行比對,找出符合條件的資訊。 在第一條查詢中,需要查詢所有記錄的一個欄位,並提取該欄位中的第5至第10個字串,要與異構資料表比較的就是這個字串。在最初的版本中
磁碟IOPS和頻寬(throughput)
SAN和NAS儲存一般都具備2個評價指標:IOPS和頻寬(throughput),兩個指標互相獨立又相互關聯。體現儲存系統性能的最主要指標是IOPS。 IOPS (Input/Output Per Second)即每秒的輸入輸出量(或讀寫次數),是衡量磁碟效能的主
區塊鏈和人工智慧對普通人有什麼影響
說到人工智慧對我們普通人生活的影響,相信大家都能感受到。指紋識別,人臉識別,視網膜識別,虹膜識別,專家系統,智慧搜尋,定理證明等等。可以說人工智慧活躍在各個領域,幫助人類高效的處理繁雜枯燥、技術含量較低的重複性工作。“人工智慧”的概念正在一步步走入現實。以前所未有的態
Sort_Buffer_Size 設定對伺服器效能的影響
250 K [[email protected] tmp]# mysqlslap -uroot -h127.0.0.1 -q ' select sql_no_cache * from sbtest order by pad limit 1' -c 100 --create-schema=test
小師妹學JVM之:cache line對程式碼效能的影響
[toc] # 簡介 讀萬卷書不如行萬里路,講了這麼多assembly和JVM的原理與優化,今天我們來點不一樣的實戰。探索一下怎麼使用assembly來理解我們之前不能理解的問題。 # 一個奇怪的現象 小師妹:F師兄,之前你講了那麼多JVM中JIT在編譯中的效能優化,講真的,在工作中我們真的需要知道
關於IOPS指標對效能的影響
1.2 示例 Device Type IOPS Interface Notes 7,200 rpm SATA drives HDD ~75-100 IOPS[2] SATA 3 Gb/s 10,000 rpm SA
測試go多協程併發寫入記憶體和磁碟對效能的影響
最近希望能把一些過程,由傳統的順序執行改變成併發執行,看這樣的優化是否能帶來效能的提高。於是寫了幾個test來測試帶來的影響。 測試的環境為mac pro,2.3 GHz Intel Core i5(雙核),16GB記憶體。 (1)先測試併發寫入記憶體是否能夠得到效能的提高
mysql的儲存引擎innodb、myisam對插入影響和索引對插入的影響
前言 一直好奇mysql的儲存引擎innodb和myisam對插入影響和索引對插入的影響。 這次我就來做個測試,以下測試供大家參考。 drop table userinfo; CREATE TAB