Kiedy uruchamiam top -H
, widzę, że wszystkie moje wiele mysql
wątków ma ten sam PID. Jednak ps -eLf
widzę, ż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ć?
process-management
multithreading
pid
Madan Ram
źródło
źródło
Odpowiedzi:
W rzeczywistości pokazują te same informacje na różne sposoby. Oto, co
-f
i-L
opcjeps
(odman ps
, moje podkreślenie):Tak więc
ps
pokaże identyfikatory wątków wLWP
kolumnie, podczas gdyPID
kolumna jest rzeczywistym identyfikatorem procesu .top
z drugiej strony zawiera listę różnych wątków wPID
kolumnie, chociaż nie mogę znaleźć wyraźnej wzmianki o tym wman top
.źródło
To tylko różnica w prezentacji. Spójrz na
LWP
kolumnie na swoimps
wyjściu -LWP
jestL
rawoW
osiemP
rocess. 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.źródło
Zobaczysz proces nadrzędny
1424
, proces, który utworzył jeden lub więcej procesów potomnych (the other PIDs
).źródło