¿Por qué deshabilitaría el archivo de intercambio en Mac OS X?

Encontré un hilo sobre la instalación de una unidad SSD en MacBook Pro.
Alguien en los comentarios también recomendó deshabilitar el archivo de intercambio, pero no dijo por qué:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
sudo rm /private/var/vm/swapfile*

Me pregunto por qué alguien querría deshabilitar el archivo de intercambio en Mac OS X.
¿Aumenta el rendimiento? ¿Estabilidad?
¿Alguna desventaja?

Finalmente, ¿tiene sentido deshabilitar el archivo de intercambio cuando no se usa SSD?

A menudo, los menos informados lo desactivan porque escucharon en algún blog que el rendimiento se disparó hasta las nubes. Los SSD también proporcionan un buen banco de pruebas porque son inherentemente rápidos. No hagas esto. Disminuirá la estabilidad y, con el tiempo, provocará efectos catastróficos. Hasta el día de hoy, no he visto ningún dato real (válido y confiable) que muestre un aumento en el rendimiento. Y es un componente crítico de un sistema operativo, ya sea que tenga 2 GB o RAM o 120.
¿Qué efectos catastróficos? Solo por curiosidad... parece estar haciendo que mi máquina (MacBook Pro de 4 GB) sea mucho más rápida. Por ejemplo, cuando abro nuevas ventanas de terminal ya no hay ningún bloqueo... es instantáneo donde antes tomaba varios segundos. Y pude abrir el doble de aplicaciones de las que usaría normalmente y no pasó nada malo.
orange80: la causa habitual de las ventanas de terminal lentas es el proceso de inicio de sesión que busca el inicio de sesión anterior, que puede solucionarse con hushlogin: apple.stackexchange.com/a/54167/22570 -- ¿Reiniciaste después de cambiar la configuración de intercambio? ? No hay ninguna razón por la que la velocidad de la ventana del terminal mejore al eliminar el intercambio.
Entiendo que con un SSD de pequeña capacidad es posible que desee liberar espacio. Pero por el lado del rendimiento, los SSD son mucho más rápidos que los HD, por lo que no veo cómo deshabilitar el intercambio en un sistema operativo basado en SSD realmente mejoraría el rendimiento. ¿Alguna experiencia al respecto? Gracias.
En Superusuario, con una respuesta aceptada: ¿Deshabilitar dynamic_pager de Mac? (2012-04-27)
Quiero deshabilitar el intercambio porque quiero proteger mi ssd para que no se escriba con demasiada frecuencia.

Respuestas (14)

Me pregunto por qué uno querría deshabilitar el archivo de intercambio en Mac OS X. ¿Aumenta el rendimiento? ¿Estabilidad? ¿Alguna desventaja?

Supongo que la gente lo haría por una unidad SSD porque esas unidades no tienen la misma vida útil que las unidades de disco giratorio magnético estándar. Hay un número más limitado de ciclos de escritura, por lo que presumiblemente usarlos con un archivo de intercambio consumiría estos ciclos más rápidamente.

Finalmente, ¿tiene sentido deshabilitar el archivo de intercambio cuando no se usa SSD?

Si tiene mucha RAM, esto posiblemente aceleraría el rendimiento, pero no es una buena idea en general. Si te topas con el techo de la memoria, las cosas se pondrán escamosas.

Además, la memoria cableada no se libera cuando deja de ser válida, solo se libera cuando se activa un evento de salida de página, lo que no ocurrirá si la memoria virtual está desactivada. Por lo tanto, no pasará mucho tiempo antes de que toda su memoria sea engullida, incluso si ya no se usa.

