2011-07-08 134 views
16

我想使用/ proc每秒鐘查找特定進程的資源使用情況。資源包括cputime,磁盤使用情況和網絡使用情況。我查看了/ proc/pid/stat,但我不確定我是否獲得了所需的詳細信息。我希望全部3資源的使用,我想每秒鐘監控它們。獲取Linux進程資源使用情況(CPU,磁盤,網絡)

+1

我想要所有3個資源(CPU,磁盤和網絡)的信息 – sethu

+0

/proc/pid/stat給我CPUtime,但我只能收集整個機器的總網絡和磁盤統計信息,而不是特定進程 – sethu

+0

不要認爲有一種方法可以按進程收集磁盤和網絡統計信息 - 主要取決於如何在內核工作時完成磁盤和網絡通信。例如,寫入磁盤的讀操作是通過內核緩衝區進行的,因此多個進程在實際刷新到磁盤之前可能訪問同一個緩衝區。相同的讀取,多個進程可能會讀取同一個文件,只有第一個會導致實際的磁盤訪問,第二個只是獲得一個指向內核緩衝區的指針。 – Soren

回答

0

不要認爲有一種方法可以在每個進程上獲取磁盤和網絡信息。

您可以擁有的最佳選擇是全局磁盤和網絡以及每個進程的CPU時間。

man proc

+0

您可以跟蹤一些IO信息(例如,參見'iotop'實用程序),但它不適用於所有內核。 – duskwuff

+0

iotop需要更新版本的內核。我看到了iotop for io和nethog的網絡統計數據,但我需要重新編譯一個更新版本的內核。我只是把它作爲最後的手段。 – sethu

4

全部記錄了一些新的內核具有/proc/<pid_of_process>/io文件。這是IO統計數據的地方。 它沒有記錄在man proc中,但你可以嘗試自己找出數字。

希望它有幫助。 Alex。

+0

我使用的是centos 5.6,它是一個很老的內核。我沒有找到io統計數據! – sethu

1

getrusage()實現CPU,內存和硬盤等

man 2 getrusage

我不知道網絡。

0

接近問題,像這樣的查找的執行類似的監測和報告工具的源代碼的最好方法。 儘管不能保證他們直接使用/ proc,但他們會引導您採取有效的方法來解決問題。 爲你的情況,頭腦(1),iotop(8)和nethogs(8)浮現在腦海。

0

您可以使用SAR

-x給定進程的報告統計信息。

詳情請參閱此: http://www.linuxcommand.org/man_pages/sar1.html

實施例: SAR -u -r -b 1個-X PID | grep -v平均值| grep -v Linux

+0

此技術需要重新啓動系統,root必須啓用系統範圍的統計信息收集。 –

+0

使用'-x'或'-X'選項,我只能看到'minflt/s majflt/s%user%system nswap/s CPU'的統計數據,而不是磁盤或網絡統計數據。例如,如果我還指定'-n DEV'來查看網絡統計信息,則sar會給出單獨的標題單獨的行。我在RHEL 5.7上測試過它。 – haridsv

0

checkout glances。

它有一個屏幕上的CPU磁盤和網絡。這不是每個過程,但它比看3個單獨的工具更好。

相關問題