Linux
在哪裡可以找到單個程序的 iowait stat(作為文件)
我正在編寫一個腳本,我需要找到一個文件,其中儲存了單個程序/pid/服務的 iowait 的統計資訊。在基於Debian 的發行版上是否有任何這樣的文件?
根據手冊頁,也
/proc/<pid>/stat
沒有iowait/proc/<pid>/io
的任何統計資訊。我知道我可以解析其他工具(如iotop、sar等)的輸出,但是,解析外部命令的標準輸出是我必須避免的性能問題。注意:我知道
/proc/stat
它的內容及其含義。我需要單個程序的iowait stat ,而不是整個 CPU 或核心。
理論上,您可以從 中獲取
iowait
每個程序,因為我們從PROC(5)/proc/[pid]/stat
的相應塊中讀取:(42) delayacct_blkio_ticks %llu (since Linux 2.6.18) Aggregated block I/O delays, measured in clock ticks (centiseconds).
我不知道這
delayacct_blkio_ticks
實際上意味著什麼。無論如何,只有man proc
對你有用。有相關的問題,檢查一下:使用proc FS測量塊I/O延遲
此外,請注意
/proc/stat
每個 CPUiowait
塊中的註釋:
- CPU 不會等待 I/O 完成;iowait 是任務等待 I/O 完成的時間。當一個 CPU 因未完成的任務 I/O 進入空閒狀態時,另一個任務將被安排在該 CPU 上。
- 在多核 CPU 上,等待 I/O 完成的任務沒有在任何 CPU 上執行,因此每個 CPU 的 iowait 很難計算。
- 在某些情況下,此欄位中的值可能會減小。
您可以從
iowait
每個 CPU 獲取數據/proc/stat
。在我的 Ubuntu 18.04 中/proc/stat
有這樣的部分:cpu 2752162 16054 941158 49212025 789607 0 217089 0 0 0 cpu0 1397207 7767 500620 24623046 407078 0 70574 0 0 0 cpu1 1354955 8286 440538 24588978 382529 0 146515 0 0 0
在我的特殊情況下,
cpu
除了s列之外的第五列是iowait
值。列數及其含義可能因您使用的核心而異。要獲得每一列的確切含義,您必須查看您的文件。首先在 Ubuntu 安裝
linux-doc
包中:sudo apt install linux-doc
看看
man proc
:man proc
每列都有準確
/proc/stat
解釋的部分。額外閱讀如何閱讀 Linux /proc/stat 文件以了解如何計算值。
在 CentOS 中需要安裝
kernel-doc
軟體包:yum install kernel-doc
然後讀取文件:
/usr/share/doc/kernel-doc/Documentation/filesystems/proc.txt