El sistema de memoria virtual de mac es muy perezoso, ya que solo crea los archivos de intercambio físicos cuando llega el momento de intercambiar la memoria real. Cualquiera que sea la velocidad que pueda ver al no tener que retrasar las cosas para acomodar una escritura en el intercambio, casi seguramente se verá compensada por las ganancias de velocidad anteriores de tener el intercambio disponible en primer lugar. Tener intercambio hace que las Mac sean más rápidas. El resto de la respuesta es acertada , ¡muy bien hecho!
Mis máquinas con Windows funcionan mucho más rápido sin el archivo de intercambio. Tengo 4 GB de memoria. Definitivamente lo haré en mi máquina Mac.
@geotavros El sistema de memoria virtual en Mac OS X no funciona igual que en Windows. Con 4 GB de memoria, confía en mí, tu Mac funcionará más rápido con la memoria virtual habilitada. Deshabilitar VM solo le causará dolores de cabeza e inestabilidad del sistema.
FYI, un SSD moderno con nivelación de escritura y una capacidad decente (128 GB), escrito continuamente, tendrá un límite de ciclo de escritura medido en siglos. Ese era un temor razonable en el año 2000 con los SSD pequeños y primitivos, pero ya no.
Para una MacBookPro5,2 con 8 GB de memoria, la mejora del rendimiento es espectacular. Para Snow Leopard o Lion en VirtualBoxVM, la mejora es asombrosa. En los tres casos, el sistema operativo parece usar la memoria de una manera que minimiza el riesgo de alcanzar el "límite" (donde todas las cosas se detienen de manera efectiva), pero ese riesgo persiste, por lo que es sensato observar el uso en el Monitor de actividad.
Para obtener información, VM (o memoria virtual) no debe confundirse con el archivo de intercambio. Windows, OS X, *BSD, Linux, muchos Unix usan memoria virtual. Por lo general, la arquitectura de estos sistemas operativos brinda una VM por proceso, el proceso asigna memoria dentro de esta área y el sistema operativo se encarga de colocar esta memoria asignada en la memoria RAM física o intercambiarla según lo considere el sistema operativo. Tener o no swap puede cambiar de una forma u otra el rendimiento por varios criterios (velocidad, capacidad de respuesta, etc.), esto dependerá de la carga de trabajo de cada uno. Como dicen los ingleses: ¡tu millaje puede variar! Y mucho en este caso.

La razón por la que deshabilitaron el archivo de intercambio es probablemente la paranoia de que los SSD tengan un número máximo de escrituras por bloque. Los archivos de intercambio se pueden escribir con frecuencia, lo que posiblemente provoque la fragmentación del disco (así como la fragmentación del sistema de archivos) y, finalmente, posiblemente provoque que el disco falle antes.

Dicho esto, este es definitivamente un caso de optimización prematura. Casi siempre es una idea HORRIBLE , HORRIBLE deshabilitar su archivo de intercambio. El archivo de intercambio está ahí para cuando sus programas en ejecución consumen más memoria de la que ha instalado físicamente. Si lo desactiva, es posible que no pueda ejecutar tantos programas al mismo tiempo (y el límite es mucho más bajo de lo esperado) o puede tener problemas (como congelar y tener que reiniciar la máquina) cuando te quedas sin memoria.

Lo último que experimenté (con el archivo de intercambio habilitado) cuando me quedé sin espacio en disco. Tenía una unidad de 120 gigas con ~3 gigas gratis. Mientras jugaba Civilization IV (un juego grande de pantalla completa), el sistema se quedó sin espacio en el disco duro (~50 megas gratis) y presentó la ventana "eliminar aplicaciones ahora". Esto se escondía detrás del juego de pantalla completa, por lo que el sistema simplemente se bloqueó. Si no hubiera podido ingresar desde otra Mac para eliminar varias aplicaciones de forma remota, habría tenido que mantener presionado el botón de encendido.

