Thrashing (informática)
En informática, la thrashing ocurre en un sistema con memoria virtual cuando los recursos de almacenamiento reales de una computadora están sobrecomprometidos, lo que lleva a un estado constante de paginación y fallas de página, lo que ralentiza la mayor parte del procesamiento a nivel de aplicación. Esto hace que el rendimiento de la computadora se degrade o colapse. La situación puede continuar indefinidamente hasta que el usuario cierre algunas aplicaciones en ejecución o los procesos activos liberen recursos de memoria virtual adicionales.
Después de la inicialización, la mayoría de los programas operan en una pequeña cantidad de páginas de código y datos en comparación con la memoria total que requiere el programa. Las páginas a las que se accede con más frecuencia en cualquier momento se denominan conjunto de trabajo y pueden cambiar con el tiempo.
Cuando el conjunto de trabajo no es significativamente mayor que el número total de marcos de página de almacenamiento real del sistema, los sistemas de memoria virtual funcionan de manera más eficiente y se gasta una cantidad insignificante de computación en resolver la página. fallas. A medida que crece el total de conjuntos de trabajo, la resolución de errores de página sigue siendo manejable hasta que el crecimiento alcanza un punto crítico en el que el número de errores aumenta dramáticamente y el tiempo dedicado a resolverlos supera el tiempo dedicado a la computación para la que fue escrito el programa. Esta condición se conoce como paliza. Se puede producir una paliza en un programa que accede aleatoriamente a enormes estructuras de datos, ya que su gran conjunto de trabajo provoca continuos fallos de página que ralentizan drásticamente el sistema. Para satisfacer los errores de página, es posible que sea necesario liberar páginas que pronto tendrán que volver a leerse desde el disco.
El término también se utiliza para varios fenómenos similares, particularmente el movimiento entre otros niveles de la jerarquía de la memoria, en el que un proceso progresa lentamente porque se dedica mucho tiempo a adquirir recursos.
"Golpear" también se utiliza en contextos distintos de los sistemas de memoria virtual, por ejemplo, para describir problemas de caché en informática o el síndrome de la ventana tonta en las redes.
Sinopsis
La memoria virtual funciona al tratar una porción de almacenamiento secundario como un disco duro de computadora como una capa adicional de la jerarquía de caché. La memoria virtual permite que los procesos usen más memoria de lo que está físicamente presente en la memoria principal. Los sistemas operativos que apoyan la memoria virtual asignan procesos un espacio de dirección virtual y cada proceso se refiere a direcciones en su contexto de ejecución por una llamada dirección virtual. Para acceder a datos como código o variables en esa dirección, el proceso debe traducir la dirección a una dirección física en un proceso conocido como traducción de dirección virtual. En efecto, la memoria principal física se convierte en un caché para la memoria virtual, que en general se almacena en el disco en las páginas de memoria.
A los programas se les asigna una cierta cantidad de páginas según lo necesite el sistema operativo. Las páginas de memoria activa existen tanto en la RAM como en el disco. Las páginas inactivas se eliminan del caché y se escriben en el disco cuando la memoria principal se llena.
Si los procesos utilizan toda la memoria principal y necesitan páginas de memoria adicionales, se producirá una cascada de errores graves de caché conocidos como errores de página, que a menudo provocan un retraso notable en la capacidad de respuesta del sistema operativo. Este proceso, junto con el inútil y repetitivo intercambio de páginas que se produce, se conoce como "thrashing". Esto frecuentemente conduce a una utilización alta y descontrolada de la CPU que puede paralizar el sistema. En las computadoras modernas, la paliza puede ocurrir en el sistema de paginación (si no hay suficiente memoria física o el tiempo de acceso al disco es demasiado largo), o en el subsistema de comunicaciones de E/S (especialmente en conflictos sobre el acceso al bus interno), etc.
Dependiendo de la configuración y los algoritmos involucrados, el rendimiento y la latencia de un sistema pueden degradarse en múltiples órdenes de magnitud. La paliza se produce cuando la CPU realiza un funcionamiento "productivo" trabajar menos y 'intercambiar' trabaja más. El tiempo total de acceso a la memoria puede aumentar ya que la memoria de nivel superior es tan rápida como el siguiente nivel inferior en la jerarquía de memoria. La CPU está tan ocupada intercambiando páginas que no puede responder a las llamadas de los usuarios. programas e interrupciones tanto como sea necesario. La paliza ocurre cuando hay demasiadas páginas en la memoria y cada página hace referencia a otra página. La memoria real reduce su capacidad para contener todas las páginas, por lo que utiliza 'memoria virtual'. Cuando cada página en ejecución exige esa página que no está actualmente en la memoria real (RAM), coloca algunas páginas en la memoria virtual y ajusta la página requerida en la RAM. Si la CPU está demasiado ocupada realizando esta tarea, se produce una paliza.
Causas
En los sistemas de memoria virtual, la trituración puede ser causada por programas o cargas de trabajo que presentan una localización insuficiente de referencia: si el conjunto de trabajo de un programa o una carga de trabajo no se puede realizar eficazmente dentro de la memoria física, entonces el intercambio constante de datos, i.e. Puede ocurrir. El término se utilizó por primera vez durante los días del sistema operativo de cinta para describir el sonido de las cintas hechas cuando los datos se estaban escribiendo y leyendo rápidamente. Un escenario peor de este tipo en el ordenador de mainframe de la serie IBM System/370 podría ser una instrucción de ejecución cruzando un límite de página que apunta a una instrucción de movimiento también cruzando un límite de página, apuntando a una fuente y un objetivo que cada página de cruce límites. El número total de páginas involucradas así en esta instrucción particular es de ocho, y las ocho páginas deben estar simultáneamente presentes en la memoria. Si ninguna de las ocho páginas no puede ser intercambiada (por ejemplo para hacer espacio para cualquiera de las otras páginas), la instrucción fallará, y todo intento de reiniciarlo fallará hasta que se puedan intercambiar las ocho páginas.
Un sistema dañado suele ser el resultado de un aumento repentino en la demanda de páginas de un pequeño número de programas en ejecución. Swap-token es un mecanismo de protección contra golpes ligero y dinámico. La idea básica es establecer un token en el sistema, que se entrega aleatoriamente a un proceso que tiene fallas de página cuando ocurre la paliza. El proceso que tiene el token tiene el privilegio de asignar más páginas de memoria física para construir su conjunto de trabajo, que se espera que finalice rápidamente su ejecución y libere las páginas de memoria a otros procesos. Se utiliza una marca de tiempo para entregar los tokens uno por uno. La primera versión del token de intercambio está implementada en Linux. La segunda versión se llama token de intercambio preventivo. En esta implementación actualizada de token de intercambio, se establece un contador de prioridad para cada proceso para rastrear el número de páginas de intercambio. El token siempre se otorga al proceso con alta prioridad, que tiene una gran cantidad de páginas de intercambio. La duración de la marca de tiempo no es constante, sino que está determinada por la prioridad: cuanto mayor sea el número de páginas de intercambio de un proceso, más larga será la marca de tiempo.
Otros usos
El Thrasshing es más conocido en el contexto de la memoria y el almacenamiento, pero ocurren fenómenos análogos con otros recursos, que incluyen:
- Cache thrashing
- Donde la memoria principal se accede en un patrón que conduce a múltiples ubicaciones de memoria principales que compiten por las mismas líneas de caché, lo que resulta en faltas excesivas de caché. Esto es más problemático para los caches que tienen baja asociatividad.
- TLB thrashing
- Donde el amortiguador de aspecto de traducción (TLB) actuando como un caché para la unidad de gestión de memoria (MMU) que traduce direcciones virtuales a direcciones físicas es demasiado pequeño para el conjunto de páginas de trabajo. TLB trituración puede ocurrir incluso si caché de instrucciones o caché de datos no se está produciendo porque estos están caché en diferentes tamaños. Las instrucciones y los datos están grabados en bloques pequeños (líneas de caché), no páginas enteras, pero la búsqueda de direcciones se hace a nivel de página. Así, incluso si el código y los conjuntos de trabajo de datos encajan en la caché, si los conjuntos de trabajo se fragmentan en muchas páginas, el conjunto de trabajo de direcciones virtuales puede no encajar en TLB, causando la trituración de TLB.
- Jabón fulgor
- Frecuente colección de basura, debido a la falta de asignación de memoria para un objeto, debido a la insuficiente memoria gratuita o a la insuficiente memoria libre contiguo debido a la fragmentación de memoria se conoce como estruendo de montón.
- Proceso de trituración
- Un fenómeno similar ocurre para los procesos: cuando el conjunto de trabajo del proceso no puede ser programado – por lo que no todos los procesos de interacción están programados para funcionar al mismo tiempo – experimentan "recortamiento del proceso" debido a que están programados y no programados repetidamente, progresando sólo lentamente.
Contenido relacionado
Encuadernación tardía
Tabla de métodos virtuales
Alma-0
ALGOL Y
ALGOL 68S