¿Por qué la RAM parcialmente llena (digamos 80%) hace que el dispositivo se demore mucho, a pesar de que hay espacio disponible para almacenar más datos? Lo que espero es que siga funcionando bien hasta el 99%.
Noto que en el móvil más que en la PC, ya que tiene RAM más pequeña, por ejemplo, mi móvil tiene 2 GB de RAM; cuando tengo menos de 1 GB de RAM libre, ¡queda mucho menos! ¿Por qué sucede eso, aunque todavía tiene ~ 1 GB para usar?
Respuestas:
Aquí intervienen muchas cosas, pero trataré de explicarlo de la manera más simple posible y de manera aplicable a casi cualquier sistema operativo.
Aquí hay 2 principios básicos:
La suma total de todo lo que necesita estar en RAM y las cosas que se beneficiarían de estar en RAM es casi siempre mayor que el tamaño de RAM. Las cosas que se beneficiarían de estar en la RAM incluyen conjuntos de trabajo de proceso y la lista de espera. Este último contiene datos y código que alguna vez estuvo en uso activo pero que ha caído en inactividad. Gran parte de esto se volverá a usar, algo de él muy pronto, por lo que es beneficioso mantener esto en la RAM. Esta memoria actúa como una especie de caché, pero no es realmente esencial, por lo que está en la categoría de memoria disponible. Al igual que la memoria libre, se puede administrar rápidamente a cualquier programa que lo necesite. En interés del rendimiento, la memoria de reserva debe ser grande.
La frecuencia de uso de los bloques de memoria está lejos de ser aleatoria, pero puede predecirse con una precisión considerable. La memoria se divide en bloques, a menudo 4K bytes. Se accede a algunos bloques muchas veces por segundo, mientras que otros no se han accedido durante muchos minutos, horas, días o incluso semanas si el sistema ha estado funcionando lo suficiente. Existe una amplia gama de usos entre estos 2 extremos. El administrador de memoria sabe a qué bloques se accedió recientemente y cuáles no. Es razonable suponer que pronto se necesitará nuevamente un bloque de memoria al que se haya accedido recientemente. La memoria a la que no se ha accedido recientemente probablemente no se necesitará pronto. La larga experiencia ha demostrado que este es un principio válido.
El administrador de memoria aprovecha el segundo principio para mitigar en gran medida las consecuencias indeseables del primero. Para hacer esto, hace un acto de equilibrio de mantener los datos a los que se accedió recientemente en la RAM, mientras que los datos raramente utilizados se guardan en los archivos originales o en el archivo de paginación.
Cuando la RAM es abundante este acto de equilibrio es fácil. Gran parte de los datos no utilizados recientemente se pueden guardar en la RAM. Esta es una buena situación.
Las cosas se vuelven más complicadas cuando aumenta la carga de trabajo. La suma total de datos y código en uso es mayor, pero el tamaño de la RAM sigue siendo el mismo. Esto significa que un subconjunto más pequeño de esto puede mantenerse en la RAM. Algunos de los datos utilizados menos recientemente ya no pueden estar en la RAM sino que deben dejarse en el disco. El administrador de memoria se esfuerza mucho por mantener un buen equilibrio entre la memoria en uso activo y la memoria disponible. Pero a medida que aumenta la carga de trabajo, el administrador de memoria se verá obligado a proporcionar más memoria disponible para los procesos en ejecución. Esta no es una buena situación, pero el administrador de memoria no tiene otra opción.
El problema es que mover datos hacia y desde la RAM a medida que se ejecutan los programas lleva tiempo. Cuando la RAM es abundante, no sucederá muy a menudo y ni siquiera se notará. Pero cuando el uso de RAM alcanza altos niveles, sucederá con mucha más frecuencia. La situación puede empeorar tanto que se gasta más tiempo en mover datos hacia y desde la RAM de lo que se gasta en su uso real. Esto es una agitación, algo que el administrador de memoria trata de evitar con dificultad, pero con una gran carga de trabajo, a menudo no se puede evitar.
El administrador de memoria está de su lado, siempre tratando de mantener un rendimiento óptimo incluso en condiciones adversas. Pero cuando la carga de trabajo es excelente y la memoria disponible se queda corta, debe hacer cosas malas para seguir funcionando. De hecho, eso es lo más importante. La prioridad es primero mantener las cosas en funcionamiento y luego hacerlo lo más rápido posible.
fuente
memory manger
es parte de miOS
derecho? Entonces, si estaba tratando con punteros y estas cosas de muy bajo nivel, ¿todavía podría hacer paginación?Todos los sistemas operativos modernos usan memoria de otro modo no utilizada para el almacenamiento en caché de datos para que se pueda acceder desde la RAM rápida en lugar del almacenamiento más lento. En general, informarán esto como memoria libre, ya que las aplicaciones pueden borrar el caché y usarlo si lo necesitan, pero todavía se está utilizando. Cuanto menos haya, menos datos se pueden almacenar en caché y más lenta será la computadora.
fuente
La paginación es un esquema de administración de memoria a través del cual los bloques de memoria de tamaño fijo tienen procesos asignados a ellos. Cuando el uso de memoria aumenta a un nivel alto (es decir, 80% de capacidad), la paginación comienza a extenderse de RAM a vRAM (RAM virtual).
vRAM se encuentra en el almacenamiento del sistema, generalmente dentro de un disco duro u otras ubicaciones de almacenamiento de gran tamaño.
A los procesos se les asigna parte de su disco duro para que se ejecuten como memoria y tratarán su sección como RAM. Sin embargo, este es un proceso perfectamente normal, cuando aumenta el tiempo dedicado a transferir datos hacia y desde la vRAM, disminuye el rendimiento del sistema.
Si bien se accede a la RAM dedicada directamente a través de la placa base desde la CPU, que proporciona una conexión rápida, la RAM virtual debe atravesar el cableado entre la placa y la ubicación de la vRAM.
Sin embargo, esto solo causa un ligero impacto en el rendimiento. Cuando la velocidad de la paginación a vRAM aumenta drásticamente (cuando la RAM dedicada se acerca a la capacidad), se produce la agitación.
Thrashing es la práctica de transferir rápida y rápidamente páginas de memoria a su memoria virtual. Esto tiene un gran impacto en el rendimiento, ya que se debe dedicar más tiempo a buscar y direccionar datos.
Digamos que desea escribir un número de 30 dígitos. Podrías sentarte junto a tu pantalla con tu bloc de notas y escribirlo (usando la memoria dedicada), o recordar trozos de 5, correr a la habitación de al lado y escribirlo en tu bloc de notas allí (usando memoria virtual). Ambos hacen el trabajo, pero ¿cuál será más rápido?
¡Descubre más sobre thashing aquí !
fuente
Esto se debe a que el sistema operativo tiene que hacer mucha paginación (cargar partes de programas activos) e intercambiar (mover datos en RAM a HD y viceversa) para mantener su software en funcionamiento. Cuando se necesitan cargar nuevas páginas que pueden necesitar más espacio que el 20% disponible, el sistema operativo tendrá que cambiar las páginas existentes en la RAM que considera menos probable que se usen pronto. Especialmente al inicio de otros programas. Cambiar y volver a las páginas lleva mucho tiempo y ralentiza drásticamente el rendimiento de su PC porque ahora está trabajando a la velocidad de la HD, no de la RAM.
Ayuda un poco en un HDD a crear una partición especial en su HD y asignarla como espacio dedicado de "intercambio" (no lo use para archivos "reales") para que el intercambio se vea menos afectado por la fragmentación de HD.
fuente
Recuerde, los discos duros son un orden de magnitud más lento que la RAM, y la RAM en sí misma no es tan rápida para empezar (en la arquitectura general). En orden de velocidad de acceso (donde cada peldaño es un orden de magnitud más lento que el anterior) tiene
Virtual Memory Manager es un jugador. Apuesta a que no necesita toda su RAM todo el tiempo, por lo que hace una suposición educada y tira los dados de que su programa de documentos (que ha estado en segundo plano durante los últimos 10 minutos mientras lee esto) no está realmente importante y lo empuja al HDD.
¡Pero luego vuelves a hacer clic en el documento! Ahora el VMM tiene que cargar todos esos datos desde el HDD. Peor aún, si tiene poca RAM, ahora tiene que enviar otros datos (más juegos de azar) al HDD para liberar espacio utilizable. A Linux le gusta vivir al límite aquí. Llenará la gran mayoría de la RAM con datos de uso frecuente (ideal para servidores con pocos procesos).
fuente
La paliza responde bastante bien. Si puede, puede minimizar la rapidez con que esto sucede al reducir el intercambio (la cantidad de ram que el sistema permitirá usar antes de mover las cosas al espacio de intercambio). Me gusta configurar los sistemas para que se mantengan fuera del intercambio hasta que el ram alcance el 99% para las aplicaciones del servidor, ya que el valor predeterminado significaría que tendría que codificar las cosas para utilizar solo el 80% del ram para aprovechar el almacenamiento en caché sin ser penalizado por empujar El sistema en el espacio de intercambio.
fuente