Me gustaría hacerme eco de la mala idea que es esta. El intercambio se usa incluso si tiene 16 GB de RAM. No tanto, pero ya está escrito un poco en el intercambio. Siempre. Es una salvaguardia. Y aunque el sistema operativo puede funcionar sin él, no puede estar seguro de cómo se comportan las aplicaciones de terceros. HD se escribe en. Es un hecho si la vida. Y no, no habrá un aumento de rendimiento en el "mundo real". Eso es un placebo.
@cksum En algunos escenarios de servidor específicos, los administradores de sistemas deshabilitarán el archivo de intercambio porque hace que esa configuración específica sea más rápida, pero no lo hacen sin probar para asegurarse de que (a) no se quedará sin memoria y (b ) en realidad es más rápido. Pero ese es un servidor manejado por profesionales: nunca es necesario en una máquina de consumo.
@cksum Podría estar de acuerdo con tu primera oración, tienes razón con la segunda, tercera y cuarta, pero el resto es basura. Un sistema operativo no se intercambia por "salvaguardar", un sistema operativo se intercambia para hacer más memoria disponible para el proceso activo que lo requeriría o para acelerar la E/S mediante el almacenamiento en búfer de datos, por lo que la memoria inactiva durante mucho tiempo se puede liberar en la RAM. Cuando desarrolla una aplicación, solicita memoria al sistema operativo, esta memoria es parte de su uso de memoria virtual, como desarrollador o aplicación, no sabe si el sistema operativo colocó esa memoria o parte de ella en la memoria RAM física o en el intercambio. (continuará)
Entonces, si una aplicación de terceros solicita más memoria de la que hay disponible, el sistema operativo le dará un error. Esto es independiente de tener swap o no. Tener intercambio pondrá el límite más alto, eso es todo. En cuanto al rendimiento, si tiene 2 usuarios conectados, si el usuario activo usa un editor de video con archivos grandes, el sistema operativo podría comenzar a colocar páginas de memoria del usuario inactivo en el intercambio para acelerar las tareas realizadas por el usuario activo. Obtienes un mejor rendimiento en términos de velocidad en este caso. Sin embargo, cambiar al otro usuario será más lento, el sistema operativo tiene que volver a leer el intercambio. ¡Esto no es un placebo!
@Huygens "Tener intercambio pondrá el límite más alto, eso es todo". ¿Te refieres a una especie de salvaguarda? "acelerar E/S almacenando datos en búfer" El intercambio no se usa para acelerar nada. La RAM es, y siempre ha sido, más rápida que un disco duro, SSD o HDD. El intercambio se usa cuando no hay más RAM disponible para asignar a un proceso determinado. Es una alternativa... una protección contra quedarse completamente sin memoria para asignar. Eso es. No hay más que eso.
@cksum Lo sé, y no entendiste mi comentario. Al liberar RAM (paginando parte de ella en el intercambio), el sistema operativo tiene más espacio para el búfer y el caché, lo que a menudo, pero no siempre, puede acelerar la E/S. Tener un límite más alto significa que en lugar de romperse en el límite de 2 GB (porque tiene 2 GB de RAM), se romperá en 4, 12 o más GB porque tiene intercambio. Entonces, tener intercambio permite tener más aplicaciones en ejecución simultánea. Pero una vez que alcanza el límite, el resultado es el mismo con o sin intercambio: ¡las aplicaciones se vuelven inestables! ¡Ampliar la puerta no es como crear una salvaguardia! Podemos chatear para aclarar nuestras opiniones.
@Huygens Sin embargo, en el caso del intercambio, el tamaño del espacio de memoria adicional disponible es el espacio restante en su disco duro de arranque, que normalmente es bastante grande. Y, entonces, sí, el sistema colapsará. Me ha pasado eso.
@CajunLuke En OS X puede ser el sistema de archivos completo, lo que podría ser un problema para los archivos de los usuarios, algunos archivos pueden tener un tamaño cero por alguna aplicación mal escrita. En otro sistema, el archivo tiene un tamaño limitado o usa particiones dedicadas. Quiero decir, si tuviera 300 GB libres en mi disco, me parecería un gran error si el sistema operativo intentara llenar eso con swap ;-) ¡Especialmente porque significa que algo terriblemente mal está sucediendo! :)
Una vez (en Linux) olvidé configurar una partición de intercambio al configurar. Cuando me estaba quedando colgado, pensé que era un error del kernel; resultó que era la falta de memoria de intercambio mientras jugaba mincecraft. usar intercambio.

Tiene dos excelentes respuestas que explican por qué es una mala idea en casi todos los casos en los que el sistema puede escribir en un dispositivo de almacenamiento.

La razón por la que puede deshabilitar el intercambio es para que el sistema pueda ejecutarse en medios de solo lectura, como un CD, DVD, una imagen de red bloqueada usando NetBoot o un llavero USB de solo lectura como el nuevo instalador Lion o el llavero de recuperación que se envía con algunas Mac que carecen de óptica. unidades

Tener memoria virtual significa que el sistema puede ejecutarse sustancialmente más rápido y usar menos RAM cuando muchos programas usan el mismo código de biblioteca común. Cada programa cree que tiene una copia privada de todo el código que necesita, pero cuando existe la memoria virtual, el sistema tiene una buena manera de asignar la misma RAM física a diferentes programas.

Deshabilitar el intercambio evita que la mac use una pequeña porción de su disco como caché para alguna memoria que se calculó, pero el programa no fue lo suficientemente inteligente como para escribir esos resultados en un caché adecuado.

