¿Hay un comando en Linux para saber el número de procesador en el que se carga un proceso?

26

¿Hay algún comando en Linux para averiguar, dado un proceso, qué procesador está ejecutando el proceso? Estoy interesado en averiguar la CPU ocupada y el tiempo de inactividad de la CPU de ese procesador.

kumar
fuente

Respuestas:

32

Puede usar el pscomando para consultar y mostrar el procesador activo. Por ejemplo, puede ejecutar:

$ 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

La PSRcolumna muestra que se initestá ejecutando en el procesador 1 y se psestá ejecutando en el procesador 0. Consulte la página de manual de ps (1) para obtener más detalles sobre cómo personalizar los campos que se muestran.

Puede configurar una herramienta gráfica htoppara mostrar el procesador activo actual. Además, htoptiene un gráfico de visualización de carga por CPU, que puede ser lo que estás buscando. Vea, por ejemplo, la siguiente captura de pantalla de http://htop.sourceforge.net/ .

captura de pantalla de htop

Finalmente, puede usar la tasksetherramienta para forzar afinidad a una CPU en particular.

Emil Sit
fuente
Tenga en cuenta que (a menos que haya utilizado un conjunto de tareas para establecer la afinidad con una sola CPU) esta información puede ser obsoleta antes de que se genere la pantalla, y mucho menos para cuando la lea.
Jamie Hanrahan
26

Hay muchas formas de averiguarlo. htop, arriba, ps.

htop

  • versión probada: 1.0.2
  • url: http://htop.sourceforge.net/

    1. Pulsa F2 para entrar en la ventana de configuración
    2. seleccione Columnas en la columna Configuración
    3. ir columnas disponibles
    4. agregar PROCESADOR htop seleccionando procesador
    5. Verifique la columna de la CPU htop con columna cpu

parte superior

  • versión probada: procps 3.3.8
  • url: http://gitorious.org/procps

    1. Presiona f para ingresar a la ventana Administración de campos
    2. Seleccione P (última CPU utilizada)

Aquí hay un ejemplo con la última columna 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

PD

PSR es el CÓDIGO para mostrar la identificación del procesador. Puede usar la opción de formato como ps -o pid,psro simplemente hacerps -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
fuente
1

Cito los contenidos de man ps:

psr le dirá al procesador en qué proceso o en qué proceso se está ejecutando. pcpu le dirá el porcentaje de tiempo de CPU que consumió el proceso.

ps EO pid, tid, clase, 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

Estilo BSD:

ps axo stat, euid, RUID, TTY, tpgid, sess, pgrp, ppid, pid, psr , pcpu , comm

Firo
fuente
Esto es algo críptico. ¿Puedes ampliar tu respuesta para explicar qué es esto y cómo usarlo para resolver el problema? De la revisión
Fixer1234