¿Cómo puedo mover los files de intercambio de memory virtual a una unidad o partición diferente?

nota: esta es una pregunta que hice en SuperUser hace un time. Lo estoy volviendo a publicar aquí porque creo que pertenece aquí.

De forma pnetworkingeterminada, Mac OS X almacena sus files de intercambio en /private/var/vm/ . Me gustaría colocar los files de intercambio en una location diferente. ¿Cómo puede hacerse esto?

  • ¿Por qué OS X usa memory virtual cuando todavía tengo RAM libre?
  • MacOS usa memory virtual / intercambia mucho
  • ¿Cómo puede la memory virtual ser mayor que el espacio total disponible?
  • ¿Cómo acceder / dev / mem en OSX?
  • ¿Qué significa si tengo un montón de memory "Inactiva" al final de un día de trabajo?
  • ¿Cómo funciona la gestión de memory en Mac OS X?
  • ¿Por qué debería deshabilitar el file de intercambio en Mac OS X?
  • OS X: el uso de la memory me enloquece
  • 3 Solutions collect form web for “¿Cómo puedo mover los files de intercambio de memory virtual a una unidad o partición diferente?”

    nota: copydo de SuperUser:

    Para versiones anteriores de OSX, vea este hilo en forums.macosxhints.com.

    El crédito va a dblu para explicar el uso de plutil , ZILjr para introducir el command wait4path y ekl para simplificar todo al eliminar la necesidad de un script de shell intermedio.

    Solución completa:

    1. Abra Terminal y haga una copy de security del file dynamic_pager.plist pnetworkingeterminado de Apple:

     $ cd /System/Library/LaunchDaemons $ sudo cp com.apple.dynamic_pager.plist{,_bak} 

    2. Convierta el plist del binary al XML simple:

     $ sudo plutil -convert xml1 com.apple.dynamic_pager.plist 

    3. Abra la list convertida con su editor de text de su elección. (Yo uso pico , vea la respuesta de dblu para un ejemplo usando vim ):

     $ sudo pico -w com.apple.dynamic_pager.plist 

    Debe verse de la siguiente manera:

     <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$ <plist version="1.0"> <dict> <key>EnableTransactions</key> <true/> <key>HopefullyExitsLast</key> <true/> <key>Label</key> <string>com.apple.dynamic_pager</string> <key>OnDemand</key> <false/> <key>ProgramArguments</key> <array> <string>/sbin/dynamic_pager</string> <string>-F</string> <string>/private/var/vm/swapfile</string> </array> </dict> </plist> 

    4. Modifique la matriz ProgramArguments (líneas 13 a 18) para usar el wait4path shell wait4path antes de iniciar dynamic_pager. Ver nota # 1 para detalles sobre por qué esto es necesario. En el siguiente ejemplo, mi partición se llama Swap , y elegí poner los .vm en un directory oculto en esa partición, llamado .vm asegúrese de que el directory que especifique realmente exista . El XML debe verse de la siguiente manera:

     <key>ProgramArguments</key> <array> <string>/bin/bash</string> <string>-c</string> <string>/bin/wait4path /Volumes/Swap/ &amp;&amp; /sbin/dynamic_pager -F /Volumes/Swap/.vm/swapfile</string> </array> 

    5. Guarde el plist, y regrese al prompt de la terminal. Usando pico , los commands serían:

     <ctrl+o> to save the file <enter> to accept the same filename (com.apple.dynamic_pager.plist) <ctrl+x> to exit 

    6. Convierte el plist modificado a binary:

     $ sudo plutil -convert binary1 com.apple.dynamic_pager.plist 

    7. Reinicia tu Mac. Si tiene problemas, cambie al modo de inicio detallado presionando Comando-v inmediatamente después de la campanilla de inicio. Esto le permitirá ver todos los posts de inicio que aparecen durante el inicio. Si se encuentra con un problema aún peor (es decir, nunca ve la pantalla de inicio de session), mantenga presionadas las Comando-s. Esto iniciará la computadora en modo de usuario único (sin interfaz gráfica de usuario, solo un símbolo del sistema) y le permitirá restaurar la copy de security de com.apple.dynamic_pager.plist que realizó en el paso 1.

    8. Una vez que la computadora arranca, encienda la Terminal y verifique que los files de intercambio hayan sido movidos:

     $ cd /Volumes/Swap/.vm $ ls -l 

    Debería ver algo como esto:

     -rw------- 1 someUser staff 67108864 18 Sep 12:02 swapfile0 

    9. Eliminar los viejos files de intercambio:

     $ cd /private/var/vm $ sudo rm swapfile* 

    10. ¡Ganar!

    Nota 1

    La modificación de los arguments a dynamic_pager en el plist sin usar wait4path no siempre funciona, y cuando falla, lo hace de una manera espectacularmente silenciosa. El problema radica en el hecho de que dynamic_pager se inicia muy temprano en el process de inicio. Si aún no se ha montado su partición de intercambio cuando se carga por primera vez dynamic_pager (en mi experiencia, esto ocurre el 99% del time), entonces el sistema se abrirá path. Creará un enlace simbólico en su directory / Volumes que tiene el mismo nombre que su partición de intercambio, pero apunta a la location pnetworkingeterminada del file de intercambio (/ private / var / vm). Luego, cuando se monte la partición de intercambio real, se le asignará el nombre Swap 1 (o YourDriveName 1 ). Puede ver el problema abriendo Terminal y enumerando los contenidos de su directory / Volumes:

     $ cd /Volumes $ ls -l 

    Verás algo como esto:

     drwxrwxrwx 11 yourUser staff 442 16 Sep 12:13 Swap -> private/var/vm drwxrwxrwx 14 yourUser staff 5 16 Sep 12:13 Swap 1 lrwxr-xr-x 1 root admin 1 17 Sep 12:01 System -> / 

    Tenga en count que esta falla puede ser muy difícil de detectar. Si searcha los files de intercambio como lo muestro en el paso 12, ¡aún los vería ! El enlace simbólico haría parecer que sus files de intercambio se habían movido, a pesar de que en realidad se estaban almacenando en la location pnetworkingeterminada.

    Nota 2

    Originalmente no pude hacer que esto funcione en Snow Leopard porque com.apple.dynamic_pager.plist se almacenó en formatting binary. Hice una copy del file original y lo abrí con el Property List Editor de Apple (disponible con Xcode) para realizar cambios, pero este process agregó algunos attributes extendidos al file plist que causó que el sistema lo ignorara y simplemente usara los valores pnetworkingeterminados. . Como señaló dblu, usar plutil para convertir el file a XML simple funciona como un hechizo.

    Nota 3

    Puede consultar la aplicación de la Consola para ver los posts que emite dynamic_pager_init a la pantalla. Si ve las siguientes líneas repetidas una y otra vez, hay un problema con la configuration. Me encontré con estos posts porque olvidé crear el directory '.vm' que especifiqué en dynamic_pager_init.

     com.apple.launchd[1] (com.apple.dynamic_pager[176]) Exited with exit code: 1 com.apple.launchd[1] (com.apple.dynamic_pager) Throttling respawn: Will start in 10 seconds 

    Cuando todo funciona correctamente, puede ver el post anterior solo un par de veces, y luego no más posts de "reactivación de aceleración". Esto significa que el sistema tuvo que esperar a que se cargue la partición, pero al final fue exitoso.

    Excluir el path de Time Machine

    En OS X 10.7 y posterior, puede hacer esto con tmutil . Ejemplo:

    sudo tmutil addexclusion -p /Volumes/Swap/.vm

    Para ese ejemplo, para revisar el resultado:

    tmutil isexcluded /Volumes/Swap && tmutil isexcluded /Volumes/Swap/.vm

    Si el volumen utilizado para el intercambio no necesita ser indexado

    Use mdutil . Ejemplo, para apagar y luego borrar la tienda:

    sudo mdutil -i off /Volumes/Swap && sudo mdutil -E /Volumes/Swap

    No he podido establecer una solución de inicio de sistema permanente, ya que 10.10 ya no usa /etc/.rc en el arranque, y el método com.apple.dynamic_pager.plist falló … sin embargo …

     sudo mkdir /Volumes/Swap/s sudo chmod 755 /Volumes/Swap/s sudo sysctl vm.swapfileprefix=/Volumes/Swap/s 

    cambia el prefijo almacenado según lo informado por

     sysctl vm 

    durante la session y sobrevive al reinicio.

    esto podría ser envuelto como un command de Unix en un file de text:

     $/bin/sh sysctl vm.swapfileprefix=/Volumes/Swap/s 

    y ejecutar al iniciar session.

    Solución simple:

    http://www.macupdate.com/app/mac/10771/swap-relocator

    ¡SwapRelocator 1.1.2 funciona muy bien en Maverick!

    Utilice (por ejemplo) Tinker Tool System para permitir que los volúmenes se monten antes del inicio de session, lo que resuelve el único problema que encontré.

    (Gracias Filippo, finalmente puedo mover el intercambio desde el volumen de arranque duplicado a un volumen de caching seccionado (todos los SSD))

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).