Gibt es unter Linux einen Befehl, um die Prozessornummer zu ermitteln, in die ein Prozess geladen ist?

26

Gibt es unter Linux einen Befehl, um herauszufinden, auf welchem ​​Prozessor der Prozess ausgeführt wird, je nachdem, welcher Prozess ausgeführt wird? Ich bin daran interessiert, die CPU-Auslastung und die CPU-Leerlaufzeit dieses Prozessors herauszufinden.

kumar
quelle

Antworten:

32

Mit dem psBefehl können Sie den aktiven Prozessor abfragen und anzeigen. Beispielsweise könnten Sie Folgendes ausführen:

$ ps -aF
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root         1     0  0  5971  1764   1 Sep15 ?        00:00:01 /sbin/init
ubuntu   28903  2975  0  3826  1208   0 09:36 pts/0    00:00:00 ps -aF

Die PSRSpalte zeigt, dass initauf Prozessor 1 und psauf Prozessor 0 ausgeführt wird. Weitere Informationen zum Anpassen der angezeigten Felder finden Sie auf der Manpage für ps (1) .

Sie können ein grafisches Tool konfigurieren htop, um den aktuell aktiven Prozessor anzuzeigen. Verfügt außerdem htopüber ein Diagramm zur Anzeige der CPU-Auslastung, nach dem Sie möglicherweise suchen. Siehe zum Beispiel den folgenden Screenshot von http://htop.sourceforge.net/ .

htop screenshot

Schließlich können Sie das tasksetTool verwenden, um die Affinität zu einer bestimmten CPU zu erzwingen.

Emil Sit
quelle
Beachten Sie, dass diese Informationen vor dem Generieren der Anzeige möglicherweise veraltet sind (es sei denn, Sie haben mithilfe von taskset die Affinität zu nur einer CPU festgelegt), geschweige denn, Sie lesen sie.
Jamie Hanrahan
26

Es gibt viele Möglichkeiten, dies herauszufinden. htop, top, ps.

htop

  • getestete Version: 1.0.2
  • URL: http://htop.sourceforge.net/

    1. Drücken Sie F2, um in das Setup-Fenster zu gelangen
    2. Wählen Sie Spalten in der Setup-Spalte
    3. go Verfügbare Spalten
    4. PROCESSOR hinzufügen htop Prozessor auswählen
    5. Überprüfen Sie die CPU-Spalte htop mit cpu spalte

oben

  • getestete Version: procps 3.3.8
  • URL: http://gitorious.org/procps

    1. Drücken Sie f, um in das Fenster "Felder verwalten" zu gelangen
    2. Wählen Sie P (Last Used Cpu)

Hier ist ein Beispiel mit der letzten Spalte P

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND   P 
 5626 yashi     20   0 1926276 545964  47596 R  12.6  3.4 151:10.81 gnome-sh+ 2 
 5347 root      20   0  384788  73600  55708 S   8.7  0.5  55:10.09 Xorg      1 
 8125 yashi     20   0  646240  30776  21928 S   4.3  0.2  23:06.20 gnome-sy+ 0 
 1785 yashi     20   0  581180  29288  15560 R   4.0  0.2   0:25.55 gnome-te+ 1

ps

PSR ist der CODE zur Anzeige der Prozessor-ID. Sie können die Formatierungsoption wie folgt verwenden ps -o pid,psroder einfach ausführenps -eF

$ ps -eF|head
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root         1     0  0  3817   964   0 Aug14 ?        00:00:02 init [2]  
root         2     0  0     0     0   2 Aug14 ?        00:00:00 [kthreadd]
root         3     2  0     0     0   0 Aug14 ?        00:00:11 [ksoftirqd/0]
root         5     2  0     0     0   0 Aug14 ?        00:00:00 [kworker/0:0H]
root         7     2  0     0     0   0 Aug14 ?        00:00:00 [migration/0]
root         8     2  0     0     0   0 Aug14 ?        00:00:00 [rcu_bh]
root         9     2  0     0     0   3 Aug14 ?        00:00:39 [rcu_sched]
root        10     2  0     0     0   0 Aug14 ?        00:00:00 [watchdog/0]
root        11     2  0     0     0   1 Aug14 ?        00:00:00 [watchdog/1]
Yasushi Shoji
quelle
1

Ich zitiere nur den Inhalt von man ps:

PSR teilt Ihnen den Prozessor mit, auf dem der Prozess ausgeführt wird oder auf dem er ausgeführt wird. pcpu gibt an, wie viel Prozent der CPU-Zeit der Prozess verbraucht hat.

ps -eo pid, tid, klasse, rtprio, ni, pri, psr , pcpu , stat, wchan: 14, comm

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm | tail
 9847  9847 TS       -   0  19   2  0.0 S    -              kworker/2:0
10061 10061 TS       -   0  19   2  0.6 Sl   futex_wait_que chrome
10208 10208 TS       -   0  19   3  0.0 S    -              kworker/3:3
10247 10247 TS       -   0  19   1  0.0 S    -              kworker/1:1
10381 10381 TS       -   0  19   1  4.6 Sl   futex_wait_que chrome
10452 10452 TS       -   0  19   0  0.0 S    -              kworker/0:1
10491 10491 TS       -   0  19   0  0.5 Sl   futex_wait_que chrome
10504 10504 TS       -   0  19   2  0.0 S    -              kworker/2:1
10505 10505 TS       -   0  19   0  0.0 R+   -              ps
10506 10506 TS       -   0  19   3  0.0 S+   pipe_wait      tail

BSD-Stil:

ps axo stat, euid, ruid, tty, tpgid, sess, pgrp, ppid, pid, bA , pcpu , comm

firo
quelle
Das ist irgendwie kryptisch. Können Sie Ihre Antwort erweitern, um herauszufinden, was dies ist und wie Sie es zur Lösung des Problems verwenden können? Aus Bewertung
fixer1234