¿Hay alguna manera de hacer que OSX use más RAM y menos intercambio?

12

El problema que tengo es que en un servidor (y también en otras cajas OSX) tenemos 4GB de RAM, pero estamos descubriendo que OSX solo usa el 40-60% de la RAM disponible mientras que también tiene un intercambio de 6-7GB. El servidor ejecuta Apache y MySQL mientras que las otras máquinas son computadoras de escritorio.

He estado comparando su uso con cajas de Linux similares (hardware y software) y descubrí que Linux normalmente usa el 80-90% de la RAM y tiene un archivo de intercambio mucho más pequeño (2-3GB). Los servidores Linux también suelen ejecutarse mucho más rápido.

¿Hay alguna manera de obligar a OSX a usar más o la mayor parte de la RAM antes de usar un archivo de intercambio de disco?

En Windows, puede deshabilitar el intercambio por completo. ¿Hay algo similar para OSX?

Darryl Hein
fuente
Para aclarar: 1. ¿Es el cuello de botella el sistema VM? Como cuando ves las estrellas de memoria, hay una gran cantidad si se producen páginas. 2. ¿Dónde obtiene su información de tamaño de máquina virtual y gratuita? Por ejemplo, el tamaño de VM indicado en el Monitor de actividad no es el mismo que el tamaño del archivo de intercambio.
Chealion
No tengo pruebas de que el problema sea el sistema VM (VM o swap), pero sé que en mi escritorio tengo 6GB de RAM, de los cuales generalmente 2-3GB son generalmente gratuitos. Cuando cambio de programa, pensarías que sería increíblemente rápido porque todo está en RAM, pero en cambio, toma de 2 a 15 segundos volver a cambiar a algo como Illustrator. Estoy pensando que están sucediendo cosas similares en el servidor, algo como el almacenamiento en caché de MySQL o tablas temporales. Estoy usando top para determinar el uso de VM, RAM y swap. ¿Algunas ideas?
Darryl Hein
3
Para determinar el uso real de la du -sh /var/vmmáquina virtual, lo más fácil es ejecutarlo ; dicho esto, puede ser artificialmente alto si hay una imagen de sueño (que se ve con mayor frecuencia en las computadoras portátiles). Hay varias herramientas disponibles que pueden ayudarlo a determinar si es la memoria la que está causando las ralentizaciones: vm_statespecialmente si está interesado en el valor de las paginas, si aumenta bastante, entonces sabe que está intercambiando mucho. Para obtener más información sobre cómo Apple administra su memoria: developer.apple.com/documentation/Performance/Conceptual/…
Chealion

Respuestas:

17

¿La respuesta más básica? No. El sistema operativo maneja la administración de memoria para el usuario, proporcionando a un proceso la cantidad de memoria que necesita a medida que lo solicita y no proporciona una gran cantidad en términos de poder modificar el rendimiento del sistema. No ayuda mucho tratar de averiguar si la utilización de la memoria es parte de la ecuación de por qué los servidores Linux están superando a los servidores Mac.

Debido a la falta de "piratería" en el sistema de memoria virtual, sus mejores opciones son evaluar el rendimiento de la memoria virtual para ver si realmente es la razón por la que tiene problemas de rendimiento: lo más básico es usarlo vm_stato seguirlo. vive usando vm_stat [number of seconds]para ver cuántas páginas salen. Mover páginas no utilizadas de la RAM al disco duro tiene un costo mucho menor que recuperar las páginas del disco duro a la RAM. Una página en términos de OS X se refiere a 4kb de datos.

Además, los procesos de 32 bits (por ejemplo, Illustrator) no pueden acceder a más de 4 GB, por lo que teóricamente es posible tener 2 GB libres y tener un proceso sin memoria si tenía 6 GB instalados.

Tanto en su escritorio como en los servidores, ejecutaría vm_stat 2y verificaría la última columna, especialmente cuando experimenta el retraso de varios segundos al cambiar a decir Illustrator.

Para saber qué tan grande es realmente el intercambio, puede verificar el tamaño del intercambio en el Monitor de actividad o ejecutarlo du -shc /var/vm/swap* | tail -n 1.

El uso du -sh /var/vmtiene una advertencia: en las computadoras portátiles que tienen el modo de hibernación (cualquier cosa durante los últimos 4 años o más reciente) puede haber sleepimageaproximadamente el tamaño de la cantidad de memoria que ha instalado.


Jerga de memoria de Mac OS X:

Cableado : Esto se refiere al código del núcleo y tal. Memoria que nunca se debe sacar de la RAM. También se conoce como memoria residente.

Compartido : memoria que se comparte entre dos o más procesos. Ambos procesos mostrarían esta cantidad de memoria, por lo que puede ser un poco engañoso la cantidad de memoria que está realmente en uso.

Real : este es el uso de memoria "real" para una aplicación según lo informado por task_info (): un recuento aproximado del número de páginas físicas que tiene el proceso actual. (TAMAÑO)

Privado : Esta es la memoria que un proceso está usando únicamente por sí mismo que se usa en la memoria Residente. (RPRVT)

Virtual : la cantidad total de espacio de direcciones en el proceso que se asigna a cualquier cosa, ya sea un espacio arbitrariamente grande para variables o cualquier cosa, no equivale al uso real de VM. (VSIZE)

Activo : Memoria actualmente etiquetada como activa y se usa RAM.

Inactivo : "La memoria inactiva ya no se usa y se ha almacenado en caché en el disco. Permanecerá en la RAM hasta que otra aplicación necesite espacio. Dejar esta información en la RAM es una ventaja si usted (o un cliente de su computadora) regresa a eso más tarde ". - Ayuda de Mac OS X

Gratis : la cantidad de RAM realmente disponible sin ningún dato.


La mejor documentación que conozco (y que he podido encontrar en la investigación de seguimiento) es el artículo de Apple Management Memory en su sitio web para desarrolladores.

Otras fuentes valiosas: la lista de correo de Darwin-dev: [ 1 ], [ 2 ] y un artículo antiguo sobre MacOSXHints . Además, Mike Ash ha publicado una buena introducción laica en su blog


Puede ser posible (no lo he probado) desactivar el sistema de memoria virtual ejecutando sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plisty luego reiniciando para que no se inicie dynamic_pager (el programa que realmente hace la asignación de memoria virtual). Sin embargo, debido a que el sistema operativo supone que tiene memoria virtual, puede encontrarse con problemas muy, muy rápidamente. Para cargarlo, ejecute una copia de seguridad sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist(si es necesario desde el modo de usuario único)

Chealion
fuente