中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux下IO監控與分析的案例

發布時間:2021-10-27 11:47:50 來源:億速云 閱讀:132 作者:小新 欄目:系統運維

這篇文章給大家分享的是有關Linux下IO監控與分析的案例的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1 、系統級IO監控

1.1、iostat

iostat -xdm 1 # 個人習慣

Linux下IO監控與分析的案例

%util 代表磁盤繁忙程度。100% 表示磁盤繁忙, 0%表示磁盤空閑。但是注意,磁盤繁忙不代表磁盤(帶寬)利用率高

argrq-sz 提交給驅動層的IO請求大小,一般不小于4K,不大于max(readahead_kb, max_sectors_kb)

可用于判斷當前的IO模式,一般情況下,尤其是磁盤繁忙時, 越大代表順序,越小代表隨機

svctm 一次IO請求的服務時間,對于單塊盤,完全隨機讀時,基本在7ms左右,既尋道+旋轉延遲時間

1.2、各統計量之間關系

%util = ( r/s + w/s) * svctm / 1000 # 隊列長度 = 到達率 * 平均服務時間

avgrq-sz = ( rMB/s + wMB/s) * 2048 / (r/s + w/s) # 2048 為 1M / 512

1.3、總結

iostat 統計的是通用塊層經過合并(rrqm/s,  wrqm/s)后,直接向設備提交的IO數據,可以反映系統整體的IO狀況,但是有以下2個缺點:

  • 距離業務層比較遙遠,跟代碼中的write,read不對應(由于系統預讀 + pagecache + IO調度算法等因素, 也很難對應)

  • 是系統級,沒辦法精確到進程,比如只能告訴你現在磁盤很忙,但是沒辦法告訴你是誰在忙,在忙什么?

2 、進程級IO監控

2.1、 iotop 和 pidstat (僅rhel6u系列)

iotop 顧名思義, io版的top

pidstat 顧名思義, 統計進程(pid)的stat,進程的stat自然包括進程的IO狀況

這兩個命令,都可以按進程統計IO狀況,因此可以知道:

1)當前系統哪些進程在占用IO,百分比是多少?

2)占用IO的進程是在讀?還是在寫?讀寫量是多少?

pidstat 參數很多,介紹幾個比較常用的:

pidstat -d 1 #只顯示IO

Linux下IO監控與分析的案例

pidstat -u -r -d -t 1
  • # -d IO 信息,

  • # -r 缺頁及內存信息

  • # -u CPU使用率

  • # -t 以線程為統計單位

  • # 1 1秒統計一次

  • iotop, 很簡單,直接敲命令

Linux下IO監控與分析的案例

2.2、block_dump, iodump

iotop 和 pidstat 都依賴于/proc/pid/io文件導出的統計信息, 這個對于老一些的內核是沒有的,比如rhel5u2。

因此只好用以上2個命令來替代:

echo 1 > /proc/sys/vm/block_dump # 開啟block_dump,此時會把io信息輸入到dmesg中

# dmesg

watch -n 1 "dmesg -c | grep -oP "w+(d+): (WRITE|READ)" | sort | uniq -c"

Linux下IO監控與分析的案例

# 不停的dmesg -c

echo 0 > /proc/sys/vm/block_dump # 不用時關閉

Linux下IO監控與分析的案例

2.3、總結

從進程級IO監控 ,可以看出:

  • 系統級IO監控不能回答的2個問題

  • 距離業務層相對較近(例如,可以統計進程的讀寫量)

但是也沒有辦法跟業務層的read,write聯系在一起,同時顆粒度較粗,沒有辦法知道當前進程讀寫了哪些文件? 耗時? 大小 ?

3、 業務級IO監控

3.1、ioprofile

ioprofile 命令本質上是 lsof + strace,

ioprofile 可以解決以下三個問題:

  • 當前進程某時間內,在業務層面讀寫了哪些文件(read, write)?

  • 讀寫次數是多少?(read, write的調用次數)

  • 讀寫數據量多少?(read, write的byte數)

3.2、實例

假設某個行為會觸發程序一次IO動作,例如: "一個頁面點擊,導致后臺讀取A,B,C文件"

./io_event # 假設模擬一次IO行為,讀取A文件一次, B文件500次, C文件500次

ioprofile -p `pidof io_event` -c count # 讀寫次數

Linux下IO監控與分析的案例

ioprofile -p `pidof io_event` -c times # 讀寫耗時

Linux下IO監控與分析的案例

ioprofile -p `pidof io_event` -c sizes # 讀寫大小

Linux下IO監控與分析的案例

注: ioprofile 僅支持多線程程序,對單線程程序不支持. 對于單線程程序的IO業務級分析,strace足以。

3.3、總結

ioprofile本質上是strace,因此可以看到read,write的調用軌跡,可以做業務層的io分析。

4 、文件級IO監控

文件級IO監控可以配合/補充"業務級和進程級"IO分析

文件級IO分析,主要針對單個文件, 查看當前哪些進程正在對某個文件進行讀寫操作.

  • lsof 或者 ls /proc/pid/fd

  • inodewatch.stp

4.1、lsof

查看當前文件由哪些進程打開

lsof ../io # io目錄 當前由 bash 和 lsof 兩個進程打開

Linux下IO監控與分析的案例

lsof 命令 只能查看靜態的信息, 并且"打開" 并不一定"讀取", 對于 cat ,echo這樣的命令,  打開和讀取都是瞬間的,lsof很難捕捉

4.2、inodewatch.stp

可以用 inodewatch.stp 來彌補

stap inodewatch.stp major minor inode # 主設備號, 輔設備號, 文件inode節點號  stap inodewatch.stp 0xfd 0x00 523170 # 主設備號, 輔設備號, inode號,可以通過 stat 命令獲得

Linux下IO監控與分析的案例

感謝各位的閱讀!關于“Linux下IO監控與分析的案例”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江源县| 托克逊县| 台东县| 玉树县| 双流县| 宾川县| 岳普湖县| 大洼县| 会昌县| 平利县| 泸水县| 鹤壁市| 峡江县| 宜宾市| 依安县| 南雄市| 故城县| 手机| 长兴县| 加查县| 青田县| 咸宁市| 册亨县| 温州市| 望江县| 和林格尔县| 台湾省| 喀什市| 延边| 高雄县| 辽宁省| 新乐市| 三河市| 清苑县| 盐津县| 马关县| 蒲江县| 金湖县| 长兴县| 南木林县| 厦门市|