Si tiene una copia de seguridad y tiempo para experimentar, ¿por qué no desactivarla y ver cómo cambia su experiencia?

Mantendría mi intercambio incluso si supiera con certeza que tenía que pagar por una nueva unidad anualmente. La velocidad que me da el intercambio es ENORME. Esto no siempre es así, y en momentos en que el sistema se agita o pagina, puede tener lo contrario. Muchas personas eligen ejecutar sin intercambio para que obtengan un error de asignación de memoria en lugar de dejar que su mac comience a paginar, ya que eso puede ralentizar una máquina cuando las cosas no funcionan correctamente.

Su caso con un SSD podría ser diferente, así que avísenos si lo prueba.

Encuentro lo contrario, una gran aceleración cuando dynamic_pager está deshabilitado . La captura de pantalla que se encuentra actualmente en apple.stackexchange.com/a/60661/8546 muestra el tamaño de la memoria virtual y las entradas de página medidas mientras ese demonio está deshabilitado (mientras que los archivos de intercambio no se usan).
¿Qué se está midiendo exactamente para determinar una aceleración? (¿O está viendo la ausencia de retrasos o demoras en la interfaz de usuario o algo más que no es fácilmente cuantificable o medible?)
Sin medir: con Lion, la mayoría de las cosas parecían notablemente más rápidas, lo suficiente como para usar la palabra enorme . Más recientemente: 10.8 en un VirtualBoxVM, por ejemplo, iniciar sesión y reanudar el Monitor de actividad toma dieciséis segundos con dynamic_pager, doce segundos sin. Para una comparación más amplia y mesurada, podríamos usar Phoronix Test Suite o Geekbench .

Seré el detractor aquí: deshabilité el intercambio en mi macbook pro unibody de finales de 2008 y mejoró notablemente el rendimiento: Menos espera, cambio más rápido entre aplicaciones.

Eso sí, vigilo mi memoria libre y tengo 6GB instalados. Las pocas veces que llegué al límite de memoria, el sistema se bloqueó :-D

En mi nueva MacBook Air, no se me ocurriría deshabilitar el intercambio, ya es rápido si está habilitado y, para empezar, solo tiene 4 GB.

Otra buena razón por la que las personas desactivan el intercambio en un SSD es porque obtienen SSD pequeños y necesitan todo el espacio que puedan obtener. En cualquier caso, no lo hagas.

Impresionante tener experiencia real donde esto funcionó. ¿Cuál fue el compromiso de RAM en la máquina cuando se deshabilitó el intercambio? ¿Qué sucedió cuando abriste más aplicaciones de las que cabían en la RAM? ¿Cuánta RAM tenía y qué aplicaciones se ejecutarían cómodamente en ese espacio sin errores?
@bmike, no estoy seguro, el sistema falla :-D, 6GB y todos los que uso :). Aperture o XCode son verdaderos consumidores de memoria y, a veces, pueden volcar el sistema, pero Skype, Mail, Adium, Safari, Chrome, iTunes y OmniFocus encajan muy bien...

Mi experiencia es similar a la de w00t. He deshabilitado el archivo de intercambio en SL y Lion porque el aumento de rendimiento funciona para mí. El uso por cable se sale de control después de una semana más o menos, pero un simple reinicio lo soluciona. No tengo SSD sino un disco lento de 5400rpm. Sin embargo, la vida útil de los SSD no es tan mala como la gente trata de hacerla parecer. Si lo hace simplemente porque tiene miedo de desgastar su SSD, consulte: http://www.anandtech.com/show/4159/ocz-vertex-3-pro-preview-the-first-sf2500- ssd/2 y http://communities.intel.com/thread/21717?tstart=0 Intel clasifica sus unidades por más de 20 GB al día, todos los días, durante un máximo de 5 años en una unidad de 80 gb. Las unidades de mayor tamaño durarán aún más. El usuario medio ni siquiera utiliza 10 GB/día.

Me aseguro de monitorear mi uso de memoria de 4 GB con iStat Menus y uso un script de Automator con el comando bash "purgar" (requiere que Xcode esté instalado) para borrar la memoria inactiva y abrir más memoria libre con frecuencia. Las pocas veces que tuve aplicaciones con pérdidas de memoria que usaron toda la RAM, tuve que hacer un restablecimiento completo. Las raras ocasiones en que eso sucede y la velocidad en general hacen que valga la pena mantener el archivo de intercambio deshabilitado para mí. Me doy cuenta de que no puedo tener tantas aplicaciones abiertas a la vez debido a esto como lo han dicho otros, pero puedo trabajar con eso.

