現實中的I/O狀況
爲了更好的理解存儲系統中的I/O和其餘相關概念,能夠用現實中的春運時的火車站售票窗口的排隊現象,來形象的對比存儲系統中的I/O狀況:
火車站售票大廳:存儲系統
售票窗口:I/O通道。
每一個乘客到售票窗口購票:至關於一次I/O。【乘客告訴售票員,去哪裏,買幾張票,售票員確認,出票,乘客拿到車票,就至關於完成了一次I/O。而後排在隊伍中的下一位的乘客開始買票,重複這個過程】。
一段時間內,每位乘客購票的平均耗費時間:平均響應時間。比較廣泛的狀況是,每一個乘客買票的數量多的狀況下,是比買一張票所耗費的時間要多。若是乘客既要問詢票價,還要買到不一樣目的地的車票,所花的時間也會比只買一個目的地車票所花的時間多(這裏不考慮極端狀況。例如,售票員手上恰好有之前打印好的車票,並且正好是乘客所要購買的,那麼就會大大下降處理時間。這至關於存儲系統中,讀請求剛好命中了Cache中的數據,而沒必要再從磁盤讀數據)。
每一個乘客購票數量:每次IO所傳送的數據量。
對於排隊購票的乘客來講,他關心的是花多長時間才能儘快的排隊買上票,這時候影響他排隊時間的就是前面每一個購票者購票所花費的時間,只有這個時間越短,他才能儘快的買上票。
在存儲系統內就是,每一個IO響應時間越短,單位時間內的IOPS就越高。
對於鐵道部門來講,它根本不關心有多少人排隊購票,每一個購票者買票花費的時間。它只關心在一段時間內,例如整個春運時間段,它所售出的火車票的總數量。這個總體的數量,主要取決於每一個購票者購買的票數,其次才取決於每一個購票者平均買票花費的時間,另外還取決於同時有多少個窗口並行售票。
在存儲系統內就是,每一個IO的傳送的數據量越大,並行讀寫的數量越多,單位時間內存儲系統能夠提供的帶寬就越大。
在這個例子中,咱們能夠看到,乘客更關注於售票系統的平均響應時間,鐵道部門更關注於最大售票量(一段時間內的帶寬總和)。這就是從不一樣角度,來考量存儲的性能參數。 數據庫
批處理任務就是經過延時(響應時間)來提升總體吞吐量(單位時間內的任務處理量) 服務器
對於乘客來講,每一個乘客購買的票數多了(每一個IO傳送的數據量增長),可是所花的時間也長了,單位時間內,能買上票的乘客的數量反而會減小(IOPS減小),可是鐵道部門的售票總量仍是會線性增長(帶寬增長)。
這就相似於存儲系統中, IOPS和帶寬之間的關係:
寫入10000個1KB文件,用時10秒 Throught(帶寬)=1MB/s ,IOPS=1000
寫入1個1MB文件,用時0.1秒 Throught(帶寬)=10MB/s, IOPS=10
因而可知,
傳輸大容量連續數據,適合以帶寬爲標準,選擇高帶寬存儲系統
傳輸小塊、不連續數據,如OLTP、數據庫應用、郵件服務器等,適合以IOPS爲標準,選擇高IOPS存儲系統
以上所舉的例子,只是相似於存儲系統中順序I/O的狀況,實際存儲中的狀況還有隨機讀、隨機寫I/O等狀況,遠比這個例子複雜。這裏不作討論。但這個例子的一些結論,仍是能夠借鑑並有助於理解存儲I/O和性能、帶寬等之間的關係。 性能