versiones pagina oficial núcleo historia linux

pagina - ¿Cómo detener el proceso ''ininterrumpible'' en Linux?



linux versiones (5)

Tengo un proceso de VirtualBox que he intentado matar (-KILL / -ABORT) pero sin éxito. El padre pid es 1 (init).

top muestra el proceso como D que está documentado como "suspensión ininterrumpida".

strace aparece nada.

¿Cómo puedo deshacerme de esto? Me impide descargar el controlador del kernel de vbox para cargar uno más nuevo.


Como han dicho otros, un proceso ininterrumpible es un proceso que está atorado en una función del kernel que no se puede interrumpir (generalmente está esperando alguna operación de E / S). Vea esta respuesta para una descripción detallada.

Además de reiniciar la computadora, tuve éxito al sacar algunos procesos del estado D al enjuagar cachés de VM de linux :

kill -9 {process_id} sync echo 3 | sudo tee /proc/sys/vm/drop_caches

Esto no pareció afectar la estabilidad del sistema, pero no soy un programador de sistemas y no estoy seguro de qué consecuencias involuntarias pueda tener.

Editar :

De acuerdo con los documentos del kernel , drop_caches parece ser razonablemente seguro en un entorno de desarrollo.

drop_caches

Escribir esto hará que el núcleo elimine los cachés limpios, así como los objetos recuperables de losas como dentrías e inodos. Una vez caído, su memoria se vuelve libre.

Para liberar pagecache:

echo 1 > /proc/sys/vm/drop_caches

Para liberar objetos de losas recuperables (incluye dentries e inodos):

echo 2 > /proc/sys/vm/drop_caches

Para liberar objetos de losa y pagecache:

echo 3 > /proc/sys/vm/drop_caches

Esta es una operación no destructiva y no liberará ningún objeto sucio. Para aumentar el número de objetos liberados por esta operación, el usuario puede ejecutar `sync ''antes de escribir en / proc / sys / vm / drop_caches. Esto minimizará la cantidad de objetos sucios en el sistema y creará más candidatos para que se eliminen.

Este archivo no es un medio para controlar el crecimiento de las diversas memorias caché del kernel (inodos, dentries, pagecache, etc.). Estos objetos son reclamados automáticamente por el kernel cuando se necesita memoria en otro lugar del sistema.

El uso de este archivo puede causar problemas de rendimiento. Como descarta los objetos almacenados en caché, puede costar una cantidad significativa de E / S y CPU recrear los objetos caídos, especialmente si se usan mucho. Debido a esto, no se recomienda su uso fuera de un entorno de prueba o depuración.

Puede ver mensajes informativos en su registro del kernel cuando se usa este archivo:

cat (1234): drop_caches: 3

Estos son solo informativos. No significa que algo esté mal en su sistema. Para desactivarlos, echo 4 (bit 3) en drop_caches.


El estado D básicamente significa que el proceso está esperando la E / S de disco u otra E / S de bloque que no se puede interrumpir. A veces esto significa que el kernel o dispositivo está intentando febrilmente leer un bloque defectuoso (especialmente desde un disco óptico). A veces significa que hay algo más.

El proceso no se puede matar hasta que salga del estado D. Descubra lo que está esperando y solucione eso. La manera más fácil es reiniciar. A veces, eliminar el disco en cuestión ayuda, pero puede ser bastante peligroso: falla irreparable de hardware catastrófico si no sabes lo que estás haciendo (léase: sale humo).


Matar a un proceso ininterrumpido tiene éxito, simplemente no lo hace de inmediato. El proceso no desaparecerá hasta que realmente reciba la señal. Entonces, enviar una señal por sí solo no es suficiente para deshacerse del proceso, también debe despertarlo del sueño ininterrumpido.

Tanel Poder ha escrito una gran guía para analizar los procesos del estado D. Es muy típico que este estado sea causado por una E / S incompleta, por ejemplo, una falla de la red. slm ha publicado algunos consejos muy útiles sobre el superusuario sobre cómo desbloquear la E / S de la red, y también sobre el problema en sí.

Personalmente, cuando trato con Windows en VirtualBox, e incluso con el vino, a menudo me encuentro con este problema debido a una E / S de cdrom que nunca se completa (supongo que es una especie de comprobación de presencia de disco). Los dispositivos ATA se pueden reiniciar , lo que probablemente desatará el proceso. Por ejemplo, estoy usando la siguiente pequeña secuencia de comandos para reiniciar mis dos unidades ópticas, desamarrando los procesos que están bloqueando:

echo 1 > /sys/block/sr0/delete echo 1 > /sys/block/sr1/delete echo "- - -" > /sys/class/scsi_host/host7/scan


Recientemente me encontré con un proceso en estado D en un servidor remoto y me gustaría aclarar que es necesario reiniciar o reiniciar para poder eliminar el proceso.

No intente un reinicio suave hasta que haya agotado todas las demás opciones. Por ejemplo, puedes intentar liberar cualquier recurso en el que se encuentre el proceso. Un reinicio suave puede darle un sistema que está parcialmente apagado y ya no responderá a ssh, pero no se reiniciará porque está suspendido tratando de finalizar el proceso ininterrumpible.


Respuesta simple: no puedes.

Respuesta más larga: el sueño ininterrumpido significa que las señales no despertarán el proceso. Solo puede ser despertado por lo que está esperando. Cuando obtengo tales situaciones, por ej. con CD-ROM, por lo general reinicio la computadora al usar suspend-to-disk y reanudar.