¿Creación de archivos de intercambio y sleepimage?

2

Recientemente instalé un SDD en mi MacPro y presté atención al almacenamiento utilizado, tanto para estar cómodo con el tamaño del SSD que iba a ser suficiente, como para que el disco duro de copia de seguridad TM no se llenara demasiado rápido. Esta mañana noté que la carpeta /private/var/vm tenía archivos de intercambio de 64 GB. Mi pregunta sería cómo reducir esto y entender por qué sucede. El tamaño de la unidad SSD es de solo 128 GB y funcionaba con unos 60 GB. Este problema fuera de control estaba a punto de crear un problema de "no habitación", aunque supongo que eso habría forzado un reinicio de todos modos.

Leí ¿Qué es el "sleepimage" y ¿"Swapfile" documents? y le advirtió que no elimine estos archivos. Busqué un poco más, y encontré que un reinicio borró todo. Después del inicio, hay un archivo de intercambio de 67 MB, en comparación con los 64 archivos de un GB completo.

Nunca vi esto antes. Entiendo que un reinicio es la respuesta, pero ¿hay algo que hacer para evitar que ocurra? Al menos me gustaría entender qué proceso o aplicación activó esto.

Estoy corriendo 10.6.8 Snow Leopard

    
pregunta JoeTaxpayer 02.02.2015 - 17:20

3 respuestas

3

Probablemente un proceso (o más) en su sistema se estaba ejecutando de forma descontrolada.

Usa tu Mac como de costumbre. De vez en cuando, compruebe la carpeta / var / vm y si se encuentra con muchos archivos de intercambio, abra Terminal.app e ingrese:

ps xa | awk '{print $1}' | xargs -n 1 sudo vmmap | grep -A3 'Summary' > /Users/YourUserName/Desktop/vmmap_summary.txt

Dependiendo de la cantidad de procesos en ejecución, esto tomará alrededor de 30-60 segundos. Su cuenta debe poder ejecutar sudo (= normalmente una cuenta de administrador).

Esto crea un archivo de texto llamado vmmap_summary.txt en su escritorio que contiene algo de memoria e información de intercambio de todos los procesos en ejecución ordenados por PID. Algunos fallarán porque su ID de proceso ya se ha ido.

Ejemplo (truncado a los primeros cuatro PID):

==== Summary for process 1
ReadOnly portion of Libraries: Total=51.8M resident=12.9M(25%) swapped_out_or_unallocated=38.9M(75%)
Writable regions: Total=92.9M written=808K(1%) resident=2112K(2%) swapped_out=0K(0%) unallocated=90.8M(98%)

==== Summary for process 21  
ReadOnly portion of Libraries: Total=77.0M resident=30.9M(40%) swapped_out_or_unallocated=46.1M(60%)  
Writable regions: Total=88.5M written=1116K(1%) resident=5144K(6%) swapped_out=0K(0%) unallocated=83.4M(94%)

==== Summary for process 22
ReadOnly portion of Libraries: Total=150.1M resident=60.1M(40%) swapped_out_or_unallocated=90.0M(60%)
Writable regions: Total=93.2M written=1460K(2%) resident=5440K(6%) swapped_out=0K(0%) unallocated=87.8M(94%)

==== Summary for process 23
ReadOnly portion of Libraries: Total=77.2M resident=31.3M(41%) swapped_out_or_unallocated=45.9M(59%)
Writable regions: Total=96.9M written=1412K(1%) resident=2036K(2%) swapped_out=0K(0%) unallocated=94.9M(98%)

Comprueba si hay algún proceso de mal comportamiento (swapped_out > > > 0k).

Para obtener el nombre del proceso de un PID de mal comportamiento y más información ingrese:

ps aux | awk '$2 == PID  { print $0 }'

La salida de ejemplo para un proceso con el ID 21 - ps aux | awk '$2 == 21 { print $0 }' - sería:

root              21   0,0  0,0  2507740   6552   ??  Ss   10:03am   0:01.48 /usr/libexec/kextd

Ahora busque qué puede estar mal con la aplicación o el daemon.

    
respondido por el klanomath 02.02.2015 - 19:37
1

