Limitar el uso de memory y minimizar el intercambio de swap en Unix / Linux

Tengo algunas máquinas que la máquina que utilizo para ejecutar un gran número de puestos de trabajo donde bash limitar el número de trabajos para no exceder la RAM disponible de la máquina. Ocasionalmente, calculo erróneamente la cantidad de memory que ocupan algunos de los trabajos y la máquina comienza a golpear el file de intercambio. Resuelvo esto enviando el kill -s STOP a uno de los trabajos de modo que pueda conseguir cambiado hacia fuera.

¿Cualquier persona sabe de una utilidad que supervisará un server para los processs por un nombre específico, y entonces pausa el que tiene la huella más pequeña de la memory es el consumo total de la memory alcanza un umbral deseado de modo que los más grandes puedan funcionar y terminar con un mínimo de intercambio de files de golpeo? Los processs detenidos deben ser reanudados una vez que se hayan completado algunos processs existentes.

One Solution collect form web for “Limitar el uso de memory y minimizar el intercambio de swap en Unix / Linux”

Echa un vistazo a thrash-protect (daemon escrito en Python)

  • no hace exactamente lo que quiere, pero sí identifica el comportamiento de swap-thrashing en todo el server, luego intenta identificar los processs que causan esto, y les envía una señal STOP para congelarlos.
  • luego más tarde envía una señal CONT para descongelarlos.

Si no desea utilizar este as-es, podría ser la base de un script personalizado que detiene el process con la huella de memory más pequeña.

Haciéndolo a mano

Para aquellos que no les gusta una herramienta automatizada, sólo puede utilizar htop para encontrar los processs con mayor porcentaje de uso de memory, y enviarles la señal STOP con kill -s STOP <pid> . A continuación, puede enviar kill -s CONT <pid> para reanudarlos. Sin embargo, es posible que tenga que esperar mucho time para que el htop y kill se ejecuten cuando el server se está debilitando.

El problema

Cuando una máquina está golpeando debido a la presión de la memory, por lo general verá un performance muy pobre a pesar de la baja utilización de la CPU.

Para diagnosticar esto:

  • se tarda decenas de segundos, o incluso minutos, para ejecutar un command de shell simple?
  • en la top o htop , ¿hay alto uso de intercambio, alto promedio de carga y bajo uso de la CPU?
  • ¿hay altas tasas swapin / swapout? Ejecute vmstat 1 y busque los valores si y so , en particular los numbers de 2 a 4 dígitos cada segundo, sin segundos de intercambio cero.
  • ¿Cómo mejorar la eficiencia de gnu paralelo a la lectura de una stream comprimida?
  • sftp remotly copyr en el file bash "unix"?
  • * nix mide el uso de la memory
  • Error de assembly del cliente NFS de Solaris 10 "Error en el compuesto NFS para el server 10.0.2.18: error 5 (RPC: Tiempo de espera agotado)"
  • commands de command-line mysql que un script sql ejecuta?
  • Unix para ejecutar commands repetidamente en shell sin usar crontab
  • ¿Cuáles son las mejores prácticas de las carpetas usr, var y etc?
  • ¿Cómo simular una IP de origen para probar las reglas iptables que están / no están disparando?
  • ¿Qué command Unix puedo usar para aplicar un límite de 100 files en una carpeta?
  • Tiempo de espera ssh sesiones después de la inactividad?
  • networkingundancia en un único destino SCSI
  • ¿Cómo puedo encontrar los directorys más grandes en unix / Ubuntu?
  • En la queue -f, ¿cómo puedo filtrar cosas que tienen ciertas palabras key?
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.