Tengo un servidor de desarrollo en el que a sshd
veces deja de funcionar porque la máquina se queda sin RAM. Sí, nos estamos quedando sin memoria y la actualización no es una opción viable en este momento. Lo que quiero hacer es decirle a la máquina: "¡Haz lo que quieras, pero deja 20MB y algo de CPU para sshd
!".
¿Cómo se puede hacer eso?
performance
limit
phunehehe
fuente
fuente
sshd
se comporta bien, creo que se atascaría si no hay suficiente CPU / RAM para usar, ¿no?Respuestas:
Probablemente pueda lograr algo así utilizando cgroups con el controlador de recursos de memoria .
Supongo que pondría todas sus tareas que consumen recursos en un espacio limitado (CPU y RAM)
cgroup
y dejaríasshd
"afuera" para que no esté restringido.(Sin embargo, agregar más intercambio, incluso en forma de archivo de intercambio, podría ser una buena opción).
fuente
Ah, pero los cgroups son fáciles :) Instale el paquete libcgroup. Cree un /etc/cgconfig.conf:
Inicie el
cgconfig
proceso que creará la jerarquía, cgroups y establecerá los límites. Si eso tiene éxito, tiene dos grupos c, los cuales tienen el 50% de la CPU asignada y 1G de memoria disponible (no sé cuál es su cantidad real de memoria disponible; suponiendo que sea 2G en este ejemplo). Ahora solo necesita mover todas las tareas (es decir, todos los procesos que se ejecutan en el sistema) desde el grupo raíz al grupo nosshd:Luego solo necesita obtener el PID del
sshd
proceso y moverlo a la información del archivo de tareas sshd:Ta-da, ya terminaste. Ahora puede estar seguro de que sshd siempre tendrá el 50% de la CPU y 1G de memoria.
fuente
Utilícelo
renice
para obtener una mayor prioridadsshd
o verifique la contabilidad. (acct) -> con esto puedes configurar recursos para los usuarios, así que ejecuta sshd con sfuente
ionice
a eso, y probablemente comenzaría sshd con agradable no volver a hacerlo más tarde.Una solución más general al problema del uso de los recursos de la aplicación es ejecutar sus aplicaciones en un contenedor con Docker . Luego puede ejecutar contenedores con CPU y límites de uso de memoria similares a cgroups.
fuente