IO系統性能之一:衡量性能的幾個指標(下)。

 傳輸速度(Transfer Rate)/吞吐率(Throughput)

  現在我們要說的傳輸速度(另一個常見的說法是吞吐率)不是磁盤上所表明的最大傳輸速度或者說理想傳輸速度,而是磁盤在實際使用的時候從磁盤系統總線上流過的數據量。有了IOPS數據之後我們是很容易就能計算出對應的傳輸速度來的
  Transfer Rate = IOPS * IO Chunk Size
  還是那上面的第一組IOPS的數據我們可以得出相應的傳輸速度如下
  4K: 140 * 4K = 560K / 40M = 1.36%
  8K: 139 * 8K = 1112K / 40M = 2.71%
  16K: 135 * 16K = 2160K / 40M = 5.27%
  32K: 116 * 32K = 3712K / 40M = 9.06%
  可以看出實際上的傳輸速度是很小的,對總線的利用率也是非常的小。
  這裏一定要明確一個概念,那就是儘管上面我們使用IOPS來計算傳輸速度,但是實際上傳輸速度和IOPS是沒有直接關係,在沒有緩存的情況下它們共同的決定因素都是對磁盤系統的訪問方式以及單個IO的大小。對磁盤進行隨機訪問時候我們可以利用IOPS來衡量一個磁盤系統的性能,此時的傳輸速度不會太大;但是當對磁盤進行連續訪問時,此時的IOPS已經沒有了參考的價值,這個時候限制實際傳輸速度卻是磁盤的最大傳輸速度。因此在實際的應用當中,只會用IOPS來衡量小IO的隨機讀寫的性能,而當要衡量大IO連續讀寫的性能的時候就要採用傳輸速度而不能是IOPS了。
 IO響應時間(IO Response Time)
  最後來關注一下能直接描述IO性能的IO響應時間。IO響應時間也被稱爲IO延時(IO Latency),IO響應時間就是從操作系統內核發出的一個讀或者寫的IO命令到操作系統內核接收到IO迴應的時間,注意不要和單個IO時間混淆了,單個IO時間僅僅指的是IO操作在磁盤內部處理的時間,而IO響應時間還要包括IO操作在IO等待隊列中所花費的等待時間。
  計算IO操作在等待隊列裏面消耗的時間有一個衍生於利托氏定理(Little’s Law)的排隊模型M/M/1模型可以遵循,由於排隊模型算法比較複雜,到現在還沒有搞太明白(如果有誰對M/M/1模型比較精通的話歡迎給予指導),這裏就羅列一下最後的結果,還是那上面計算的IOPS數據來說:
  8K IO Chunk Size (135 IOPS, 7.2 ms)
  135 => 240.0 ms
  105 => 29.5 ms
  75 => 15.7 ms
  45 => 10.6 ms
  64K IO Chunk Size(116 IOPS, 8.6 ms)
  135 => 沒響應了……
  105 => 88.6 ms
  75 => 24.6 ms
  45 => 14.6 ms
  從上面的數據可以看出,隨着系統實際IOPS越接近理論的最大值,IO的響應時間會成非線性的增長,越是接近最大值,響應時間就變得越大,而且會比預期超出很多。一般來說在實際的應用中有一個70%的指導值,也就是說在IO讀寫的隊列中,當隊列大小小於最大IOPS的70%的時候,IO的響應時間增加會很小,相對來說讓人比較能接受的,一旦超過70%,響應時間就會戲劇性的暴增,所以當一個系統的IO壓力超出最大可承受壓力的70%的時候就是必須要考慮調整或升級了。
  另外補充說一下這個70%的指導值也適用於CPU響應時間,這也是在實踐中證明過的,一旦CPU超過70%,系統將會變得受不了的慢。很有意思的東西。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章