Memory Scope tiene una opción para purgar automáticamente. (si dynamic_pager está habilitado, no permito las purgas).

Solo aporto mis 2 centavos para aquellos que desean deshabilitar el intercambio DEBIDO a los SSD pequeños: la imagen de suspensión usa mucho más espacio en el disco.

Y, para aquellos preocupados por la vida limitada del SSD (particularmente aquellos con MBA y chips SSD cableados que NO PUEDEN ser reemplazados), si su computadora duerme muchas veces al día, la reescritura de la imagen del sueño puede ser una preocupación. Mi computadora portátil duerme media docena de veces al día fácilmente. Eso escribe 48 GB de datos en mi SSD diariamente.

La solución en cada caso es deshabilitar la hibernación y luego eliminar el archivo de imagen de suspensión que es tan grande como la memoria RAM instalada (8 GB en mi caso).

El riesgo negativo: si la batería se agota mientras la computadora portátil está en modo de suspensión, se perderá el estado actual. Esto será equivalente a un reinicio forzado. Ningún daño físico a la computadora portátil, solo una pérdida de productividad. Si deshabilita la hibernación, se queda sin batería y no se puede cargar, ¡solo tenga el código a mano para habilitar la hibernación!

Para deshabilitar la hibernación, en la Terminal, el comando es el siguiente:

 sudo pmset -a hibernatemode 0

Para habilitar la hibernación, el comando es el siguiente:

 sudo pmset -a hibernatemode 3

Para eliminar la última imagen de suspensión para liberar espacio SSD/HDD (solo tiene sentido si desactiva la hibernación, de lo contrario, una nueva ocupará ese espacio la próxima vez que su computadora entre en suspensión):

 sudo rm -rf /var/vm/sleepimage

Fuente: man pmset

Deshabilitar el intercambio aumenta el rendimiento. Por ejemplo, uso regularmente Aperture y cuando el intercambio crece, el rendimiento empeora y cuando supera 1 Gb, tengo que reiniciar el sistema operativo para limpiarlo y restaurar el rendimiento. Nota: la máquina tiene 6 GB de RAM y NO está toda ocupada, alrededor de 3 GB son gratuitos, pero 1 G se cambia y degrada significativamente el rendimiento.

He estado deshabilitando el intercambio en las máquinas durante muchos años, tanto en OS X como en otras variantes de UNIX.

Utilizo una herramienta para que me avise cuando la memoria se está agotando y nunca me preocupo de que mi sistema se bloquee.

Mi iMac tiene 12 GB y, con el intercambio desactivado, casi siempre tengo 4 GB libres, incluso con varias herramientas de desarrollo, aplicaciones, navegadores, etc. abiertos.

¿Qué herramienta de memoria estás usando?

La razón principal para deshabilitar el archivo de intercambio no es la velocidad, es el espacio en disco.

Si uno es un usuario que ejecuta rutinariamente dentro de los 5 GB de una unidad completa, deshabilitar el intercambio detendrá la molestia constante de quedarse sin espacio; Rutinariamente termino con un archivo de intercambio de más de 4 GB de la navegación de rutina.

La mejora de la velocidad es asombrosa en las máquinas más antiguas; no es tan impresionante en máquinas modernas equipadas con SSD. (Bajo OSX 10.0 en un iMac, el uso de memoria virtual redujo a la mitad la velocidad de muchas operaciones, incluida la copia de archivos entre unidades).

Eso suena más como arreglar la bocina porque los frenos no funcionan. Si la unidad está demasiado llena, extraiga algunos de los datos.
@Tetsujin El archivo individual más grande en esa unidad FUE el archivo de intercambio.
mi punto sigue en pie. Menos datos, una unidad más grande o más RAM y no tendrá que hacerlo.

El patrón repetitivo aquí es este:

Aquellos que HAN deshabilitado el archivo de intercambio experimentaron un rendimiento mejorado (con suficiente RAM física)

Aquellos que NO han deshabilitado el espacio de intercambio están seguros de que no funcionará, y algo terrible sucederá, y le aconsejan fervientemente que no lo haga.

