Woher erhält top Echtzeitdaten?

8

Wo bekommt top application seine Daten unter Linux? Ich würde interessiert sein in Echtzeit CPU-Last / PID-Daten. (Ich lese fast alle Dokumentation in / proc / pid man Seite, aber die Info ist nicht da).

Das Pid ist ein Jboss. Ich brauche die Daten leicht (um einfach exportiert zu werden).

    
Mark 28.01.2011, 10:17
quelle

2 Antworten

4

Wie in proc (5) dokumentiert, haben Sie in der Datei /proc/(pid)/stat folgende Felder:

%Vor%      

Zeit, für die dieser Prozess geplant wurde   Benutzermodus, gemessen in Taktzeiten   (dividiere durch sysconf (_SC_CLK_TCK))   enthält Gast Zeit, guest_time (Zeit   verbrachte eine virtuelle CPU laufen, zu sehen   unten), so dass Anwendungen, die sind   nicht bewusst, das Gast-Zeit-Feld tun   verliere diese Zeit nicht von ihren   Berechnungen.

%Vor%      

Zeit, die das ist   Prozess wurde im Kernel geplant   Modus, in Takt Ticks gemessen (dividieren   von sysconf (_SC_CLK_TCK).

Verwenden Sie diese Felder, um die CPU-Auslastung für einen bestimmten Prozess zu erhalten. Der Toplevel-Prozess aggregiert die CPU-Nutzung über alle Threads. Für eine pro-Thread-Aufteilung finden Sie die anderen Threads in /proc/(pid)/task .

Wenn Sie lieber benachrichtigt werden möchten, wenn die CPU-Zeit einen bestimmten Schwellenwert überschreitet, können Sie clock_getcpuclockid , um ein Handle für die CPU-Zeituhr zu erhalten, dann timer_create oder timerfd benachrichtigt werden, wenn es ein bestimmtes Level erreicht. Beachten Sie jedoch, dass prozessübergreifende cputime-Timer ein optionales Feature in der POSIX-Spezifikation sind und möglicherweise nicht unterstützt werden (ich habe es nicht getestet).

    
bdonlan 28.01.2011, 17:22
quelle
11

Verwenden Sie im Zweifelsfall strace (1)!

%Vor%     
adobriyan 28.01.2011 15:39
quelle