¿Por qué top y ps muestran PID diferentes para los mismos procesos?

11

Cuando ejecuto top -H, veo que todos mis mysqlhilos múltiples tienen el mismo PID. Sin embargo, en ps -eLfveo que cada uno tiene un PID diferente:

ps -eLf

UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
mysql     1424     1  1424  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1481  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1482  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1483  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1484  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1485  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1486  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1487  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1488  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1489  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1490  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1791  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1792  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1793  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1794  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1809  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1812  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld

y en top -H

PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
 1424 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.08 mysqld                                                                  
 1481 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.16 mysqld                                                                  
 1482 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.33 mysqld                                                                  
 1483 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.16 mysqld                                                                  
 1484 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.23 mysqld                                                                  
 1485 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.27 mysqld                                                                  
 1486 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.15 mysqld                                                                  
 1487 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.18 mysqld                                                                  
 1488 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.16 mysqld                                                                  
 1489 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.16 mysqld                                                                  
 1490 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.34 mysqld                                                                  
 1791 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.26 mysqld                                                                  
 1792 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.54 mysqld                                                                  
 1793 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.00 mysqld                                                                  
 1794 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.00 mysqld                                                                  
 1809 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.00 mysqld                                                                  
 1812 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.13 mysqld

¿Qué está pasando y cuál debo creer?

Madan Ram
fuente
Donde esta la pregunta
Vinz

Respuestas:

10

En realidad, están mostrando la misma información de diferentes maneras. Esto es lo que el -fy -Lopciones para pshacer (a partir man ps, el énfasis es mío):

-f Hacer una lista de formato completo. Esta opción se puede combinar con muchas otras opciones de estilo UNIX para agregar columnas adicionales. También hace que se impriman los argumentos del comando. Cuando se usa con -L, se agregarán las columnas NLWP (número de subprocesos) y LWP (ID de subproceso).

-L Mostrar subprocesos, posiblemente con columnas LWP y NLWP.

tid TID el número único que representa una entidad disparable (alias lwp, spid). Este valor también puede aparecer como: un ID de proceso (pid); una ID de grupo de proceso (pgrp); una ID de sesión para el líder de la sesión (sid); una ID de grupo de hilos para el líder del grupo de hilos (tgid); y una ID de grupo de proceso tty para el líder del grupo de proceso (tpgid).


Por lo tanto, psmostrará ID de subproceso en la LWPcolumna, mientras que la PIDcolumna es el identificador real del proceso .

toppor otro lado, enumera los diferentes hilos en la PIDcolumna, aunque no puedo encontrar una mención explícita de esto en man top.

terdon
fuente
2

Es solo una diferencia en la presentación. Vistazo a la LWPcolumna en su pssalida - LWPes Lvuelo Wde ocho Process. El núcleo puede distinguir entre un proceso completo y un subproceso, pero aún tiene que programarlos de forma independiente (ese es el propósito de un subproceso) con el mismo mecanismo que usa para programar procesos y, por lo tanto, los id que el planificador ve deben ser únicos, Se logra mejor al tener un solo grupo de procesos e ID de subprocesos para cada propósito y utilizando otras formas para distinguir los dos tipos.

jthill
fuente
-2

Verá el proceso primario 1424, un proceso que ha creado uno o más procesos secundarios ( the other PIDs).

Alex
fuente
1
No son procesos hijos, son hilos del núcleo del mismo proceso.
Gilles 'SO- deja de ser malvado'