Linux: เป็นไปได้ไหมที่จะเห็นเฉพาะเธรด / กระบวนการของพื้นที่เคอร์เนล


27

ฉันรู้ว่ามีสอง "ระดับ" ของโปรแกรม: พื้นที่ผู้ใช้และพื้นที่เคอร์เนล

คำถามของฉันคือ: ฉันต้องการเห็นเฉพาะโปรแกรมเคอร์เนลหรือดีกว่า: โปรแกรมบนพื้นที่เคอร์เนล

วิธีนี้ถูกต้องหรือไม่

ps -ef|grep "\["

root         1     0  0 20:23 ?        00:00:00 init [4]
root         2     0  0 20:23 ?        00:00:00 [kthreadd]
root         3     2  0 20:23 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 20:23 ?        00:00:00 [kworker/0:0H]
root         7     2  0 20:23 ?        00:00:06 [rcu_sched]
root         8     2  0 20:23 ?        00:00:00 [rcu_bh]
root         9     2  0 20:23 ?        00:00:00 [migration/0]
root        10     2  0 20:23 ?        00:00:00 [migration/1]
root        11     2  0 20:23 ?        00:00:00 [ksoftirqd/1]
root        13     2  0 20:23 ?        00:00:00 [kworker/1:0H]
root        14     2  0 20:23 ?        00:00:00 [migration/2]
....

5
> เป็นไปได้ไหมที่จะเห็นโปรแกรมพื้นที่เคอร์เนล ... ใช่! คุณเพียงแค่ต้องการตัวกรองทางดาราศาสตร์ที่ถูกต้องบน CCD ของคุณ ... ;-)
RubberStamp


5
@steve Kernel space program นั้นมีการสัมผัสกับโมดูลอย่างเคร่งครัด ไม่ใช่โมดูลทั้งหมดที่มีกระบวนการและไม่ใช่ทุกกระบวนการที่เป็นโมดูล
Chris Down

3
คำถามนี้ไม่ถูกต้อง: คุณต้องการดูกระบวนการเคอร์เนล (หรือเคอร์เนลเธรดหรืองานเคอร์เนล) ไม่ใช่โปรแกรมเคอร์เนล .... มีเพียงโปรแกรมเดียวที่เกี่ยวข้อง: เคอร์เนล (และโมดูลเคอร์เนลถูกเพิ่มเข้าไปในเคอร์เนล)
Basile Starynkevitch

ฉันจะแก้ไขตอนนี้
elbarna

คำตอบ:


42

กระบวนการเคอร์เนล (หรือ "เคอร์เนลเธรด") เป็นลูกของ PID 2 ( kthreadd) ดังนั้นสิ่งนี้อาจมีความแม่นยำมากขึ้น:

ps --ppid 2 -p 2 -o uname,pid,ppid,cmd,cls

เพิ่ม--deselectเพื่อย้อนกลับการเลือกและดูเฉพาะกระบวนการพื้นที่ผู้ใช้

(คำถามนี้ค่อนข้างตรงกันข้ามกับคำถามนี้มาก)

ใน 2.4. * และเมล็ดที่เก่ากว่าแบบแผน PID 2 นี้ยังไม่มีอยู่


เป็นจริงเสมอหรือ ดูความคิดเห็นที่สี่ในคำถามนี้: stackoverflow.com/q/12213445/1971003
Guy Avraham

เป็นไปได้ว่าในช่วงต้น 2.6. * เมล็ดการแปลงเป็นอนุสัญญา "child of PID 2" ยังไม่สมบูรณ์ เนื่องจาก HighKing บ่งชี้ว่าชื่อของ PID 2 นั้นยังไม่เสถียรอย่างเต็มที่ถึงkthreadd2.6.18 หากคุณสนใจรายละเอียดที่แน่นอนให้ไปที่ kernel.org และใช้ส่วนต่อประสานเบราว์เซอร์ git เพื่อดูประวัติของkernel/kthread.cไฟล์
telcoM

4

เธรดเคอร์เนลไม่ใช้ RAM เลย (หรืออย่างน้อยก็แสดงว่าไม่ใช้):

ps -eo cmd,vsize,rss | grep -E ' 0 +0$'

1

หากคุณtunaติดตั้งแล้วคุณสามารถแสดงรายการเคอร์เนลเธรดทั้งหมดดังนี้

$ tuna -U -P
                      thread       ctxt_switches
    pid SCHED_ rtpri affinity voluntary nonvoluntary             cmd 
  2      OTHER     0     0xff       290            1        kthreadd  
  3      OTHER     0     0xff         2            0          rcu_gp  
  4      OTHER     0     0xff         2            0      rcu_par_gp  
  6      OTHER     0        0        13            0 kworker/0:0H-kblockd  
  9      OTHER     0     0xff         2            0    mm_percpu_wq  
  10     OTHER     0        0       448            0     ksoftirqd/0
[..]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.