Recientemente he tenido la pérdida de datos debido a que el disco duro estaba completamente utilizado por la memoria virtual y algunos programas no los podía manejar sin espacio libre en el disco duro. ¿Cómo puedo evitar que esto suceda (además de mantener siempre un par de GB como un tampón)?
Respuesta
¿Demasiados anuncios?Puedo proponer una manera de hacer que, aunque no es completa.
Puede establecer el límite de memoria por proceso mediante launchctl limit
(consulte la página man). Sin embargo, esto es por procesos no todo el sistema.
En la vida real, algunos procesos consumen gran cantidad de memoria. Por lo tanto, yo le aconsejo que mire Activity Monitor
de salida y ver cuáles son los procesos que consumen la mayoría. El recuento de los que está utilizando más de un 20% de la RAM. Cómo muchos de estos procesos tienen? Supongamos que n y suponga que tiene m GB de RAM. Cuánto máximo el espacio de intercambio desea utilizar? Supongamos que s GB de swap.
Me gustaría hacer el siguiente cálculo: (m + s - 1) / n = <max memory per process in GB>
Convertir el GB en B: <max memory per process in GB> / 1024 / 1024 / 1024 = <max mem per proc in B>
Ahora trata de un límite y ver si funciona (nota, este ajuste se pierde después de un reinicio, por lo que es "seguro" para llevar a cabo):
sudo launchctl limit rss <max mem per proc in B> <max mem per proc in B + 1073741824>
Si está satisfecho con esta elección, a continuación, puede guardarlos, por lo que son permanentes. Editar el archivo /etc/launchd.conf
y agregar:
limit rss <max mem per proc in B> <max mem per proc in B + 1073741824>