Me encontré con un hilo sobre la instalación de una unidad SSD en MacBook Pro.
Alguien en los comentarios también recomendó desactivar 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é uno 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?
Respuestas:
Supongo que la gente lo haría para 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 agotaría estos ciclos más rápidamente.
Si tiene mucha RAM, esto podría acelerar el rendimiento, pero no es una buena idea en general. Si te topas con el límite de la memoria, las cosas se volverán inestables.
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 sucederá si la Memoria virtual está desactivada. Por lo tanto, no tardará mucho en engullir toda su memoria, incluso si ya no se usa.
fuente
La razón por la que deshabilitaron el archivo de intercambio es probablemente paranoia sobre SSD que tienen un número máximo de escrituras por bloque. Los archivos de intercambio se pueden escribir con frecuencia, posiblemente causando fragmentación del disco (así como la fragmentación del sistema de archivos) y, eventualmente, posiblemente causando 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 consuman más memoria de la que ha instalado físicamente. Si lo deshabilita, es posible que no pueda ejecutar tantos programas al mismo tiempo (y el límite es mucho más bajo de lo que esperaría) o puede tener problemas (como congelar y tener que reiniciar la máquina) cuando te quedas sin memoria.
Lo último que he experimentado (con el archivo de intercambio habilitado) cuando se está quedando sin espacio en disco. Tuve una unidad de 120 conciertos con ~ 3 conciertos gratis. Mientras jugaba Civilization IV (un gran juego de pantalla completa), el sistema se quedó sin espacio en el disco duro (~ 50 megas gratis) y presentó la ventana "matar 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.
fuente
Tiene dos excelentes respuestas que explican por qué es una mala idea en casi todos los casos en 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, imagen de red bloqueada usando NetBoot o un control USB de solo lectura como el nuevo instalador Lion o control de recuperación que se envía con algunos equipos que carecen de dispositivos ópticos 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 memoria virtual, el sistema tiene una buena manera de asignar la misma RAM física a diferentes programas.
Deshabilitar el intercambio evita que el Mac use una pequeña porción de su unidad como caché para alguna memoria que se ha calculado, pero el programa no fue lo suficientemente inteligente como para escribir esos resultados en una caché adecuada.
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 un nuevo disco anualmente. La velocidad que me da el intercambio es ENORME. Esto no siempre es así, y en ocasiones cuando el sistema se está agitando o buscando, puede tener lo contrario. Muchas personas optan por ejecutar sin intercambio para que obtengan un error de asignación de memoria en lugar de permitir que su Mac comience a paginar, ya que eso puede ralentizar una máquina cuando las cosas no funcionan sin problemas.
Su caso con un SSD podría ser diferente, así que avísenos si lo prueba.
fuente
dynamic_pager
, doce segundos sin. Para una comparación más amplia y más medida, podríamos usar Phoronix Test Suite o Geekbench .Voy a ser el más negativo aquí: deshabilité el intercambio en mi Macbook Pro unibody de finales de 2008 y mejoró notablemente el rendimiento: menos esperas, cambio más rápido entre aplicaciones.
Eso sí, vigilo mi memoria libre y tengo 6 GB instalados. Las pocas veces que llegué al límite de memoria, el sistema se bloqueó :-D
En mi nuevo MacBook Air no soñaría con deshabilitar el intercambio, ya es rápido con él habilitado y solo tiene 4 GB para empezar.
Otra buena razón por la cual las personas deshabilitan el intercambio en un SSD es porque obtienen pequeños SSD y necesitan todo el espacio que pueden obtener. En cualquier caso, no lo hagas.
fuente
Mi experiencia es similar a la de w00t. He desactivado el archivo de intercambio en SL y Lion porque el aumento de rendimiento funciona para mí. El uso con cable se sale de control después de una semana más o menos, pero un simple reinicio lo soluciona. No tengo un SSD pero un disco lento de 5400 rpm. Sin embargo, la esperanza de vida de los SSD no es tan mala como la gente trata de hacer que aparezcan. Si lo está haciendo 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 califica sus unidades por más de 20 GB al día, todos los días, hasta 5 años en una unidad de 80 gb. Las unidades de mayor tamaño durarán aún más. El usuario promedio ni siquiera usa 10GB / día.
Me aseguro de monitorear mi uso de memoria de 4GB con iStat Menus y usar un script Automator con el comando bash "purge" (requiere que se instale Xcode) para borrar la memoria inactiva y abrir más memoria libre con frecuencia. Las pocas veces que he tenido aplicaciones con pérdidas de memoria que usan toda la RAM, tuve que hacer un restablecimiento completo. Las raras ocasiones de que eso suceda y la aceleración 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.
fuente
Solo agrego mis 2 centavos para aquellos que desean deshabilitar el intercambio DEBIDO a SSD pequeños: la imagen dormida usa mucho más espacio en 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 laptop duerme media docena de veces / día fácilmente. Eso escribe 48GB de datos en mi SSD diariamente.
La solución en cada caso es deshabilitar la hibernación y luego eliminar el archivo de imagen dormida que es tan grande como la RAM instalada (8 GB en mi caso).
El riesgo a la baja: si su batería se agota mientras su computadora portátil está en reposo, su estado actual se perderá. Esto será equivalente a un reinicio forzado forzado. Sin daños físicos a la computadora portátil, solo una pérdida de productividad. Si deshabilita la hibernación, agota la batería y no puede cargarla, ¡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:
Para habilitar la hibernación, el comando es el siguiente:
Para eliminar la última imagen dormida 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 duerma):
Fuente: man pmset
fuente
La desactivación de intercambio hace aumentar el rendimiento. Por ejemplo, uso regularmente Aperture y cuando el intercambio crece, el rendimiento empeora y cuando va más allá de 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á ocupada en su totalidad, aproximadamente 3 GB es gratis, pero 1G intercambiable degrada significativamente el rendimiento.
fuente
He estado deshabilitando el intercambio en máquinas durante muchos años, tanto en OS X como en otras variantes de UNIX.
Utilizo una herramienta para alertarme cuando la memoria se está agotando y nunca me preocupo por el bloqueo de mi sistema.
Mi iMac tiene 12 GB y, con el intercambio desactivado, casi siempre tengo 4 GB libres, incluso con múltiples herramientas de desarrollo, aplicaciones, navegadores, etc. abiertos
fuente
El patrón de repetición aquí es este:
Aquellos que HAN deshabilitado el archivo de intercambio experimentaron un rendimiento mejorado (con suficiente RAM física)
Aquellos que NO han desactivado el espacio de intercambio están seguros de que no funcionará, y sucederá algo terrible, y aconsejan ardientemente que no lo hagan.
Esto se debe simplemente a dos cosas:
fuente
Solo una experiencia personal.
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á que restar esa cantidad de su total utilizable.
Usuarios de SSD, es satisfactorio tener más espacio, pero es importante saber que la memoria virtual prospera en las SSD, puede obtener una gran ganancia de rendimiento. ¿Duele el SSD? Sí, pero reemplazará por mucho tiempo su Mac antes de que lo note.
fuente
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!
fuente
Acabo de deshabilitar el archivo de intercambio en mi Macbook air 2011 (4 GB de RAM, 128 GB de SSD) 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 solo ejecutaré menos programas.
Veré si eso realmente funciona, o si tendré que reiniciar de todos modos para borrar la memoria "cableada", pero por ahora parece estar funcionando bien. La única vez que la memoria se llenó realmente, la computadora se ralentizó tanto como lo hace cuando mi SSD se queda 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, que normalmente no lo hago cuando el SSD se llena).
Veré cómo funciona 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 cual es bueno para el enfoque de tareas.
fuente
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 habitualmente dentro de los 5 GB de una unidad completa, deshabilitar el intercambio detendrá la molestia constante de quedarse sin espacio; De forma rutinaria, 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 máquinas antiguas; No es tan impresionante en las 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).
fuente