Resumen Ejecutivo
Un área de intercambio (llamada partición de intercambio, archivo de intercambio o archivo de página) es solo un mecanismo para aumentar la memoria física direccionable por el sistema operativo.
Si tiene poca RAM física disponible, y en la máquina actual, diría que tiene 4 GB o menos RAM. Entonces probablemente deberías tener un intercambio. Pero esto depende de su carga de trabajo y de cómo usa su máquina.
Si tiene más de 4 GB de RAM, existe una buena posibilidad de que su sistema nunca use el intercambio. Entonces, si el intercambio está habilitado o no, esto no cambiará mucho.
Aunque esto depende de otros factores, cuanto más tiempo esté funcionando su máquina, más probabilidades hay de que el sistema operativo cambie la pequeña porción de RAM no utilizada al intercambio, aunque aparentemente hay mucho espacio restante. Sin embargo, a menudo el sistema usa la RAM "libre" para los búferes de archivos y otras cosas, y alguna carga de trabajo puede hacer que el búfer de archivos use toda la RAM disponible.
Información de antecedentes
De alguna manera, ¿qué pasaría si deshabilita el intercambio y su memoria se usa por completo? Bueno, la próxima vez que una aplicación solicite más memoria (como con un malloc o realloc), ¡recibirá un error! Si está codificado correctamente, la aplicación lo detectará, ¡pero manejar un error de este tipo y finalizar el programa con gracia podría ser un desafío aún! Sin embargo, muchos desarrolladores no prueban la asignación exitosa de memoria y, a menudo, la aplicación se bloquea tan pronto como se va a utilizar esta memoria no asignada. Por lo tanto, existe una gran posibilidad de que la aplicación se bloquee y, de hecho, muchas aplicaciones se bloqueen porque normalmente tiene más de una aplicación ejecutándose al mismo tiempo. Con suerte, el núcleo en sí debería ser inmune, pero en mi experiencia no siempre fue así.
Si tiene un intercambio, tendrá el mismo comportamiento , pero tiene un límite más alto, por lo que es probable que no llegue a ese límite.
Personalmente tengo 2 máquinas con 8 y 16 GB de RAM. Mi uso personal de estas máquinas nunca debería acercarme al uso de toda esta RAM (¡hoy! Tal vez en unos años podría ser diferente). La única razón por la que alcanzaría los límites físicos de RAM es que un proceso se volvió deshonesto y está consumiendo toda la RAM. No tener un intercambio es un alivio, el kernel matará rápidamente el proceso no autorizado tan pronto como llegue al límite de RAM. Si tiene un intercambio, obtendrá una experiencia dolorosa (tal vez no en SSD ...) ya que su sistema intercambiará, intercambiará e intercambiará y, a veces, no responderá hasta que, con suerte, su kernel mate al culpable.
Asesora
No debe asustarse que la gente le diga que algo terriblemente mal podría suceder si elimina el intercambio. Si lo hace, su espacio de direcciones físicas se reducirá, como si fuera de 4 GB de RAM a 2 GB. ¿Harías algo así? Entonces no debe eliminar el intercambio. Sin embargo, puede decidir limitarlo, y eso sería prudente .
Si uno piensa que su carga de trabajo podría llevarlo a usar cerca o más de la RAM física disponible, o si necesita mucha E / S (lectura / escritura en discos), entonces debe mantenerse el intercambio.
Cuando se debe mantener el intercambio, un usuario debe intentar establecer límites a la cantidad de memoria que puede utilizar un proceso. En un sistema Linux, uno podría usar los límites de memoria de cgroups para evitar que algún proceso se salga de control, no sé el equivalente en OS X, pero esa debería ser la forma.
Sin embargo, si uno tiene más que suficiente memoria disponible para su carga de trabajo, entonces podría desactivar el intercambio de forma segura o podría conservarlo. No cambiará mucho incluso en términos de rendimiento porque si el sistema no utiliza el intercambio, entonces no se verá afectado por una caída en el rendimiento (especialmente visible en un disco duro rotativo antiguo, menos aún en SSD).
Usar el mismo truco que el anterior para tratar de establecer límites de memoria por proceso o grupo de procesos también es beneficiario en el caso de RAM disponible más que suficiente.
Mi propio ejemplo
Tengo una PC vieja con 1 GB de RAM, allí tengo un gran intercambio: 4 GB para poder ejecutar Firefox y otras aplicaciones en él. Sin embargo, tiendo a usar la menor cantidad de aplicaciones (o pestañas en Firefox) para tener una experiencia de usuario correcta.
Tengo un pequeño servidor con 8 GB de RAM. Allí sé exactamente mi carga de trabajo y no quiero que mi servidor se ralentice porque un proceso se volvió falso y está consumiendo toda la memoria. Allí no tengo barrera de imposición de límite de memoria de intercambio y cgroup, por lo que las aplicaciones o servicios pueden fallar pero no el núcleo. Por cierto, esta es una máquina Linux.
Entonces, tengo mi Mac con 16 GB de RAM. No soy el único usuario, y no nos importaría esperar al cambiar de usuario. Allí sí tenemos intercambio, es difícil para mí planificar la carga de trabajo de otros usuarios de esta computadora. Incluso si fuera el único que usaría swap. A menudo ejecuto varias máquinas virtuales y uso aplicaciones que consumen memoria, pero no todas al mismo tiempo, por lo que no me importaría que el sistema operativo se intercambie en una aplicación no utilizada para poder obtener E / S de disco más rápido o iniciar otra máquina virtual. ¡Hasta ahora, no he visto esta máquina intercambiando!