標籤:時間 層級 檢查 間隔 mod time 資料 實用 分區
當看到I/O等待時間所佔CPU時間的比重非常高的時候,首先要檢查的就是機器是否正在大量使用交換空間。由於硬碟操作的速度遠遠低於RAM,所以當系統記憶體耗盡。開始使用交換空間的時候,系統的效能會受到嚴重影響。
不論什麼想要訪問硬碟的操作都要完畢與硬碟的I/O交換。所以。故障排除的第一步是看記憶體是否耗盡。假設是,先解決問題。
假設還有大量可用的RAM。你須要明白那個進程佔用了大部分I/O操作。
在你非常難弄明確究竟是哪個進程佔用了大量I/O資源,使用iostat能夠找到是哪個分區運行大量I/O操作。
iostat的使用
最上面顯示的是1個cpu,64位系統。linux核心版本號碼
avg-cpu段:
%user: 在使用者層級執行所使用的CPU的百分比
%nice: nice操作所使用的CPU的百分比
%system: 在系統層級(kernel)執行所使用CPU的百分比
%iowait: CPU等待硬體I/O時,所佔用CPU百分比
%idle: CPU空暇時間的百分比
Device段:
sda:裝置名稱
tps: 每秒鐘發送到的I/O請求數.
Blk_read /s: 每秒讀取的資料量
Blk_wrtn/s: 每秒寫入的資料量.
Blk_read: 讀入的總的資料量
Blk_wrtn: 寫入的總的資料量
iostat各個參數說明:
-c 僅顯示CPU統計資訊.與-d選項相互排斥.
-d 僅顯示磁碟統計資訊.與-c選項相互排斥.
-k 以K為單位顯示每秒的磁碟請求數,預設單位塊.
-p device | ALL
與-x選項相互排斥,用於顯示塊裝置及系統磁碟分割的統計資訊.也能夠在-p後指定一個裝置名稱,如:
# iostat -p hda
或顯示全部裝置
# iostat -p ALL
-t 在輸出資料時,列印搜集資料的時間.
-V 列印版本和協助資訊.
-x 輸出擴充資訊.
iostat後加一個數字
iostat 4 表示每隔4秒就重新整理一次
iotop的使用
--version 顯示版本然後退出
-h, --help 顯示協助然後退出
-o, --only 僅僅顯示正在產生I/O的進程或線程。除了傳參。能夠在執行過程中按o生效。
-b, --batch 非互動模式,一般用來記錄日誌
-n NUM, --iter=NUM 設定監測的次數。預設無限。在非互動模式下非常實用
-d SEC, --delay=SEC 設定每次監測的間隔,預設1秒,接受非整形資料比如1.1
-p PID, --pid=PID 指定監測的進程/線程
-u USER, --user=USER 指定監測某個使用者產生的I/O
-P, --processes 僅顯示進程,預設iotop顯示全部線程
-a, --accumulated 顯示累積的I/O,而不是頻寬
-k, --kilobytes 使用kB單位,而不是對人友好的單位。在非互動模式下,指令碼編程實用。
-t, --time 加上時間戳記,非互動非模式。
-q, --quiet 禁止頭幾行,非互動模式。
有三種指定方式。
-q 僅僅在第一次監測時顯示列名
-qq 永遠不顯示列名。
-qqq 永遠不顯示I/O匯總。
查看系統的I/O使用iostat命令而使用iotop能夠依據I/O統計資訊排序,追蹤到詳細的進程