Esto se debe simplemente a dos cosas:

  1. Ideas obsoletas sobre la escasez y el alto costo de la memoria RAM física que ya no son válidas
  2. Un mecanismo de intercambio realmente deficiente en MacOS que provoca el uso de archivos de intercambio cuando hay suficiente RAM física.
Si el espacio de intercambio se usara SOLO cuando sea necesario, entonces sería genial. Sin embargo, ese no es el caso. Ejecuto máquinas virtuales de 2 gb y 4 gb en mi MacOS. Si tengo 1,6 gb de RAM libre, debería poder ejecutar una máquina virtual de 1 GB (u otro programa), pero no puedo porque el sistema operativo comienza a paginarlo. Como resultado, solo puedo usar alrededor del 85-90% de mi RAM. Si quiero acceder a TODA mi RAM, necesito deshabilitar la paginación. Hago esto en todas mis máquinas con Windows y me gustaría hacer lo mismo en mi MacOS. Si un programa se queda sin RAM, fallará. Eso es lo que quiero que suceda. No quiero otras aplicaciones en ejecución
YMMV. Ya no deshabilito el intercambio porque no lo he encontrado para ayudar a mejorar el rendimiento en máquinas modernas cargadas con RAM. Solía ​​​​hacerlo en el pasado, ya que me ayudó en los viejos tiempos. Hoy en día, no solo NO veo ningún cambio en el rendimiento al deshabilitar el intercambio, SÍ veo una gran inestabilidad de la aplicación.
Lo indeseable que sucederá es que un humano olvidará que no puede iniciar otro programa y, con el tiempo, la máquina se bloqueará debido a un error de memoria baja. Si esto es terrible, humorístico o educativo depende del momento, la frecuencia de las copias de seguridad y la tolerancia a los retrasos.

Solo una experiencia personal.

Memory Amount    |
 4 GB            | Don't disable it, Mountain Lion itself boots with about 1 GB.
 8 GB            | Do if you don't run apps that requires more than 1 GB of memory, in short, virtualization software, Photoshop, and stuff.
16 GB or more    | Do it! Even Xcode or Final Cut won't use more than 4 GB of memory, at least as I've seen. Just don't run too many virtual machines though.

Una nota rápida: si su Mac usa gráficos integrados, su memoria se comparte con su memoria principal con kernel_task. Por lo tanto, tendrás que restar esa cantidad de tu total utilizable.

Usuarios de SSD, es satisfactorio tener más espacio, pero es importante saber que la memoria virtual prospera en los SSD, puede obtener una gran ganancia de rendimiento de ella. ¿Daña el SSD? Sí, pero reemplazarás tu Mac por mucho tiempo antes de que te des cuenta.

Personalmente, deshabilité la memoria virtual en mi Retina MacBook Pro con solo 8 GB de memoria. Aquí están las matemáticas, el sistema usa alrededor de 2 GB de memoria con gráficos integrados. Eso es 6 GB para mí. Hago Xcode para el trabajo, en eso no consume más de 2 GB de memoria. Así que tengo mucho de sobra.

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 de RAM. Entonces probablemente deberías tener un intercambio. Pero esto depende de su carga de trabajo y de cómo use su máquina.

Si tiene más de 4 GB de RAM, es muy probable 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 probable es que el sistema operativo intercambie una pequeña parte no utilizada de la RAM al intercambio, aunque aparentemente queda mucho espacio. Sin embargo, a menudo el sistema usa la RAM "libre" para los búferes de archivos y otras cosas, y algunas cargas de trabajo pueden hacer que su búfer de archivos use toda la RAM disponible.

Información de contexto

De todos modos, ¿qué sucederí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 terminar el programa correctamente podría ser un desafío aún! Sin embargo, muchos desarrolladores no prueban la asignación de memoria correcta 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, que muchas aplicaciones se bloqueen porque normalmente tiene más de una aplicación ejecutándose al mismo tiempo. Con suerte, el kernel en sí debería ser inmune, pero en mi experiencia no siempre fue así.

