定位iowait問題

2021-08-19 21:36:53 字數 2771 閱讀 3769

先簡單描述下常用的磁碟效能指標,用來指導iowait問題分析定位

指標描述

每秒 i/o 數

一次磁碟的連續讀或者連續寫稱為一次磁碟 i/o, 磁碟的 iops =每秒磁碟連續讀次數+每秒磁碟連續寫次數。傳輸小塊不連續資料時,參考該指標進行衡量

吞吐量硬碟傳輸資料流的速度,傳輸資料速度=讀出資料+寫入資料。傳輸大塊不連續資料的資料,參考該指標進行衡量

平均 i/o 資料尺寸

為吞吐量除以 i/o 數目,該指針對揭示磁碟使用模式有重要意義。資料尺寸小於 32k,可認為磁碟使用模式以隨機訪問為主;反之,可認為磁碟使用模式以順序訪問為主。

磁碟活動時間百分比

即磁碟利用率。如果磁碟利用率超過 70%,應用程序將花費較長的時間等待 i/o完成,因為絕大多數程序在等待過程中將被阻塞或休眠。

服務時間

指磁碟讀或寫操作執行的時間,包括尋道,旋轉時延,和資料傳輸等時間。其大小一般和磁碟效能有關,cpu/mem的負荷也會對其有影響,請求過多也會間接導致服務時間的增加。如果該值持續超過 20ms,一般可考慮會對上層應用產生影響。

i/o 等待佇列長度

指待處理的 i/o 請求的數目,如果 i/o 請求壓力持續超出磁碟處理能力,該值將增加。需要注意的是,如果該磁碟為磁碟陣列虛擬的邏輯驅動器,需要再將該值除以組成這個邏輯驅動器的實際物理磁碟數目,以獲得平均單塊硬碟的i/o 等待佇列長度

等待時間

指磁碟讀或寫操作等待執行的時間,即在佇列中排隊的時間。如果 i/o 請求持續超出磁碟處理能力,意味著來不及處理的 i/o 請求不得不在佇列中等待較長時間。

是系統因為io導致的程序wait。系統在做io,導致沒有程序在幹活,cpu在執行idle程序空轉。

所以iowait的產生要滿足兩個條件:

iowait實際測量的是cpu時間

linux常用命令中有很多都具備該選項:top、sar、vmstat、mpstat、dstat等等

查詢哪塊磁碟正在被寫入

iostat

命令詳解可以參考 linux命令—iostat

查詢引起高i/o wait 對應的程序

iotop

命令詳解可參考 linux命令—iotop

查詢哪個檔案引起的i/owait

lsof -p pid

命令詳解可參考 linux命令—lsof

lsof 命令可以展示乙個程序開啟的所有檔案,或者開啟乙個檔案的所有程序

pt-ioprofile定位負載**檔案(完全可以替代3)

pt-ioprofile的原理是對某個pid附加乙個strace程序進行io分析

預設引數下該工具展示的是io占用的時間

[root@db25440 ~]# pt-ioprofile -p=25129

thu may 17

18:48:35 cst 2018

tracing process id 25129

total pwrite write fsync fdatasync open filename

11.709016

0.000000

2.634413

0.000000

9.074603

0.000000 /my/log/mysql-bin.001200

9.093400

2.966219

0.000000

6.127181

0.000000

0.000000 /my/base/ib_logfile3

0.000419 0.000000

0.000000

0.000000

0.000000

0.000419 /dev/urandom

[root@db25440 ~]#

對於定位問題更有用的是通過io的吞吐量來進行定位。使用引數 –cell=sizes,該引數將結果已 b/s 的方式展示出來

[root@db25440 ~]# pt-ioprofile -p=25129 -c=sizes

thu may 17

18:49:25 cst 2018

tracing process id 25129

total pwrite write fsync fdatasync open filename

40917504

4091750400

00 /my/base/ib_logfile3

14300748

01430074800

0 /my/log/mysql-bin.00120000

0000 /dev/urandom

[root@db25440 ~]#

如果正常執行iowait並不高,突然間高了,可能是系統訪問量大了,最大的可能是磁碟滿了~

當i/o等待時間所佔cpu時間的比重很高時,首先檢查機器是否正在大量使用交換空間,因為硬碟操作的速度遠遠低於ram,所以當系統記憶體耗盡,開始使用交換空間的時候,系統的效能會受到嚴重影響。任何想要訪問硬碟的操作都要完成與硬碟的i/o交換。所以,故障排除的第一步是看記憶體是否耗盡,如果是,先解決這個問題。如果還有大量可用的ram,需要明確哪個程序占用了大部分i/o操作。

高速cpu會造成很高的iowait值,但這並不代表磁碟是系統的瓶頸。唯一能說明磁碟是系統瓶頸的方法,就是很高的read/write時間,一般來說超過20ms(這個具體計算一下~linux命令—iostat),就代表了不太正常的磁碟效能。

定位IOWait高的一些方法和工具

定位iowait高的一些方法和工具 在linux效能分析時經常使用的工具包括 top,iostat,vmstat等 iowait高的一些處理方法 1 檢查raid的狀態,比如是否正在重建或者沒有初始化 2 替換作業系統的核心,最好使用發行版標準的linux kernel,因為有比較多的補丁 3 檢查...

CSS定位問題

在看這篇文章是,希望大家對css盒式模型有所了解,不清楚的點這裡。一 定位概述 在說明定位問題前,我們先聊聊div這個元素。通常我們把p h1或div元素常常稱為塊級元素。這意味著這些元素顯示為一塊內容,即 塊框 塊框從上到下乙個接乙個地垂直排列。與之相反,strong和span等元素稱為行內元素,...

絕對定位問題

一 使用絕對定位元素水平居中 1.需要設定高度 高度已知 element2.css3 transform代替margin,不過瀏覽器對其支援度低 ie10以上,高度可以不設定 element 3.margin 0 auto居中 top right bottom left均為0,高度可以不設定 ele...