¿Por qué la RAM parcialmente llena provoca retrasos?

¿Por qué la RAM parcialmente llena provoca retrasos?

¿Por qué la RAM parcialmente llena (digamos 80%) hace que el dispositivo se retrase mucho, aunque haya algo de 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 el PC, al tener menos RAM, por ejemplo mi móvil tiene 2 GB de RAM; cuando tengo menos de 1 GB de RAM libre, ¡se retrasa mucho! ¿Por qué sucede eso, aunque todavía le quedan ~ 1 GB para usar?

Respuesta1

Hay mucho en juego aquí, pero intentaré explicarlo de la manera más simple posible y de una manera aplicable a casi cualquier sistema operativo.

Hay 2 principios básicos aquí:

  1. La suma total de todo lo que necesita estar en la RAM y aquellas cosas que se beneficiarían de estar en la RAM es casi siempre mayor que el tamaño de la RAM. Las cosas que se beneficiarían de estar en la RAM incluyen conjuntos de trabajo de procesos y la lista de espera. Este último contiene datos y códigos que alguna vez estuvieron en uso activo pero que desde entonces han caído en inactividad. Gran parte de esto se utilizará nuevamente, parte muy pronto, por lo que es beneficioso mantenerlo 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 entregar rápidamente a cualquier programa que la necesite. En aras del rendimiento, la memoria en espera debe ser grande.

  2. La frecuencia de uso de los bloques de memoria está lejos de ser aleatoria, pero se puede predecir con considerable precisión. La memoria se divide en bloques, a menudo de 4K bytes. A algunos bloques se accede muchas veces por segundo, mientras que a otros no se accede durante muchos minutos, horas, días o incluso semanas si el sistema ha estado activo el tiempo suficiente. Existe una amplia gama de uso entre estos 2 extremos. El administrador de memoria sabe a qué bloques se ha accedido recientemente y a cuáles no. Es razonable suponer que un bloque de memoria al que se ha accedido recientemente volverá a ser necesario pronto. La memoria a la que no se ha accedido recientemente probablemente no será necesaria en el corto plazo. Una 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, realiza un acto de equilibrio al mantener los datos a los que se accedió recientemente en la RAM y al mismo tiempo mantener los datos rara vez utilizados 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 utilizados no tan recientemente se pueden guardar en la RAM. Esta es una buena situación.

Las cosas se complican más cuando aumenta la carga de trabajo. La suma total de datos y códigos en uso es mayor, pero el tamaño de la RAM sigue siendo el mismo. Esto significa que se puede guardar un subconjunto más pequeño 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 mientras se ejecutan los programas lleva tiempo. Cuando la RAM es abundante, esto no sucederá muy a menudo y ni siquiera se notará. Pero cuando el uso de RAM alcance niveles elevados, sucederá con mucha más frecuencia. La situación puede llegar a ser tan mala que se dedica más tiempo a mover datos hacia y desde la RAM que a utilizarla. Esto es paliza, algo que el administrador de memoria intenta con todas sus fuerzas evitar pero que, con una carga de trabajo elevada, a menudo no se puede evitar.

El administrador de memoria está de tu lado, siempre intentando lo mejor que puede para mantener un rendimiento óptimo incluso en condiciones adversas. Pero cuando la carga de trabajo es grande y la memoria disponible es escasa, debe hacer cosas malas para seguir funcionando. De hecho, eso es lo más importante. La prioridad es primero mantener todo funcionando y luego hacerlo lo más rápido posible.

Respuesta2

Todos los sistemas operativos modernos utilizan memoria que de otro modo no se utilizaría para almacenar en caché los datos, de modo que se pueda acceder a ellos desde una RAM rápida en lugar de un almacenamiento más lento. Generalmente informarán esto como memoria libre, ya que las aplicaciones pueden borrar el caché y usarlo si lo necesitan, pero en realidad todavía se está usando. Cuanto menos haya, menos datos se podrán almacenar en caché y más lenta será la computadora.