Si tiene intercambio, tendrá el mismo comportamiento , pero tiene un límite más alto, por lo que es probable que no alcance 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! Quizás en unos años eso podría ser diferente). La única razón por la que alcanzaría los límites físicos de RAM es porque un proceso se volvió deshonesto y está consumiendo toda la RAM. No tener intercambio es un alivio, el kernel eliminará rápidamente el proceso no autorizado tan pronto como alcance el límite de RAM. Si tiene swap, obtendrá una experiencia dolorosa (quizás no en SSD...) ya que su sistema se intercambiará y se intercambiará y, a veces, no responderá hasta que, con suerte, su kernel mate al culpable.

Consejos

No debe asustarse por las personas que le dicen que algo terriblemente malo podría suceder si elimina el intercambio. Si lo hace, su espacio de direcciones físicas se reducirá, como si pasara de 4 GB de RAM a 2 GB. ¿Harías tal cosa? Entonces no deberías quitar el swap. 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 que la RAM física disponible, o si uno necesita mucha E/S (lectura/escritura en discos), entonces se debe mantener el intercambio.

Cuando se debe mantener el intercambio, un usuario debe intentar establecer límites a la cantidad de memoria que puede usar 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 deshabilitar el intercambio de manera segura o podría mantenerlo. No cambiará mucho incluso en términos de rendimiento porque si el sistema no usa el intercambio, entonces no se verá afectado por una caída de rendimiento (especialmente visible en un disco duro giratorio antiguo, menos 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 beneficioso en el caso de más que suficiente RAM disponible.

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 ella. Sin embargo, tiendo a usar la menor cantidad posible 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ó deshonesto y está consumiendo toda la memoria. Allí no tengo una barrera de cumplimiento del límite de memoria de swap y cgroup, por lo que las aplicaciones o los servicios pueden bloquearse, pero no el kernel. Por cierto, esta es una máquina Linux.

Luego, tengo mi Mac con 16 GB de RAM. No soy el único usuario y no nos importaría esperar al cambiar de usuario. Ahí sí tenemos swap, se me hace difícil planificar la carga de trabajo de otros usuarios de esta computadora. Incluso si fuera el único, 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 cambiar el sistema operativo en una aplicación no utilizada para poder obtener una E/S de disco más rápida o iniciar otra máquina virtual. ¡Aunque hasta ahora, no he visto este cambio de máquina!

Acabo de desactivar el archivo de intercambio en mi Macbook air 2011 (4 GB de RAM, SSD de 128 GB) porque estaba harto de que el archivo de intercambio consumiera lentamente todo mi espacio HD restante y luego tuviera que reiniciar. De esta manera, la idea es que ejecutaré menos programas.

Veré si eso realmente funciona, o si tendré que reiniciar de todos modos para borrar la memoria "Con cable", pero por ahora parece estar funcionando bien. La única vez que la memoria se llenó realmente, la computadora se ralentizó tanto como cuando mi SSD se quedó sin memoria, pero se recuperó mucho más rápido tan pronto como salí de las aplicaciones. (Y en realidad pude salir de las aplicaciones, lo que generalmente no hago cuando se llena el SSD).

Veré cómo va la estabilidad, pero hasta ahora soy un campista feliz. También me obliga a ejecutar menos aplicaciones (y pestañas de Chrome) a la vez, lo que es bueno para concentrarme en las tareas.

Algunos dicen: deshabilitar el intercambio mejora el rendimiento .

Esto es cierto. Cualquier uso de la memoria virtual es una gran desaceleración, incluso un SSD rápido es mil veces más lento que una DRAM ; un disco más como un millón de veces más lento. Solo necesita una pequeña fracción de los accesos a la memoria para cambiar y hacer una gran diferencia en el tiempo de ejecución. Si, por ejemplo, el 0,1% de los accesos van a su SSD rápido, eso teóricamente reduce a la mitad su velocidad. Sin embargo, la multitarea oculta esto: mientras espera su dispositivo de intercambio, la CPU puede mantenerse ocupada haciendo otra cosa. Entonces, siempre que tenga un nivel razonable de multitarea para que algo esté listo para ejecutarse cuando tenga una falla de página, la pérdida de rendimiento no es tan extrema. Demasiadas cosas con altas demandas de memoria ejecutándose a la vez conducen a una paliza : la actividad de intercambio domina el rendimiento.

Pero: sin intercambio, si te quedas sin memoria física, es como chocar contra una pared. Posiblemente pueda correr más rápido si reduce un poco su peso al no usar sus anteojos; la lógica de esto no mejora si tienes lentes muy pesados …