11 votos

MacOS utiliza mucho la memoria virtual / swap

Tengo un MacBook Pro en el trabajo y creo que utiliza demasiada swap en lugar de RAM.

Model Name: MacBook Pro
Model Identifier:   MacBookPro13,1
Processor Name: Intel Core i5
Processor Speed:    2 GHz
Number of Processors:   1
Total Number of Cores:  2
L2 Cache (per Core):    256 KB
L3 Cache:   4 MB
Memory: 16 GB
Boot ROM Version:   MBP131.0205.B22
SMC Version (system):   2.36f97
Serial Number (system): C02TL0KGGVC8
Hardware UUID:  09325653-7FB0-52CC-A599-063539D1010A

Estoy acostumbrado a supervisar la actividad del sistema UNIX utilizando htop . Me he dado cuenta de que mi OS X nunca utiliza más de la mitad de la RAM, sino que utiliza más swap. Normalmente 7 GB de swap, pero puede ser más.

htop report

Mi pregunta es, ¿no debería mi sistema operativo utilizar más memoria RAM antes de la swap? He leído sobre cómo OS X maneja el swap y me parece que es una pérdida de potencia de cálculo. Escribir páginas dentro y fuera consume mucho tiempo y no es tan rápido como usar la RAM

Trato de comparar con mi distribución Ubuntu 16.04 en casa que no hace swap a menos que la memoria esté llena. Pero tal vez el 2 OS tienen diferentes comportamientos, aunque ambos son UNIX basado.

También imprimí la salida del vm_stat comando para comprobar si había alguna diferencia, porque tal vez htop no está informando con exactitud. Me he dado cuenta de que htop informa de una capacidad máxima de intercambio variable, de 3 a 16. Por qué no es una partición de tamaño fijo como en Ubuntu?

Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                                6743.
Pages active:                           1005803.
Pages inactive:                          903490.
Pages speculative:                          361.
Pages throttled:                              0.
Pages wired down:                        837598.
Pages purgeable:                           9241.
"Translation faults":                6115698117.
Pages copy-on-write:                  107293117.
Pages zero filled:                   2540298644.
Pages reactivated:                   1039487337.
Pages purged:                          52550607.
File-backed pages:                       482299.
Anonymous pages:                        1427355.
Pages stored in compressor:             5968822.
Pages occupied by compressor:           1439832.
Decompressions:                      1456775259.
Compressions:                        1606172332.
Pageins:                             1393246141.
Pageouts:                              25235109.
Swapins:                              562867577.
Swapouts:                             582845342.

1 votos

La máquina lleva 15 días funcionando; no tienes prácticamente ninguna posibilidad de averiguar lo que ha estado haciendo durante ese tiempo. Empieza con un nuevo arranque.

0 votos

Gracias por indicarme he reiniciado y me ha limpiado el swap. Pensé que MacOS mejor limpiar los archivos de intercambio no utilizados cuando el proceso se mata (Apuesto a que mi proceso culpable era jupyter cuaderno corriendo enorme conjunto de datos).

10voto

Jose Chavez Puntos 645

En primer lugar, sí, el sistema operativo en general utilizará la RAM antes que la swap. No hay pérdida de potencia de cálculo en eso.

Parece que has llegado a la conclusión de que MacOS está usando swap, cuando bien podría estar usando memoria libre basándose en la captura de pantalla de htop. No se puede llegar a esa conclusión a partir de una simple muestra del uso de la memoria.

En realidad, podrías haber estado ejecutando programas que estuvieran usando mucha RAM forzando a MacOS a intercambiar memoria al disco. Entonces, usted salió de algunos de esos programas (o ellos desasignaron un trozo de RAM). Entonces, si ahora tomas una muestra de htop, verás que el uso de la RAM es bajo (mucha RAM libre), pero también estás usando mucha swap.

Pero eso no es un problema - ¡de hecho está previsto que sea así! No sería prudente que MacOS empezara a intercambiar esas páginas que han sido colocadas en el disco. Lo hará cuando se necesiten (es decir, cuando las usen los programas), pero hasta que eso ocurra, podría ser que esas páginas no se usen nunca - y por lo tanto el tiempo invertido en intercambiarlas se perderá.

Escribes que en comparación con tu PC con Ubuntu observas un comportamiento diferente. Deberías saber que en realidad puedes cambiar ese comportamiento. En Linux puedes usar sysctl para establecer la variable vm.swappiness. Esto cambiará la agresividad del sistema operativo a la hora de intercambiar cosas en el disco.

También preguntas por qué tu sistema MacOS no utiliza swap de tamaño fijo como hace Ubuntu. De hecho, Ubuntu también soporta swap de tamaño dinámico usando el comando "swapspace". Puedes establecer tamaños mínimos y máximos, y añadirá/eliminará espacio de intercambio dinámicamente según las necesidades.

0 votos

"Supongo que las páginas de intercambio no pueden ser limpiadas cuando un programa es eliminado porque las páginas son agnósticas al programa. ¿Esto lleva a un montón de archivos de intercambio no utilizados con el tiempo, pero no necesariamente disminuye el rendimiento del sistema operativo con un tamaño de intercambio dinámico?

0 votos

También tengo sentimientos encontrados sobre la cifra htop de capacidad de RAM. Nunca pasa de 9G pero creo que sólo se refiere a la memoria usada (verde) y no a la memoria caché () . Pero mirando la barra de carga parece que la verde + la amarilla llega casi a la capacidad total

0 votos

No, te equivocas. Las páginas de intercambio pueden ser limpiadas cuando se mata un proceso - el SO sabe exactamente qué páginas están en uso por qué procesos. En la práctica, las páginas del archivo de intercambio se marcan como no utilizadas y se recuperan periódicamente. El tamaño dinámico de la swap no significa que sólo crezca, sino que se retrae de nuevo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X