¿No es la memoria inactiva una pérdida de recursos?

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

Uso de memoria

Entiendo lo que es Freey Activesignifica
Pero, ¿cuáles son los significados de Wiredy Inactive?

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

Respuestas (7)

La memoria inactiva recibió una crítica horrible debido a un nombre de mierda. 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 ese 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 muestra "Memoria inactiva", pero esto aún se aplica a la administración de memoria de Mac OS X como se documenta en este documento. versión de Monitor de actividad: https://support.apple.com/en-us/HT201538

Así es como le expliqué las cosas a alguien nuevo en el concepto de memoria virtual en OS X:

  • Alámbrico : 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 desde el disco lento o en otro lugar y dijeron que nunca volverán a necesitar. Los ingenieros saben mejor, volverá a Facebook en unos minutos o reiniciará Word después de salir. Las mismas cosas suceden 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 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 entonces las cosas pueden volverse realmente lentas.

La memoria inactiva es velocidad adicional/RAM de doble función. Funciona como gratuito en cualquier momento, 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 RAM que volverá a hacer. Es más rápido que la memoria intercambiada porque ya está cargada en la RAM y acelera las cosas cuando el sistema de memoria virtual hace buenas conjeturas.

Cuando se pregunte si la RAM es un problema, en lugar de mirar cada una de las 4 categorías (5 si cuenta el intercambio activo), puede combinar W+A para ralentizar un nuevo programa/tarea y F+I para acelerar un nuevo programa/tarea. nuevo programa/tarea. Cuanto más F+I tenga, más programas nuevos podrá iniciar antes de que la RAM necesite depender del intercambio para hacer malabarismos con la memoria que se ha asignado.

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 memoria RAM en el disco duro en lugar de eliminar el programa. Esto permite que el sistema mezcle y maneje todo tipo de cosas relacionadas con la administración de la memoria y evita que cada programa necesite hablar entre ellos para acordar quién usará menos memoria cuando se agote el sistema.

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. Encienda su Monitor de actividad y observe la memoria RAM en todo momento
  4. Mida el tiempo que se tarda en iniciar la aplicación A (MS Word sería una buena opción)
  5. dejar un
  6. Tiempo cuánto tarda en iniciar la aplicación B (Adobe algo también sería bueno)
  7. Salir B
  8. Tiempo cuánto tarda el segundo lanzamiento de A
  9. dejar un
  10. Segundo lanzamiento de Time B.
  11. 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 Conectado y Activo significa que es probable que se esté produciendo algún cambio 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 ralentizarse 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 una lentitud notable. Estas pautas son generales, y querrá observar vm_stat 15o algún intervalo similar para asegurarse de que el intercambio continuo y de volumen medio no haga que su Mac sea lenta.

