Dlaczego top i ps pokazują różne PID dla tych samych procesów?


11

Kiedy uruchamiam top -H, widzę, że wszystkie moje wiele mysqlwątków ma ten sam PID. Jednak ps -eLfwidzę, że każdy ma inny PID:

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

i w 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

Co się dzieje i w co powinienem wierzyć?


Gdzie jest pytanie
Vinz

Odpowiedzi:


10

W rzeczywistości pokazują te same informacje na różne sposoby. Oto, co -fi -Lopcje ps(od man ps, moje podkreślenie):

-f Wykonaj wyświetlanie w pełnym formacie. Tę opcję można połączyć z wieloma innymi opcjami w stylu UNIX, aby dodać dodatkowe kolumny. Powoduje również wydrukowanie argumentów polecenia. W przypadku użycia z -L zostaną dodane kolumny NLWP (liczba wątków) i LWP (identyfikator wątku).

-L Pokaż wątki, ewentualnie z kolumnami LWP i NLWP.

tid TID unikalny numer reprezentujący jednostkę dyspozycyjną (alias lwp, spid). Ta wartość może również wyglądać następująco: identyfikator procesu (pid); identyfikator grupy procesów (pgrp); identyfikator sesji dla lidera sesji (sid); identyfikator grupy wątków dla lidera grupy wątków (tgid); oraz identyfikator grupy procesów tty dla lidera grupy procesów (tpgid).


Tak więc pspokaże identyfikatory wątków w LWPkolumnie, podczas gdy PIDkolumna jest rzeczywistym identyfikatorem procesu .

topz drugiej strony zawiera listę różnych wątków w PIDkolumnie, chociaż nie mogę znaleźć wyraźnej wzmianki o tym w man top.


2

To tylko różnica w prezentacji. Spójrz na LWPkolumnie na swoim pswyjściu - LWPjest Lrawo Wosiem Process. Jądro może rozróżniać pełny proces od wątku, ale nadal musi je planować niezależnie (co jest celem wątku) z tym samym mechanizmem, którego używa do planowania procesów, więc identyfikator użytkownika, który widzi harmonogram, musi być unikalny, najlepiej osiągnąć, mając jedną pulę identyfikatorów procesów i wątków dla każdego celu i używając innych sposobów odróżnienia tych dwóch rodzajów.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.