Linux: czy można zobaczyć tylko wątki / procesy związane z przestrzenią jądra?

27

Wiem, że istnieją dwa „poziomy” programów: przestrzeń użytkownika i przestrzeń jądra.

Moje pytanie brzmi: chcę widzieć tylko programy jądra, lub lepiej: programy w przestrzeni jądra.

Czy to podejście jest prawidłowe?

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]
....
Elbarna
źródło
5
> czy można zobaczyć programy kosmiczne jądra? ... Tak! Po prostu potrzebujesz odpowiedniego filtra astronomicznego na swoim CCD ... ;-)
RubberStamp
5
Programy kosmiczne jądra @steve są naprawdę ściśle styczne do modułów. Nie wszystkie moduły mają procesy i nie wszystkie procesy są modułami.
Chris Down,
3
Pytanie jest błędne: chcesz zobaczyć procesy jądra (lub wątki jądra lub zadania jądra), a nie programy jądra ... W grę wchodzi tylko jeden program : jądro (i jądra są dodawane do jądra).
Basile Starynkevitch,
Poprawię

Odpowiedzi:

42

Procesy jądra (lub „wątki jądra”) są potomkami PID 2 ( kthreadd), więc może to być dokładniejsze:

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

Dodaj, --deselectaby odwrócić wybór i zobaczyć tylko procesy w przestrzeni użytkownika.

(To pytanie było dokładnie odwrotne do tego ).

W 2.4. * I starszych jądrach ta konwencja PID 2 jeszcze nie istniała.

telcoM
źródło
Czy to zawsze prawda? Zobacz czwarty komentarz w tym pytaniu: stackoverflow.com/q/12213445/1971003
Guy Avraham
Możliwe jest, że na początku jądra 2.6. * Konwersja do konwencji „potomka PID 2” nie była całkowicie zakończona. Jak wskazuje HighKing, nazwa PID 2 również nie została w pełni ustabilizowana do wersji kthreadd2.6.18. Jeśli interesują Cię dokładne szczegóły, przejdź do kernel.org i skorzystaj z interfejsu przeglądarki git, aby przejść do wczesnej historii kernel/kthread.cpliku.
telcoM,
4

Wątki jądra w ogóle nie używają pamięci RAM (lub przynajmniej są wyświetlane, aby ich nie używać):

ps -eo cmd,vsize,rss | grep -E ' 0 +0$'
Patrick Mevzek
źródło
1

Jeśli tunazainstalowałeś, możesz wymienić wszystkie wątki jądra w następujący sposób:

$ 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
[..]
maxschlepzig
źródło