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

2021-08-07 09:48:38 字數 3178 閱讀 4131

最重要的三個指標

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 類 很重要的乙個參考指標。從磁碟上進行資料讀取時,比較重要的幾個時間是 定址時間 找到資料塊的起始位置 旋轉時間 等待磁碟旋轉到資料塊的起始位置 傳輸時間 讀取資料的時間和返回的時間 其中定址時間...