Recientemente tuve una pérdida de datos porque el disco duro estaba completamente agotado por la memoria virtual y algunos programas no podían manejar el espacio libre cero en el disco duro. ¿Cómo puedo evitar que esto suceda (además de mantener siempre algunos GB como búfer)?
Puedo proponerte una forma de hacerlo, aunque no está completa.
Puede establecer el límite de memoria por proceso usando launchctl limit
(consulte la página del manual ). Sin embargo, esto es por proceso, no en todo el sistema.
En la vida real, pocos procesos consumen una gran cantidad de memoria. Por lo tanto, le aconsejo que mire Activity Monitor
la salida y vea cuáles son los procesos que consumen más. Cuente los que están usando más del 20% de su RAM. ¿Cuántos procesos de este tipo tiene? Supongamos n y supongamos que tiene m GB de RAM. ¿Cuánto espacio de intercambio máximo desea utilizar? Supongamos s GB de intercambio.
Yo haría el siguiente cálculo:(m + s - 1) / n = <max memory per process in GB>
Convierte los GB en B:<max memory per process in GB> * 1024 * 1024 * 1024 = <max mem per proc in B>
Ahora pruebe este límite y vea si funciona (tenga en cuenta que esta configuración se perderá después de reiniciar, por lo que es "seguro" de realizar):
sudo launchctl limit rss <max mem per proc in B> <max mem per proc in B + 1073741824>
Si está satisfecho con esta elección, puede guardarlos para que sean permanentes. Edite el archivo /etc/launchd.conf
y agregue:
limit rss <max mem per proc in B> <max mem per proc in B + 1073741824>
graham perrin