Linux: ¿es posible ver solo hilos / procesos del espacio del kernel?


27

Sé que hay dos "niveles" de programas: espacio de usuario y espacio de kernel.

Mi pregunta es: quiero ver solo los programas del núcleo, o mejor: programas en el espacio del núcleo.

¿Es correcto este enfoque?

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]
....

55
> es posible ver los programas de espacio del kernel? ... si! Simplemente necesita el filtro astronómico correcto en su CCD ... ;-)
RubberStamp


55
Los programas espaciales de @steve Kernel son realmente tangenciales a los módulos. No todos los módulos tienen procesos, y no todos los procesos son módulos.
Chris Down

3
La pregunta es incorrecta: desea ver los procesos del núcleo (o los hilos del núcleo, o las tareas del núcleo), no los programas del núcleo ... Solo hay un programa involucrado: el núcleo (y los módulos del núcleo se agregan al núcleo).
Basile Starynkevitch

Voy a corregir ahora
elbarna

Respuestas:


42

Los procesos de kernel (o "hilos de kernel") son hijos de PID 2 ( kthreadd), por lo que esto podría ser más preciso:

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

Agregar --deselectpara invertir la selección y ver solo los procesos de espacio de usuario.

(Esta pregunta era más o menos una inversa exacta de esta ).

En los núcleos 2.4. * Y anteriores, esta convención PID 2 aún no existía.


¿Es siempre cierto? Vea el cuarto comentario en esta pregunta: stackoverflow.com/q/12213445/1971003
Guy Avraham

Es posible que a principios de los núcleos 2.6. * La conversión a la convención "hijo del PID 2" no fuera completa. Como HighKing indica allí, el nombre de PID 2 tampoco se había estabilizado completamente en kthreadd2.6.18. Si está interesado en detalles exactos, vaya a kernel.org y use la interfaz del navegador git para profundizar en el historial temprano del kernel/kthread.carchivo.
telcoM

4

Los hilos del kernel no usan RAM en absoluto (o al menos se muestran para no usar ninguno):

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

1

Si lo ha tunainstalado, puede enumerar todos los hilos del núcleo de esta manera:

$ 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
[..]
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.