Ketika saya menjalankan top -H
, saya melihat bahwa banyak mysql
utas saya semua memiliki PID yang sama. Namun, ps -eLf
saya 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?
process-management
multithreading
pid
Madan Ram
sumber
sumber
Jawaban:
Mereka sebenarnya menunjukkan informasi yang sama dengan cara yang berbeda. Inilah yang
-f
dan-L
opsi yang harusps
dilakukan (dariman ps
, beri penekanan pada saya):Jadi,
ps
akan menampilkan ID utas diLWP
kolom sedangkanPID
kolom adalah pengidentifikasi proses yang sebenarnya .top
di sisi lain, buat daftar utas yang berbeda diPID
kolom meskipun saya tidak dapat menemukan penyebutan eksplisit ini diman top
.sumber
Itu hanya perbedaan dalam presentasi. Lihatlah
LWP
kolom pada Andaps
keluaran -LWP
adalahL
ightW
delapanP
rocess. 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.sumber
Anda melihat proses induk
1424
, proses yang telah menciptakan satu atau beberapa proses anak (the other PIDs
).sumber