我需要計算給定服務器上多個進程的CPU使用率。 很少的選項,如下計算Linux中多個進程的CPU使用率的有效方法
一)雖然我們可以用PS找到進程的CPU佔用率,PS給出了過程的CPU使用率在其生命週期,而不是爲了instant.Of當然,當我的意思即時我的意思是一些小的特定時期,比如1秒左右,因爲在任何時候cpu都被一個進程使用或不被使用。
b)vmstat不顯示進程明智的cpu使用情況。
c)我們可以使用top來查找進程的CPU使用情況。
top -b -n 2 -d 1 | grep'mysqld'| tail -n 1
對於n = 1,top命令的行爲更像ps,其中提供了自啓動以來的進程的CPU使用情況,因此使用n = 2並忽略尾部的第一行將會使CPU瞬間。
但忽略了前幾行不會與多個grep的字符串(進程名),並在那裏工作,在這個過程中的,因爲他們不斷改變他們的狀態可能不會總是發生在頂部。
top -b -n 2 -d 1 | grep'mysqld \ | apache'| tail -n 1
因此,對多進程執行此操作的一種方法是維護一種映射類型的結構,然後僅對第二次出現的那些進程使用cpu。但不確定這是否有效。每次做一個特定的過程的頂部是不是很明顯,我想或者是一個頂部多個進程的grep相同。
4)頂部內部使用/ proc/stats info,我們可以自己明確地實現這個邏輯。
How to calculate the CPU usage of a process by PID in Linux from C?
哪一個可能是一個更好的選擇嗎?
有人可以說什麼理由來結束這個。我想總結一下所有的方法,看看有沒有更好的方法。當你沒有敏銳地觀察並且我想要的東西也包括在內。有時候,最好是打開你爲什麼要關閉某些東西。也不要根據你所知道的來判斷,因爲會有那些會尋找可能看起來像基本信息的人。 – crackerplace