Mengapa top dan ps menunjukkan PID yang berbeda untuk proses yang sama?

11

Ketika saya menjalankan top -H, saya melihat bahwa banyak mysqlutas saya semua memiliki PID yang sama. Namun, ps -eLfsaya melihat masing-masing memiliki PID yang berbeda:

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

dan masuk 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

Apa yang terjadi dan yang mana yang harus saya percayai?

Madan Ram
sumber
Dimana pertanyaannya?
Vinz

Jawaban:

10

Mereka sebenarnya menunjukkan informasi yang sama dengan cara yang berbeda. Inilah yang -fdan -Lopsi yang harus psdilakukan (dari man ps, beri penekanan pada saya):

-f Lakukan daftar format penuh. Opsi ini dapat dikombinasikan dengan banyak opsi gaya UNIX lainnya untuk menambahkan kolom tambahan. Ini juga menyebabkan argumen perintah dicetak. Saat digunakan dengan -L, kolom NLWP (jumlah utas) dan LWP (utas ID) akan ditambahkan.

-L Tampilkan utas, mungkin dengan kolom LWP dan NLWP.

tid TID nomor unik yang mewakili entitas yang dapat dipisahkan (alias lwp, spid). Nilai ini juga dapat muncul sebagai: ID proses (pid); ID grup proses (pgrp); ID sesi untuk pemimpin sesi (sid); ID grup utas untuk pemimpin grup utas (tgid); dan ID grup proses tty untuk pemimpin grup proses (tpgid).


Jadi, psakan menampilkan ID utas di LWPkolom sedangkan PIDkolom adalah pengidentifikasi proses yang sebenarnya .

topdi sisi lain, buat daftar utas yang berbeda di PIDkolom meskipun saya tidak dapat menemukan penyebutan eksplisit ini di man top.

terdon
sumber
2

Itu hanya perbedaan dalam presentasi. Lihatlah LWPkolom pada Anda pskeluaran - LWPadalah Light Wdelapan Process. Kernel dapat membedakan antara proses penuh dan utas, tetapi masih harus menjadwalkannya secara independen (yang menjadi tujuan utas) dengan mekanisme yang sama yang digunakannya untuk menjadwalkan proses sehingga id yang dilihat oleh penjadwal harus unik, paling baik dicapai dengan memiliki satu kumpulan proses dan id utas untuk setiap tujuan dan menggunakan cara-cara lain untuk membedakan keduanya.

jthill
sumber
-2

Anda melihat proses induk 1424, proses yang telah menciptakan satu atau beberapa proses anak ( the other PIDs).

Alex
sumber
1
Mereka bukan proses anak, mereka adalah benang inti dari proses yang sama.
Gilles 'SANGAT berhenti menjadi jahat'