2012-08-15 47 views
3

有沒有一種方法來檢測編程?Linux:如何檢測一個進程是否過度顛簸?

另外,什麼是Linux命令來檢測哪些進程顛簸?

+0

你的意思是顛簸磁盤? 'atop'是監控磁盤I/O和內存/ CPU使用情況的好工具。 http://www.atoptool.nl/ – 2012-08-15 16:46:11

+0

@LeeNetherton yes抖動磁盤...交換頁面進出 – Medicine 2012-08-15 16:50:00

+1

'vmstat'可以幫助 – 2012-08-15 21:24:33

回答

6

我假設這裏的「顛簸」是指所有進程的活動內存集太大而無法放入內存的情況。在這種情況下,每個上下文切換都會導致讀取和寫入磁盤,並且最終服務器可能會變得如此糟糕以至於硬件重新啓動是重新控制該盒子的唯一選項。

在/ proc/vmstat中有swin和swout的全局計數器 - 如果兩者在一段較短的時間間隔內增加,則可能出現抖動問題。

在流程級別,它是非平凡的AFAIK。/proc/$ pid/status包含一些有用的東西,但不包含swin和swout。從2.6.34開始,有一個VmSwap條目,使用的交換總量,以及/ proc/$ pid/state中的變量#12是主要頁面錯誤的數量。/proc/$ pid/oom_score也值得研究。如果VmSwap增加和/或主要頁面錯誤數量增加和/或oom_score非常高,那麼該過程很可能會導致顛簸。

我寫了一個腳本thrash-protect - 它在https://github.com/tobixen/thrash-protect可用 - 它試圖找出哪些進程導致抖動和臨時暫停進程。它對我來說非常有用,並最終拯救了我從一些服務器重新啓動。