100 votos

¿No es la memoria inactiva un desperdicio de recursos?

Estoy buscando una explicación del uso de la memoria en mi máquina, especialmente a la luz del ejemplo de esta captura de pantalla:

Memory Usage

Entiendo lo que es Free y Active significa
Pero, ¿cuáles son los significados de Wired y Inactive ?

Especialmente inactive ¿por qué usa tanta memoria para algo que no usamos?

167voto

Oskar Puntos 1242

La memoria inactiva tiene una horrible reputación debido a un nombre de mierda. Debería llamarse memoria "haz que tu Mac sea muy rápido la segunda, tercera y cuarta vez que haga la misma tarea" excepto que ese es un nombre horrible también.

Así es como explico las cosas a alguien nuevo en el concepto de la memoria virtual:

  • Conectado: El sistema no puede funcionar sin esta cantidad de RAM (nunca intercambiada)
  • Activo: Los programas realmente están usando esta memoria ahora o en los últimos segundos
  • Inactivo: Cosas que los programas han leído del disco lento o de otra parte y que dicen que no volverán a necesitar. Los ingenieros lo saben, volverás a Facebook en unos minutos o relanzarás Word después de dejarlo. Las mismas cosas pasan una y otra vez en los ordenadores.
  • Libre: RAM totalmente desperdiciada - el sistema sólo necesita uno o dos MB libres para cubrir las solicitudes de asignación a corto plazo. Para las asignaciones más grandes, simplemente utiliza parte de la RAM inactiva asignándola a activa/conectada y eliminando la información sobre lo que solía contener.

El problema surge cuando Libre+Inactivo es menos de aproximadamente 1/3 del total y entonces las cosas pueden ponerse realmente lentas.

La memoria inactiva es velocidad extra / RAM de doble servicio. Sirve como libre en un momento dado, pero también hace que las tareas repetidas sean mucho, mucho más rápidas si el sistema adivinó correctamente y guardó algo en la memoria RAM que volverá a hacer. Es más rápido que la memoria intercambiada ya que está cargada en la RAM y acelera las cosas cuando el sistema de memoria virtual hace buenas conjeturas.

Cuando te preguntas si la RAM es un problema, en lugar de mirar a cada una de las 4 categorías (5 si cuentas el intercambio activo), puedes acoplar W+A como ralentizar un nuevo programa/tarea y F+I como acelerar un nuevo programa/tarea. Cuantos más F+I tengas, más programas nuevos podrás lanzar antes de que la RAM necesite confiar en el swap para hacer malabarismos con la memoria que ha sido asignada.

No necesitas saber cómo funciona el intercambio desde que lo mencioné antes. Básicamente, cuando un programa está inactivo y no ha sido usado por 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 gestión de la memoria y evita que cada programa necesite hablar entre sí 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.

  1. 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.
  2. Reinicia tu Mac
  3. Enciende tu monitor de actividad y mira la memoria RAM a lo largo de
  4. El tiempo que toma iniciar la Aplicación A (MS Word sería una buena opción)
  5. Dejar A
  6. Tiempo que toma iniciar la Aplicación B (Adobe algo también sería bueno)
  7. Dejar B
  8. El tiempo que tarda el segundo lanzamiento de A
  9. Dejar A
  10. El segundo lanzamiento de Time B.
  11. El tiempo A comienza la tercera vez con B corriendo.

Deberías ver aceleraciones dramáticas para el segundo/tercer lanzamiento a medida que el sistema aprende a mantener inactiva la RAM las cosas que estas dos aplicaciones necesitan para funcionar.


En tu caso - el total de Wired y Active significa que es probable que se esté produciendo algún intercambio en el disco y que tu Mac no sea tan rápido como podría ser, ya que la RAM inactiva no es lo suficientemente grande para almacenar todas las cosas que podrías necesitar para reutilizarlas. Si tienes una unidad SSD rápida, esta asignación de RAM está bien y en lugar de empezar a reducir la velocidad una vez que menos de la mitad de tu RAM es F+I, puedes reducir las cosas a una cuarta parte del total de la RAM para F+I antes de ver una lentitud notable. Estas pautas son generales, y querrás ver vm_stat 15 o algún intervalo similar para asegurar que el intercambio de volumen continuo y medio no haga que tu Mac sea lento.

