說說IO(三) IO效能的重要指標

2021-08-10 10:56:03 字數 2972 閱讀 5657

最重要的三個指標

iops

iops,即每秒鐘處理的io請求數量。iops是隨機訪問型別業務(

oltp

類)很重要的乙個參考指標。

從磁碟上進行資料讀取時,比較重要的幾個時間是:定址時間(找到資料塊的起始位置),旋轉時間(等待磁碟旋轉到資料塊的起始位置),傳輸時間(讀取資料的時間和返回的時間)。其中定址時間是固定的(磁頭定位到資料的儲存的扇區即可),旋轉時間受磁碟轉速的影響,傳輸時間受資料量大小的影響和介面型別的影響(不用硬碟介面速度不同),但是在隨機訪問類業務中,他的時間也很少。因此,在硬碟介面相同的情況下,iops主要受限於定址時間和傳輸時間。以乙個15k的硬碟為例,定址時間固定為4ms,傳輸時間為60s/15000*1/2=2ms,忽略傳輸時間。1000ms/6ms=167個iops。

在沒有檔案系統、沒有vm(卷管理)、沒有raid、沒有儲存裝置的情況下,這個答案還是成立的。但是當這麼多中間層加進去以後,這個答案就不是這樣了。物理硬碟提供的io是有限的,也是整個io系統存在瓶頸的最大根源。所以,如果一塊硬碟不能提供,那麼多塊在一起並行處理,這不就行了嗎?確實是這樣的。可以看到,越是高階的儲存裝置的cache越大,硬碟越多,一方面通過cache非同步處理io,另一方面通過盤數增加,盡可能把乙個os的io分布到不同硬碟上,從而提高效能。檔案系統則是在cache上會影響,而vm則可能是乙個io分布到多個不同裝置上(striping)。

所以,乙個os的io在經過多個中間層以後,發生在物理磁碟上的io是不確定的。可能是一對乙個,也可能乙個對應多個

對單塊磁碟的iops的計算沒有沒問題,但是當系統後面接的是乙個儲存系統時、考慮不同讀寫比例,iops則很難計算,而需要根據實際情況進行測試。主要的因素有:  

當時上面n多因素混合在一起以後,iops的值就變得撲朔迷離了。所以,一般需要通過實際應用的測試才能獲得。 

io response time

即io的響應時間。io響應時間是從作業系統核心發出乙個io請求到接收到io響應的時間。因此,io response time除了包括磁碟獲取資料的時間,還包括了作業系統以及在儲存系統內部io等待的時間。一般看,隨iops增加,因為io出現等待,io響應時間也會隨之增加。對乙個oltp系統,10ms以內的響應時間,是比較合理的。下面是一些io效能示例:

需要注意,iops與io response time有著密切的聯絡。一般情況下,iops增加,說明io請求多了,io response time會相應增加。但是會出現iops一直增加,但是io response time變得非常慢,超過20ms甚至幾十ms,這時候的iops雖然還在提高,但是意義已經不大,因為整個io系統的服務時間已經不可取。

throughput

為吞吐量。這個指標衡量標識了最大的資料傳輸量。如上說明,這個值在順序訪問或者大資料量訪問的情況下會比較重要。尤其在大資料量寫的時候。

吞吐量不像iops影響因素很多,吞吐量一般受限於一些比較固定的因素,如:網路頻寬、io傳輸介面的頻寬、硬碟介面頻寬等。一般他的值就等於上面幾個地方中某乙個的瓶頸。

一些概念

io chunk size

即單個io操作請求資料的大小。一次io操作是指從發出io請求到返回資料的過程。io chunk size與應用或業務邏輯有著很密切的關係。比如像oracle一類資料庫,由於其block size一般為8k,讀取、寫入時都此為單位,因此,8k為這個系統主要的io chunk size。io chunk size

小,考驗的是io系統的iops能力;io chunk size大,考驗的時候io系統的io吞吐量。

queue deep

熟悉資料庫的人都知道,sql是可以批量提交的,這樣可以大大提高操作效率。io請求也是一樣,io請求可以積累一定資料,然後一次提交到儲存系統,這樣一些相鄰的資料塊操作可以進行合併,減少物理io數。而且queue deep如其名,就是設定一起提交的io請求數量的。一般queue deep在io驅動層面上進行配置。

queue deep與iops有著密切關係。queue deep主要考慮批量提交io請求,自然只有iops是瓶頸的時候才會有意義,如果io都是大io,磁碟已經成瓶頸,queue deep意義也就不大了。一般來說,iops的峰值會隨著queue deep的增加而增加(不會非常顯著),queue deep一般小於256。

隨機訪問(隨機io)、順序訪問(順序io

隨機訪問的特點是每次io請求的資料在磁碟上的位置跨度很大(如:分布在不同的扇區),因此n個非常小的io請求(如:1k),必須以n次io請求才能獲取到相應的資料。

順序訪問的特點跟隨機訪問相反,它請求的資料在磁碟的位置是連續的。當系統發起n個非常小的io請求(如:1k)時,因為一次io是有代價的,系統會取完整的一塊資料(如4k、8k),所以當第一次io完成時,後續io請求的資料可能已經有了。這樣可以減少io請求的次數。這也就是所謂的預取。

選取合理的觀察指標:

以上各指標中,不用的應用場景需要觀察不同的指標,因為應用場景不同,有些指標甚至是沒有意義的。

隨機訪問和iops: 在隨機訪問場景下,iops往往會到達瓶頸,而這個時候去觀察throughput,則往往遠低於理論值。

順序訪問和throughput:在順序訪問的場景下,throughput往往會達到瓶頸(磁碟限制或者頻寬),而這時候去觀察iops,往往很小。

說說IO(三) IO效能的重要指標

最重要的三個指標 iops iops,即每秒鐘處理的io請求數量。iops是隨機訪問型別業務 oltp類 很重要的乙個參考指標。從磁碟上進行資料讀取時,比較重要的幾個時間是 定址時間 找到資料塊的起始位置 旋轉時間 等待磁碟旋轉到資料塊的起始位置 傳輸時間 讀取資料的時間和返回的時間 其中定址時間是...

說說IO(三) IO效能的重要指標

最重要的三個指標 iops iops 即每秒鐘處理的 io 請求數量。iops 是隨機訪問型別業務 oltp 類 很重要的乙個參考指標。從磁碟上進行資料讀取時,比較重要的幾個時間是 定址時間 找到資料塊的起始位置 旋轉時間 等待磁碟旋轉到資料塊的起始位置 傳輸時間 讀取資料的時間和返回的時間 其中定...

IO效能的重要指標

最重要的三個指標 iops iops,即每秒鐘處理的io請求數量。iops是隨機訪問型別業務 oltp 類 很重要的乙個參考指標。從磁碟上進行資料讀取時,比較重要的幾個時間是 定址時間 找到資料塊的起始位置 旋轉時間 等待磁碟旋轉到資料塊的起始位置 傳輸時間 讀取資料的時間和返回的時間 其中定址時間...