Respuesta3

Esta respuesta se ha reescrito en su mayor parte para reorganizar la estructura y aclarar el mensaje. También lo abrí como una respuesta wiki de la comunidad; Siéntete libre de editar.

La paginación es un esquema de gestión de memoria mediante el cual bloques de memoria de tamaño fijo tienen procesos asignados. Cuando el uso de la memoria aumenta a un nivel alto (es decir, 80% de la capacidad), la paginación comienza a extenderse desde la RAM a la vRAM (RAM virtual).

La vRAM se encuentra en el almacenamiento del sistema, generalmente dentro de un disco duro u otras ubicaciones de almacenamiento importantes.

A los procesos se les asigna parte de su disco duro para ejecutarse como memoria y tratarán su sección como RAM. Este es un proceso perfectamente normal; sin embargo, cuando aumenta el tiempo dedicado a transferir datos hacia y desde la vRAM, el rendimiento del sistema disminuye.

Mientras que se accede a la RAM dedicada directamente a través de la placa base desde la CPU, lo 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 sólo causa un ligero impacto en el rendimiento. Cuando la velocidad de paginación a vRAM aumenta drásticamente (cuando la RAM dedicada se acerca a su capacidad), se produce una paliza.

Thrashing es la práctica de transferir rápida y rápidamente páginas de memoria a su memoria virtual. Esto afecta enormemente el rendimiento, ya que hay que dedicar más tiempo a buscar y abordar datos.

Digamos que desea escribir un número de 30 dígitos. Puedes sentarte junto a la pantalla con tu bloc de notas y escribirlo (usando la memoria dedicada), o recuerdas trozos de 5, correr a la habitación de al lado y escribirlo en tu bloc de notas (usando la memoria virtual). Ambos hacen el trabajo, pero ¿cuál será más rápido?

Encuentra mas sobredesgranando aquí!

Un gran agradecimiento a los contribuyentes de esta respuesta, incluidoDaniel B.,xenoideyJon Bentley.

Respuesta4

Recuerde, los discos duros son un orden de magnitud.Más lentoque la RAM, y la RAM en sí 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) tienes

  1. Registros del procesador- En términos prácticos, los registros están disponibles.dentro de 1 ciclo de procesador. Teniendo en cuenta que los procesadores realizan miles de millones de ciclos por segundo (3 GHz = 3 mil millones de ciclos por segundo), esto es increíblemente rápido.
  2. Caché del procesador- Depende del nivel, pero siguen siendo bastante rápidos (disponibilidad de 3 a 5 ciclos para caché L1).
  3. Memoria de acceso aleatorio (RAM)- La parte aleatoria significa que no sabes en qué estado se encuentra cuando accedes a ella. Piense en un repartidor de paquetes que tiene que detenerse, recoger el paquete, caminar hacia la puerta, tocar el timbre y esperar una respuesta. Tal vez no espere en absoluto, o tal vez espere uno o dos minutos hasta que la Sra. Smith se acerque a la puerta trasera de la casa. En términos prácticos, estamos hablando de 14 a 27 ciclos (dependiendo del estado de la RAM cuando accedemos a ella).
  4. Disco duro- Hay un proceso físico aquí ahora y mientras sucede lo más rápido posible estás esperando que las cabezas se muevan y las huellas se muevan debajo de esas cabezas. En terminos practicos,un disco duro de 7200 RPM puede completar una revolución en aproximadamente 4 ms, o en algún lugar alrededor750.000 ciclos para un procesador de 3 GHz. Eso es lento.

El Virtual Memory Manager es un jugador. Está apostando a que no necesita toda su RAM todo el tiempo, por lo que hace una suposición fundamentada y tira los dados a que su programa de documentos (que ha estado en segundo plano durante los últimos 10 minutos mientras lee esto) no es realmente importante y lo mete en el disco duro.

¡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 apuestas) al disco duro 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).

información relacionada