Kworker, ¿qué es y por qué está acaparando tanta CPU?

109

Recientemente me actualicé a Kubuntu Natty Beta 1 y he tenido muchos problemas con el proceso kworker . En momentos usa casi la mitad de mi CPU. Además, por extraño que parezca, parece afectar a mis puertos USB; cada vez que conecto una unidad USB, el proceso kworker entra en hiperimpulso, dejándome sin trabajo.

He pensado en presentar un error, pero como no encontré ninguna explicación razonable sobre qué kworker se me ocurrió encontrar primero.

    
pregunta davorao 05.04.2011 - 15:57

6 respuestas

94

"kworker" es un proceso de marcador de posición para hilos de trabajo del kernel, que realizan la mayor parte del procesamiento real para el núcleo, especialmente en casos donde hay interrupciones, temporizadores, E / S, etc. Estos corresponden típicamente a la gran mayoría de cualquier tiempo de "sistema" asignado a los procesos en ejecución. No es algo que pueda eliminarse de manera segura del sistema de ninguna manera, y no está relacionado con nepomuk o KDE (excepto que estos programas pueden hacer llamadas al sistema, lo que puede requerir que el kernel haga algo).

Hubo algunos informes de actividad excesiva de kworker para relativamente sistemas inactivos que comienzan durante el desarrollo 2.6.36 ( debate de ejemplo ), y amplios informes de confusión y problemas con 2.6 .38 (aunque muchos de estos informes incluyen la palabra "Natty", entonces supongo que estas personas no usaron ningún kernel entre 2.6.35 (distribuido en Ubuntu 10.10) y 2.6.38 (distribuido en Ubuntu 11.04).

He encontrado muchos informes de algo que "solucionó" esto para uno u otro usuario. La mayoría de las "correcciones" parecen estar relacionadas con las actualizaciones del núcleo de varios géneros. Cuando la actualización se puede rastrear a un problema específico, parece que a menudo hay algún controlador o servicio kernel que se ha corregido para que no se comporte mal: tengo la impresión de que hay un gran número de cosas en el kernel que pueden causar un comportamiento que se observa como uso excesivo de kworker.

Si encuentra el sistema inutilizable debido a la actividad excesiva de kworker, le recomendaría intentar hacer menos cosas. Si cree que no está haciendo nada, intente apagar servicios o temporizadores de larga ejecución (lectores de RSS, lectores de correo, indexadores de archivos, rastreadores de actividad, etc.). Si esto no funciona, intente reiniciar. Si su sistema le permite habilitar o deshabilitar hardware en un entorno previo al arranque, intente apagar el hardware que no está utilizando. Si ocurre en cada reinicio antes de hacer cualquier cosa, puede intentar desinstalar cosas, pero en este punto querrá ejecutar las herramientas de generación de perfiles de syscall para rastrear aplicaciones específicas que parecen estar causando esta sobrecarga.

Es de esperar que su sistema específico deje de expresar este comportamiento con una futura actualización del núcleo (y muchas de las causas más comunes de esto se han resuelto).

    
respondido por el Emmet Hikory 08.07.2011 - 12:44
68

¿Qué es kworker? kworker significa un proceso de kernel de Linux haciendo "trabajo" (procesando llamadas al sistema). Puede tener varios de ellos en su lista de procesos: kworker/0:1 es el que está en su primer núcleo de CPU, kworker/1:1 el uno en su segundo, etc.

¿Por qué kworker encierra tu CPU? Para descubrir por qué un kworker está desperdiciando tu CPU, puedes crear backtraces de CPU: observa la carga de tu procesador (con top o algo así) y en momentos de carga alta a través de kworker , ejecute echo l > /proc/sysrq-trigger para crear una traza inversa. (En Ubuntu, esto necesita que inicies sesión con sudo -s ). Haga esto varias veces, luego observe las trazas inversas al final de dmesg de salida. Vea lo que ocurre con frecuencia en las trazas inversas de la CPU, con suerte lo señala a la fuente de su problema.

Ejemplo: e1000e. En mi caso, encontré una traza inversa como esta casi siempre:

Call Trace:
 delay_tsc+0x4a/0x80
 __const_udelay+0x2c/0x30
 e1000_acquire_swflag_ich8lan+0xa2/0x240 [e1000e]
 e1000e_read_phy_reg_igp+0x29/0x80 [e1000e]
 e1000e_phy_has_link_generic+0x85/0x120 [e1000e]
 e1000_check_for_copper_link_ich8lan+0x48/0x930 [e1000e]
 e1000e_has_link+0x55/0xd0 [e1000e]
 e1000_watchdog_task+0x5e/0x960 [e1000e]

Me insinuó un problema en el módulo de tarjeta Ethernet e1000e , y de hecho un sudo rmmod e1000e hizo que la alta carga de CPU desapareciera inmediatamente [ error e1000e # 26 ].

    
respondido por el tanius 17.02.2014 - 03:42
51

¿Por qué kworker encierra tu CPU (cont.)? Como alternativa a mi otra respuesta aquí , Perf es una forma más profesional de analizar qué tareas del kernel están acaparando tu CPU:

  1. Instalar perf :

    sudo apt-get install linux-tools-common linux-tools-3.11.0-15-generic
    

    (El segundo paquete debe coincidir con la versión de su kernel. Primero puede instalar solo linux-tools-common y llamar a perf para que le indique qué paquete necesita).

  2. Grabe unos 10 segundos de backtraces en todas sus CPU:

    sudo perf record -g -a sleep 10
    
  3. Analiza tu grabación:

    sudo perf report
    

    (Navegue por el gráfico de llamadas con , , , y Introduzca .)

respondido por el tanius 17.02.2014 - 16:26
5

Solo para que todos lo sepan. Me encontré con este problema, instalé perf (que es una gran herramienta), señaló a bloqueo de giro y XFS. Eso apuntaba a NFS. Entonces me di cuenta de que uno de mis soportes estaba sin espacio. Liberar espacio causó que la CPU kworker caiga a 0.

¡Aparentemente, esto puede ser un síntoma de quedarse sin espacio en el disco en un servidor NFS ocupado!

    
respondido por el Erik Aronesty 19.03.2014 - 14:40
4

Recientemente instalé Ubuntu Natty en un disco externo usb wd pasaporte. Cuando comienzo en mi escritorio, que tiene unos dos años, todo funciona como un encanto. Cuando inicio en mi nueva computadora portátil (sistema MSI gt680r), se ralentiza después de que despierto la computadora de la suspensión o si enchufo otro disco usb.

Los procesos de Kworker toman más y más CPU, y el mouse se congela de vez en cuando.

He leído varias soluciones en varios foros que no funcionaron.

Ingresé a la BIOS de mi computadora portátil, donde estaba:

Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled

Cambié por:

Hand XCHI OFF: disabled
EHCI Hand OFF: disabled

y desde entonces, ya no se congela en natty en mi computadora portátil.

Permitiría devolver la mano siempre que se corrija el problema.

    
respondido por el CedCannes 01.07.2011 - 11:08
0

Creo que inhabilitar a Nepomuk puede ayudarte:

enlace

    
respondido por el Extender 06.05.2011 - 08:02

Lea otras preguntas en las etiquetas