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
> Чи можна бачити космічні програми ядра? ... Так! Вам просто потрібен правильний астрономічний фільтр на вашому ПЗЗ ... ;-)
RubberStamp


5
Космічні програми @steve Kernel дійсно суттєво дотичні до модулів. Не всі модулі мають процеси, і не всі процеси є модулями.
Кріс Даун

3
Питання помилкове: ви хочете бачити процеси ядра (або нитки ядра, або завдання ядра), а не програми ядра .... Задіяна лише одна програма : ядро (і модулі ядра додаються в ядро).
Василь Старинкевич

Я зараз
виправлю

Відповіді:


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
Гай Аврахам

Можливо, що на початку 2.6. * Перетворення ядер на конвенцію "дочірня PID 2" виявилося не зовсім завершеною. Як вказує HighKing там, ім'я PID 2 також не було повністю стабілізовано до kthreadd2.6.18. Якщо вас цікавлять точні деталі, перейдіть на kernel.org та скористайтеся інтерфейсом браузера git, щоб ознайомитись із ранньою історією kernel/kthread.cфайлу.
telcoM

4

Нитки ядра взагалі не використовують оперативну пам’ять (або принаймні відображаються не для використання жодної):

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
[..]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.