La memoria inactiva tuvo un rap horrible debido a un nombre horrible. Debería haberse llamado algo así como memoria "haz que tu Mac sea realmente rápida la segunda, tercera y cuarta vez que hace la misma tarea", excepto que también es un nombre horrible.
Apple reescribió el monitor de actividad cuando introdujo varias características nuevas y agregó memoria comprimida, por lo que parte de esto ya no se aplica a macOS que no muestran "Memoria inactiva", pero esto todavía se aplica a la administración de memoria de Mac OS X como se documenta en este documento. versión de Activity Monitor: https://support.apple.com/en-us/HT201538
Así es como le expliqué cosas a alguien nuevo en el concepto de memoria virtual en OS X:
- Cableado : el sistema no puede ejecutarse sin esta cantidad de RAM (nunca intercambiado)
- Activo: los programas realmente están usando esta memoria ahora o en los últimos segundos
- Inactivo: Cosas que los programas han leído desde el disco lento o en otro lugar y que nunca más necesitarán. Los ingenieros lo saben mejor, volverá a Facebook en unos minutos o volverá a iniciar Word después de abandonarlo. Lo mismo sucede una y otra vez en las computadoras.
- Gratis: RAM totalmente desperdiciada : el sistema solo necesita uno o dos MB libres para cubrir las solicitudes de asignación a corto plazo. Para las asignaciones más grandes, simplemente usa parte de la RAM inactiva asignándola a activa / cableada y eliminando la información sobre lo que solía contener.
El problema surge cuando Free + Inactive es menos de aproximadamente 1/3 del total y las cosas realmente pueden ponerse lentas.
La memoria inactiva es la velocidad extra / RAM de doble servicio. Sirve de forma gratuita en cualquier momento, pero también hace que las tareas repetidas sean mucho, mucho más rápidas si el sistema adivinó correctamente y mantuvo algo en la RAM que volverá a hacer. Es más rápido que la memoria intercambiada, ya que está cargada en RAM y acelera las cosas cuando el sistema de memoria virtual hace buenas suposiciones.
Cuando se pregunta si la RAM es un problema, en lugar de mirar cada una de las 4 categorías (5 si cuenta el intercambio activo), puede acoplar W + A como ralentizar un nuevo programa / tarea y F + I como acelerar un nuevo programa / tarea. Cuantos más F + I tenga, más programas nuevos podrá iniciar antes de que la RAM necesite confiar en el intercambio para hacer malabares con la memoria asignada.
Realmente no necesita saber cómo funciona el intercambio, ya que lo mencioné anteriormente. Básicamente, cuando un programa está inactivo y no se ha utilizado durante días (u horas), el sistema escribirá esa RAM en el disco duro en lugar de matar el programa. Esto permite que el sistema baraje y maneje todo tipo de cosas relacionadas con la administración de memoria y evita que cada programa necesite hablar entre ellos para acordar quién usará menos memoria cuando el sistema se agote.
Aquí hay un ejemplo del mundo real de cómo se usa la RAM inactiva.
- Salga de todas las aplicaciones y asegúrese de que las dos aplicaciones que estamos probando no estén configuradas para iniciarse automáticamente cuando inicie sesión
- Reinicia tu Mac
- Encienda su Monitor de actividad y observe la RAM en todo momento
- Mida el tiempo que tarda en iniciar la aplicación A (MS Word sería una buena opción)
- Salir de A
- Calcula el tiempo que lleva iniciar la aplicación B (Adobe algo también sería bueno)
- Salir de B
- Mida el tiempo que dura el segundo lanzamiento de A
- Salir de A
- Segundo lanzamiento del tiempo B.
- El tiempo A comienza la tercera vez con B corriendo.
Debería ver aceleraciones dramáticas para el segundo / tercer lanzamiento a medida que el sistema aprende a mantener en RAM inactiva las cosas que estas dos aplicaciones necesitan para ejecutarse.
En su caso, el total de Wired y Active significa que es probable que se produzca un intercambio en el disco y que su Mac no sea tan rápida como podría ser, ya que su RAM inactiva no es lo suficientemente grande como para almacenar todas las cosas que podría necesitar para reutilizar . Si tiene una unidad SSD rápida, esta asignación de RAM está bien y, en lugar de comenzar a disminuir una vez que menos de la mitad de su RAM es F + I, puede reducir las cosas más cerca de 1/4 de la RAM total para F + I antes de ver notable lentitud. Estas pautas son generales, y querrá ver vm_stat 15
un intervalo similar para garantizar que el intercambio continuo y de volumen medio no haga que su Mac sea lenta.
El número que es más importante para determinar si su Mac está 'estresada' en la memoria es la cifra de 'Salidas de página'. En el Monitor de actividad en Mavericks esto ya no se muestra, ahora muestran la información en 'Intercambio utilizado:'.
Page outs significa que el sistema operativo ha determinado que no hay suficiente RAM disponible para ejecutar todas las aplicaciones y procesos que se han solicitado. Entonces, lo que hace es 'páginas' en las partes del disco de la memoria que determina que no se están utilizando activamente. Esto significa que la memoria RAM (rápida) se cambia a memoria HDD (lenta). Si esto sucede mucho porque hay muchas aplicaciones ejecutándose y el usuario va de una aplicación a otra, habrá muchas salidas de página e inscripciones de página.
Si ve que las salidas de página aumentan, entonces debe tomar medidas.
fuente
El problema en mi Mac es que la memoria "inactiva" nunca parece purgarse a menos que haga una purga manual en la ventana de comandos. Se acumula y se acumula hasta que aparece una ventana emergente que me dice que elimine las aplicaciones. Incluso después de eliminar todas mis aplicaciones, todavía tengo demasiada memoria inactiva para ejecutar cualquier cosa. Entonces, en mi Mac que ejecuta la última versión de Mountain Lion NO es cierto que la memoria inactiva se recupere cuando la memoria libre se agote. O tengo una aplicación en algún lugar que ha bloqueado una porción de memoria inactiva que nunca se libera, o el iOS tiene un error. (Tengo 8 GB de memoria física ... ¡eso debería ser suficiente!)
fuente
vm_stat
cuando sucede? ¿Qué te hace estar tan seguro de que puede haber "demasiada" memoria inactiva "para ejecutar algo"? En lo que a mí respecta, todo esto es un rumor que no tiene respaldo en el código que sabes, en realidad se ejecuta en el kernel.Gracias a todos los carteles y comentaristas, este ha sido un hilo instructivo y útil para mí. Mi experiencia reciente puede ser útil para alguien. Utilizo mi Mac Mini con OS X10.8.1 y con 16G de RAM por completo para el software de creación de prototipos que se ejecutará en otros lugares. Les puedo asegurar que no "volveré a Facebook en unos minutos ni volveré a iniciar Word después de salir", sino que lo hago en mi macbook.
Mi tarea consistía en juntar una gran cantidad de datos, la E / S lleva mucho tiempo, por lo que la idea es leer la mayor cantidad de datos posible para ram de una sola vez, procesarlos allí y luego volver a escribirlos en el disco , luego repita el proceso hasta que termine, lo que lleva algunas horas. Lo que veo es que cada vez que leo una nueva porción de datos, salta la memoria inactiva, supongo que la IA del sistema asume que tal vez quiera volver a usar la vieja porción, lo cual no hago, y el libre la memoria cae
Después de algunas iteraciones de este proceso, la memoria libre se reduce a unos pocos MB, la memoria inactiva liberará algunos MB más y, finalmente, después de algunos minutos de disputas entre la memoria libre y la inactiva, la memoria inactiva se liberará hasta unos pocos GB a la vez. Todo es como lo describe @bmike, y tanto vm_stat 15 como Activity monitor muestran 0 salidas de página.
Excepto tal vez no del todo. Varias veces las cosas se han estado moviendo muy bien, me dirijo a tomar un café o una cena y no estoy monitoreando el proceso, y lo que no debería suceder sucede y el proceso de repente arroja un montón de páginas y se ralentiza. Estipulo que probablemente sea mi código malo el que está causando el problema, pero desearía poder apagar la memoria inactiva solo para eliminar esa fuente de variabilidad. ¿Esta roto? No lo diría en absoluto, pero diría que supongo que la gestión de la memoria no está optimizada para mi caso de uso.
fuente
Esta característica es genial cuando tienes mucha RAM, pero cuando no lo es, es bastante molesto. En realidad se trata de cosas de manzana. Cuando tienes un potente dispositivo o Mac, todo es genial, pero cuando el dispositivo envejece, todas las funciones lo ralentizan.
Entonces tienes que usar trucos especiales para manejarlo.
Para la memoria inactiva hay un comando
purge
para liberarla.fuente
Básicamente está roto. La RAM inactiva debe "purgarse" automáticamente cuando la RAM libre es baja. ¿Cuál es el punto de mantener RAM para aplicaciones abiertas anteriormente con la esperanza de que el usuario la abra nuevamente? El hecho de que la RAM libre sea baja indica que las aplicaciones ACTIVE existentes pueden no tener suficiente RAM y se están intercambiando AHORA. Mantener GB de RAM para aplicaciones cerradas es una tontería. Según la propia descripción de Apple, la RAM inactiva se debe purgar o pedir prestada automáticamente cuando la RAM libre es baja. Claramente este no es el caso.
fuente
vm_stat
considera "no más RAM libre"? Cuando la Mac es "lenta", ¿para qué sirve la página de entrada y salida de páginavm_stat 1
? Cada vez que estoy viendo esto en un sistema con problemas, me gusta que sevm_stat 15
ejecute en una ventana de terminal (o que inicie sesión en el sistema de archivos) para poder saber con precisión cuál es la actividad de paginación al decidir si / cuándo ajustaré cosas como el buscapersonas. Este ejemplo tiene 100 MB de RAM libre, por lo que es probable que no esté bajo presión de paginación.La memoria inactiva en esencia, hace que la apertura de procesos anteriormente cerrados sea más rápida. Si encuentra que Mac OS está ocupando demasiada memoria que realmente no necesita de las docenas de pestañas que abrió en Safari o Chrome, simplemente use el comando 'purgar' en la Terminal. En OS X Mavericks simplemente use 'sudo purge' en su lugar (necesitará ingresar su contraseña). Ahorra unos segundos preciosos cuando necesitas abrir algo de nuevo, pero si quieres jugar un juego intensivo de RAM o abrir una aplicación con mucha RAM, definitivamente sugiero usar el comando de purga.
fuente