Los elementos del archivo de intercambio que no debe tocar, ya que forman parte de la estructura central del sistema Mac OS X; Existen archivos swap similares en otros sistemas Unix / Linux. Pero el archivo sleepimage se puede eliminar de forma segura siempre que sepa qué hace y qué funcionalidad perderá si lo elimina / deshabilita.

Básicamente, en el modo de suspensión "de la vieja escuela", si tenía aplicaciones abiertas y luego puso su Mac en suspensión y luego la Mac perdió energía, habría sido como si hubiera arrancado el cable de alimentación de la pared. Lo que significa que el estado de todas las aplicaciones se anularía y su trabajo desaparecería en el éter digital.

Pero el nuevo tipo de modo de suspensión (también conocido como "modo de hibernación") utiliza sleepimage para agregar una red de seguridad si la necesita. Es decir, cuando va a dormir en una Mac que lo admita (depende de su sistema; más detalles en esta respuesta ) , el sistema guardará una instantánea de su sistema (también conocido como: lo que está en la RAM) en el disco duro en un archivo sleepimage . De esa manera, si su Mac pierde energía, el estado de su aplicación de trabajo y el trabajo relacionado se guardan en el disco. Entonces, cuando la máquina se vuelva a encender, ¿adivina qué? El sleepimage se carga en la RAM y vuelve a la normalidad.

Suena bien, pero solo es realmente útil para Macs portátiles como MacBook, MacBook Pro, MacBook Air, etc. Para alguien como yo, que trabaja en una Mac Mini basada en computadora, es bastante inútil ya que estoy conectado a AC poder todo el tiempo Así que cuando realicé una reconstrucción reciente del sistema y vi que un archivo de 8GB sleepimage ocupaba un espacio valioso, me deshice de él. Y aquí es cómo puedes hacer eso también; en primer lugar, compruebe qué hibernatemode está configurado en su sistema:

pmset -g | grep hibernatemode

Una de las tres opciones de configuración que debería ver es:

  • 0 : modo de suspensión de la vieja escuela sin red de seguridad. Lo mejor para escritorios.
  • 3 : hibernación en modo de suspensión con la red de seguridad sleepimage . Mantendrá la memoria RAM mientras duerme para despertar rápido. Mejor para portátiles.
  • 25 : modo de hibernación con la red de seguridad sleepimage . Apaga la RAM durante el sueño y siempre se activará cargando sleepimage . Es mejor para portátiles y ahorra energía / duración de la batería al no enviar energía a los chips de RAM.

Ahora que sabe que si desea deshabilitarlo, ahora ejecuta este comando para configurar hibernatemode en 0 :

sudo pmset -a hibernatemode 0

Con eso hecho, abandona el archivo sleepimage :

sudo rm /private/var/vm/sleepimage

Y eso libera el espacio. Pero todavía existe el riesgo de que se vuelva a crear en el futuro; durante una actualización del sistema, por ejemplo. Así es como puede asegurarse de que el archivo sleepimage nunca se vuelva a crear. Primero cree un marcador de posición de longitud cero para el archivo sleepimage :

sudo touch /private/var/vm/sleepimage

Ahora modifique la marca "inmutable" en el archivo para asegurarse de que nunca se escriba:

sudo chflags schg /private/var/vm/sleepimage

Con eso hecho, se debe eliminar sleepimage , se debe recuperar el espacio y se elimina el riesgo de que se vuelva a crear sleepimage . Pero como dije, si estás usando una Mac portátil y dependes del modo de suspensión, no se recomienda deshabilitar esto.

    
respondido por el JakeGould 02.02.2015 - 19:13
-1

Los archivos de intercambio son un hecho de la vida de Unix. La única forma de reducirlos es agregar más RAM a su sistema, para que no sean necesarios con tanta frecuencia.

Una vez que se crea un archivo de intercambio, la única forma de recuperar ese espacio es mediante el reinicio.

(Hay páginas web que te dirán cómo deshabilitar los archivos de intercambio. Recomiendo encarecidamente que hagas esto, ya que Mac OS X espera que estén allí).

    
respondido por el TJ Luoma 02.02.2015 - 18:48

Lea otras preguntas en las etiquetas