6voto

mob Puntos 143

El número que es el más importante para determinar si tu Mac está "estresando" la memoria es la figura de "Page outs". En el Monitor de Actividad de los Mavericks esto ya no se muestra, ahora muestran la información en "Swap Used:".

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. Lo que hace entonces es "paginar" las partes de la memoria del disco que determina que no están siendo utilizadas activamente. Esto significa que la memoria RAM (rápida) se cambia a la memoria del disco duro (lenta). Si esto ocurre mucho porque hay muchas aplicaciones en ejecución, y el usuario va entre aplicaciones, entonces habrá muchas salidas y entradas de páginas.

Si ves que las salidas de página aumentan, entonces deberías tomar medidas.

2voto

Ernie Puntos 65

El problema en mi Mac es que la memoria "inactiva" nunca parece ser purgada a menos que haga una purga manual en la ventana de comandos. Se acumula y acumula hasta que aparece una ventana emergente que me dice que mate las aplicaciones. Incluso después de matar todas mis aplicaciones, todavía tengo demasiada memoria inactiva para ejecutar cualquier cosa. Por lo tanto, 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 agota. O bien tengo una aplicación en algún lugar que ha bloqueado un trozo de memoria inactiva que nunca se libera, o el iOS tiene un fallo en ella. (Tengo 8GB de memoria física... ¡eso debería ser suficiente!)

1voto

toofarsideways Puntos 1406

Gracias a todos los carteles y comentaristas, este ha sido un hilo instructivo y útil para mí. Mi reciente experiencia podría ser útil para alguien. Utilizo mi Mac Mini con OS X10.8.1 y con 16G de RAM completamente para el software de prototipado que se ejecutará en otro lugar. Puedo asegurarles que no "volveré a Facebook en unos minutos o relanzaré Word después de dejarlo" lo hago en mi MacBook.

Mi tarea era reunir un gran montón de datos, la entrada y salida es muy lenta, por lo que la idea es leer un montón de datos tan grande como sea posible de una sola vez, procesarlos allí, y luego escribirlos de nuevo en el disco, y luego repetir el proceso hasta que esté hecho, lo que toma algunas horas. Lo que veo es que cada vez que leo un nuevo trozo de datos, la memoria inactiva salta -supongo que la IA del sistema asume que podría querer usar el viejo trozo de nuevo, lo cual no es así- y la memoria libre se reduce.

Después de algunas iteraciones de este proceso la memoria libre se reduce a unos pocos MB, la memoria inactiva liberará unos pocos MB más, y luego eventualmente después de algunos minutos de discutir entre la memoria libre y la inactiva, la memoria inactiva liberará unos pocos GB de una vez. Todo es como @bmike describe, y tanto el vm_stat 15 como el Monitor de Actividad muestran 0 páginas de salida.

Excepto quizás no del todo. Varias veces las cosas se han movido a lo largo de la natación, 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 desacelera. Estipula que probablemente es mi código de mierda el que está causando el problema, pero me gustaría poder apagar la memoria inactiva sólo para eliminar esa fuente de variabilidad. ¿Está rota? 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.

0voto

Dominic Zukiewicz Puntos 3207

La memoria inactiva utilizado por aplicaciones recientemente activas y abandonadas. OS X lo mantiene reservado en caso de que el usuario quiera abrir el programa de nuevo. En este caso, OS X no necesita reubicar la memoria que acelera la velocidad de ejecución. Si no se vuelve a abrir el programa, después de un tiempo la memoria de los inactivos se liberará o se reubicará.(c)

Esta característica es genial cuando tienes mucha RAM, pero cuando no la tienes es bastante molesta. En realidad se trata de cosas de la Apple. Cuando tienes un gadget potente o un Mac, todo es genial, pero cuando tu dispositivo se vuelve más viejo, todas las funciones lo ralentizan.

Así que tienes que usar trucos especiales para manejarlo.

Para la memoria inactiva hay un comando purga para liberarla. Pero no es realmente cómodo usarlo. Así que deberías usar algunas aplicaciones adicionales o el editor script para crear tu propio tipo de programa. Como muestra aquí en el método #2

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