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?


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.


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.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.