¿Cómo puedo saber qué proceso está causando que kswapd esté en uso?

23

Veo que kswapd usa el 100% de la CPU ... ¿cómo puedo saber en qué proceso se usa tanto kswapd?

Deshawn
fuente
1
Uhm kswapd es el proceso. Se ejecuta en nombre del núcleo.
mailq
2
@mailq ... sí, pero ¿no está cambiando la memoria de algún espacio de usuario? y si es así, ¿cómo puedo saber qué memoria de proceso está intercambiando en ese momento?
Deshawn

Respuestas:

18

kswapd administra el espacio de intercambio en respuesta a demandas de memoria mayores que las disponibles físicamente para todos los procesos.

Es un proceso agnóstico, solo está interesado en qué páginas tienen acceso y cuándo (es más complejo que esto, por supuesto, pero para simplificar las cosas, también podemos verlo de esta manera).

Entonces, la verdadera pregunta es "qué procesos tienen la mayor carga sobre la memoria que causan que kswapd necesite paginar todo el tiempo".

Eso es más fácil de responder usando 'top' y cambiando al modo de clasificación de uso de memoria.

Paul
fuente
¡Gracias!. ¿Se inicia skswapd SOLAMENTE cuando las páginas reales tocadas exceden las físicas o se activa aunque un proceso haya asignado la memoria o haya asignado la región SHM pero no la haya utilizado? Es decir, ¿es solo cuando ocurre el problema o hace contabilidad e intercambia cosas dentro y fuera aunque haya memoria física disponible pero solo porque algún proceso ha estado inactivo, etc.?
Deshawn
Según tengo entendido, kswapd, en circunstancias normales, eliminará cualquier página de la memoria principal que no necesite estar allí, porque cualquier página liberada es una que se puede usar para el almacenamiento en caché u otros procesos. Es decir, es mejor tener una página antigua no utilizada ya en el disco en lugar de incurrir en el costo de la lentitud de moverla en respuesta a una solicitud de memoria de otro proceso.
Paul
Incluso si una máquina necesita usar mucho espacio de intercambio, no debería necesitar un 100% de CPU para hacerlo. Algo es extraño
Zaz
@Zaz No es tanto que esté utilizando la potencia de procesamiento de la CPU para hacer el intercambio, es que la CPU se utiliza al 100% debido a IOWAIT. Cada vez que se necesita cambiar la memoria del disco, la CPU tiene que sentarse allí y esperarla, IOWAIT, y no está haciendo nada más (en promedio).
Paul
@Paul: ¿Estás seguro? topme dice que no se está gastando tiempo en la espera de E / S, y que se está gastando casi el 100% en el sistema. Más información: kswapd a menudo usa el 100% de la CPU cuando el intercambio está en uso
Zaz
9

Puedes escribirlo ... pero también puedes hacerlo desde arriba

Ejecutar arriba y luego presionar O seguido de p luego ingresar

Ahora todos los procesos están ordenados por uso de intercambio y puedes ver cuáles lo están usando

Micro
fuente
2
O muestra las opciones de filtro para mí, presionar p y luego ingresar me da "falta el delimitador de filtro" incluir "
Sombra
@Shadow Mismo problema, aquí un comando alternativo unix.stackexchange.com/questions/128953/…
Björn
8

Si está en Ubuntu 15.10 o superior, esto puede ser el resultado de un error , especialmente si su sistema es una máquina virtual que carece de una partición de intercambio (por ejemplo, AWS EC2). El problema existe en otras distribuciones , pero, al momento de escribir, no está claro si la misma solución funciona universalmente.

Una solución temporal:

sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot

Tenga en cuenta que esto deshabilitará la adición de RAM / CPU para las máquinas virtuales Xen e Hyper-V.

Zenexer
fuente
¿Había salido de la nada en mi sistema en Kubuntu 16.10 con la solución ya habilitada hace un tiempo?
jeteon
@jeteon Hay múltiples problemas que pueden causar este comportamiento; Esto resulta ser particularmente común.
Zenexer
Sí. He descubierto que eso lo echo 3 > /proc/sys/vm/drop_cachesalivia una vez que comienza a suceder. Previamente tengo el comando en un trabajo cron ahora y parece ayudar, o al menos limitar la duración de la masacre de OOM cuando estoy lejos de la computadora.
jeteon
6

También parece haber un error en kswapdalgún lugar, con suerte solo en los núcleos más antiguos.

Casi todos los días, ahora kswapd se convierte aleatoriamente en algunas máquinas en un clúster más grande (aunque con un núcleo no actual). 100% de CPU en ambos procesos kswapd. Ningún otro proceso en ejecución (excepto ssh shell), mucha RAM libre (más de 700 MB) y ningún SWAP utilizado. Sin intercambio, sin intercambio también.

Nada explica todavía, por qué una máquina en particular es golpeada y otra no. Parece que no es completamente aleatorio, porque generalmente afecta a más de una máquina en un corto período de tiempo. Parece que las máquinas, que están inactivas, así como las máquinas que están bajo alta presión, son menos (!) Probablemente afectadas por el efecto. Por lo tanto, tiene que hacer algo con la carga de trabajo y solo golpea si la máquina no está inactiva ni muy ocupada.

Si el problema surge, ya nada ayuda. Matar todos los procesos (que no se volvieron imposibles de matar), desmontar todos los sistemas de archivos, nada. kswapdTodavía se mantiene al 100% de la CPU. Sospecho que hay una carrera de spinlock en los núcleos SMP, pero también es probable que me equivoque.

Quizás vea mi respuesta serverfault.com/questions/316995/#493257

Notas:

  • Reiniciar las máquinas afectadas a menudo falla porque el proceso de apagado comienza a colgarse en algún lugar.
  • No hay conexión directa a Internet. Las causas extrañas son poco probables.
  • Parece depender del tipo de carga de trabajo que las máquinas procesan desde la perspectiva de una carga, porque tenemos máquinas que nunca se vieron afectadas (todavía).
  • Lo siento, no puedo ser más específico sobre lo que hacemos y por qué.
  • Sí, estoy especulando. Porque hoy es un efecto extremadamente desconcertante.
Tino
fuente
Esto es historico. RedHat confirmó: era un problema del kernel 2.6.18-194.el5 en combinación con el cliente NFS. Ya se solucionó en 2012. Vea la respuesta vinculada en mi texto para obtener un poco más de información. Si acierta hoy, es probable que sea alguna otra causa.
Tino
1
Esto sigue siendo un problema en algunos lugares. He visto toneladas de estos aparecer. aquí , y aquí hay algunos ejemplos.
trueCamelType