Wow respuesta muy completa para recién llegados como yo. Muchas gracias, muy apreciado :)
Sí, puedo responder por todos, de una vez por todas, las personas pueden editarlo para mejorarlo y obtienes tu respuesta. Una idea genial para un sitio web donde la gente puede venir y hacer preguntas interesantes. :-)
¡Guau! Hermosa respuesta!
Ojalá lo explicaran así en mi clase de sistema operativo.
Nunca lo supe. Gran respuesta. +1.
La memoria inactiva es velocidad adicional solo en ciertos escenarios. Si usa una gran variedad de programas, podría ser un problema porque liberar memoria inactiva a pedido obviamente lleva tiempo. Tiempo que se agregará en el próximo lanzamiento de la aplicación no almacenada en caché. En mi Mac mini (i5), Photoshop CS5 tarda de 7 a 10 segundos menos en iniciarse cuando purgué la memoria inactiva antes.
La memoria inactiva es excelente siempre que no visualice, incluso si tiene memoria más que suficiente para la VM y OS X; Los cachés de disco durante la visualización ralentizarán su Mac y la memoria caché no ayudará.
El software de la máquina virtual (Fusion, virtualbox, lo que sea) debería estar haciendo un buen trabajo al mantener la memoria conectada o activa cuando beneficiaría a la máquina virtual. ¿Hay algún problema específico que estés viendo?
La purga de @cvsguimaraes no es instantánea; chat.stackexchange.com/transcript/message/12107920#12107920
@kbyrdm VM aquí probablemente significa memoria virtual (no máquina virtual).
@GrahamPerrin Es por eso que algunas personas usan scripts para purgar la memoria en segundo plano con baja prioridad de IO.
No estoy seguro de si esto se cita en otro lugar, pero aquí hay una buena referencia (consulte especialmente "Listas de páginas en el kernel": developer.apple.com/library/mac/documentation/Performance/…
Llegar tarde a la fiesta, cambiar a un SSD puede ser una idea extremadamente mala. Si bien la degradación del rendimiento es mucho menor que con los medios giratorios, las escrituras frecuentes en los mismos bloques pueden acabar con la memoria flash con bastante rapidez (medida en años, pero no en décadas).
El intercambio de @agentroadkill siempre es una mala idea; en la práctica, no he visto que sea un problema con un solo SSD de Apple. Incluso los SSD de terceros lo están haciendo maravillosamente bien en este frente: entiendo la teoría de que eventualmente agotará sus escrituras, en la práctica, simplemente no veo personas dispuestas a soportar sistemas que intercambian lo suficiente como para ser una preocupación.
@bmike He leído que los sistemas operativos posteriores a Mavericks IIRC manejan la memoria de manera diferente y simplemente asignan más a los procesos en ejecución y luego intercambian cuando se abren nuevas aplicaciones. ¿He entendido esto correctamente? Si no, ¿por qué ya no obtenemos el gráfico circular de RAM en el monitor de actividad?
Algunos usuarios, incluyéndome a mí, se quejaron de que la memoria inactiva se negaba a ser purgada. Sin embargo, esto no ha sido un problema durante mucho tiempo. No estoy seguro si fue un error o qué. Un ejemplo de queja: superuser.com/questions/460658/…
Debería haberse llamado "caché de disco" o algo así. Se llama "archivos en caché" ahora. Lo equivalente se llama "memoria en caché" en Linux top.
¿Es por eso que la primera vez que abro un programa es mucho más lento que la segunda?
Sí, @JBis: en muchos casos, hay varias capas de almacenamiento en caché, por lo que la primera apertura debe cargar bibliotecas compartidas, cargar bibliotecas privadas, leer cachés y el estado de la aplicación desde el almacenamiento, posiblemente ejecutar una búsqueda de actualizaciones en Internet, y el segundo lanzamiento puede ser dramáticamente más rápido debido a esto específicamente, así como a otros mecanismos.
@bmike En relación con sudo purge(que aparentemente no tiene ningún propósito ), ¿qué hacen las aplicaciones que afirman limpiar y purgar la memoria? ¿Y son beneficiosos? (Tal vez sea una pregunta completamente nueva) Ejemplo: itunes.apple.com/us/app/memory-clean-free-up-memory/… itunes.apple.com/us/app/dr-cleaner-disk-mem-clean /…
¿Cómo podría recargar Facebook posiblemente reutilizar las porciones de memoria previamente asignadas?

El número que es más importante para determinar si su Mac está 'estresando' la memoria es la cifra de 'Salidas de página'. En Monitor de actividad en Mavericks esto ya no se muestra, ahora muestran la información en 'Intercambio usado:'.

Las salidas de página significan 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' en el disco partes 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 con frecuencia porque hay muchas aplicaciones ejecutándose y el usuario está pasando de una aplicación a otra, entonces habrá muchas salidas y entradas de página.

Si ve que las salidas de página aumentan, debe tomar medidas.

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. 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 agote. O tengo una aplicación en algún lugar que ha bloqueado una parte de la memoria inactiva que nunca se libera, o el iOS tiene un error. (Tengo 8 GB de memoria física... ¡eso debería ser suficiente!)

Estoy contigo, Ernie... en Mac OS 10.6 y 10.7 en una MacBook Pro y Mac Pro, la memoria inactiva se acumulará y el sistema operativo comenzará a cambiar (de acuerdo con "Page Ins" y "Page Out") y el sistema se arrastrará hasta detenerse. La memoria inactiva parece no recuperarse nunca. Tengo que usar "purgar" para recuperar la memoria inactiva y volver a activar mi sistema.
¿De dónde viene esta ventana emergente? ¿Cuál es la situación de la memoria según lo informado por vm_statcuando sucede? ¿Qué te hace estar tan seguro de que puede haber "demasiada" memoria inactiva "para ejecutar cualquier cosa"? En lo que a mí respecta, todo esto son rumores que no tienen respaldo en el código que saben, en realidad se ejecuta en el kernel.
¿Tu asignación de memoria se parece en algo a lo que ha presentado Gus? Aquí estamos hablando de un gigabyte cableado y un gigabyte y medio activo. La ración inactiva/libre me parece bien en esta situación. ¿Quizás haría una segunda pregunta que detalla la situación que tiene donde las cosas se están rompiendo?
@Eric, ¿alguna vez descubriste cómo purgar para recuperar tu memoria inactiva?
Respuesta corta de @Ernie: No. Respuesta más larga: Han pasado casi 7 años desde la pregunta original, e incluso yo (que esperé años para actualizar a una nueva versión de MacOS) tengo hasta 10.13 y 10.14, ninguno de los cuales informa Memoria inactiva. No recuerdo si alguna vez resolví el problema en 10.6 o 10.7. No he notado ningún comportamiento similar en 10.13 o 10.14.

Gracias a todos los posteadores y comentaristas, este ha sido un hilo instructivo y útil para mí. Mi experiencia reciente podría ser útil para alguien. Utilizo mi Mac Mini con OS X10.8.1 y con 16 GB de RAM exclusivamente para el software de creación de prototipos que se ejecutará en otro lugar. Puedo asegurarles que no "volveré a Facebook en unos minutos ni reiniciaré Word después de cerrarlo", sino que lo haré en mi macbook.

Mi tarea era juntar una gran cantidad de datos, la E/S consume mucho tiempo, por lo que la idea es leer la mayor cantidad posible de datos para ram de una sola vez, procesarlos allí y luego escribirlos nuevamente en el disco. , luego repita el proceso hasta que esté listo, lo que lleva algunas horas. Lo que veo es que cada vez que leo una nueva porción de datos, la memoria inactiva salta; supongo que la IA del sistema asume que es posible que desee volver a usar la porción anterior, lo cual no es así, y la libre gotas de memoria.

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 discutir entre la memoria libre y la inactiva, la memoria inactiva se liberará. unos pocos GB a la vez. Todo es como lo describe @bmike, y tanto vm_stat 15 como el monitor de actividad muestran 0 salidas de página.

Excepto tal vez no del todo. Varias veces las cosas se han estado moviendo a la perfección, salgo a tomar un café oa cenar y no estoy monitoreando el proceso, y sucede lo que no debería suceder y el proceso repentinamente arroja un montón de páginas perdidas y se ralentiza. Estipule que probablemente sea mi código de mierda 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.

Memoria inactiva utilizada por aplicaciones recientemente activas y cerradas. OS X lo mantiene reservado por si el usuario quiere volver a abrir el programa. En su caso, OS X no necesita reubicar la memoria que acelera la velocidad de rendimiento. Si no 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 Apple. Cuando tiene un dispositivo potente o Mac, todo es genial, pero cuando su dispositivo envejece, todas las funciones lo ralentizan.

Entonces tienes que usar trucos especiales para manejarlo.

Para la memoria inactiva hay un comando purgepara liberarla.

Básicamente está roto. La RAM inactiva debe "purgarse" automáticamente cuando la RAM libre es baja. ¿Cuál es el punto de retener RAM para aplicaciones abiertas anteriormente con la esperanza de que el usuario las abra nuevamente? El hecho de que la RAM libre sea baja indica que las aplicaciones ACTIVAS existentes podrían no tener suficiente RAM y se están intercambiando AHORA. Mantener GB de RAM para aplicaciones cerradas es simplemente tonto. Según la propia descripción de Apple, la RAM inactiva debe purgarse o tomarse prestada automáticamente cuando la RAM libre es baja. Claramente este no es el caso.

Los sistemas de memoria virtual desperdician grandes cantidades de RAM libre. Cuando un programa solicita una asignación de memoria, el kernel crea más memoria virtual y la reparte como si fuera un caramelo. Solo cuando un programa llena esa memoria con datos reales, el sistema necesita hacer espacio en la RAM para esa operación. Ese "hacer espacio" se extrae de la memoria libre y luego inactiva, y la demora para liberar la memoria inactiva es inmensamente pequeña. La purga que describe es exactamente lo que sucede, solo que implica que el sistema debe hacer el trabajo de purga por adelantado cuando el sistema es perezoso y solo hace ese trabajo si es necesario.
@bmike Pero, ¿no significaría eso que cuando no queda RAM libre y comienzo una nueva aplicación, la porción de RAM inactiva disminuiría y la activa aumentaría? Claramente, ese no es el caso y, según mi experiencia, el sistema se vuelve extremadamente lento cada vez que no queda más RAM libre, a pesar de que hay gigabytes de RAM inactiva. El sistema parece preferir intercambiar el disco antes de considerar reutilizar la RAM inactiva.
@codingFriend1 Seamos precisos: ¿cuántas páginas libres vm_statconsideras "no más RAM libre"? Cuando la Mac es "lenta", ¿para qué cuenta la entrada y salida de página vm_stat 1? Cada vez que veo esto en un sistema problemático, me gusta vm_stat 15ejecutarlo en una ventana de terminal (o iniciar 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 no es probable ni siquiera 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 el sistema operativo Mac está ocupando demasiada memoria, realmente no necesita 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 (deberá ingresar su contraseña). Le quita preciosos segundos cuando necesita abrir algo nuevamente, pero si quiere jugar un juego intensivo de RAM o abrir una aplicación que consume RAM, definitivamente sugiero usar el comando de purga.

¿Cómo difiere esto de otras respuestas?