Thrashing (informática) - Thrashing (computer science)

En ciencias de la computación , la paliza ocurre cuando los recursos de la memoria virtual de una computadora se sobreutilizan, lo que lleva a un estado constante de paginación y fallas de página , lo que inhibe 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 completar 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 se denominan conjunto de trabajo .

Cuando el conjunto de trabajo es un pequeño porcentaje del número total de páginas del sistema, los sistemas de memoria virtual funcionan de manera más eficiente y se gasta una cantidad insignificante de computación en resolver fallas de página. A medida que crece el conjunto de trabajo, la resolución de errores de página sigue siendo manejable hasta que el crecimiento alcanza un punto crítico. Luego, las fallas aumentan drásticamente y el tiempo dedicado a resolverlas supera el tiempo dedicado a la informática para la que se escribió el programa. Esta condición se conoce como paliza. Thrashing ocurre en un programa que trabaja con enormes estructuras de datos, ya que su gran conjunto de trabajo provoca continuas fallas de página que ralentizan drásticamente el sistema. La satisfacción de los errores de página puede requerir la liberación de páginas que pronto tendrán que volver a leerse del disco.

El término también se usa para varios fenómenos similares , particularmente el movimiento entre otros niveles de la jerarquía de la memoria , donde un proceso progresa lentamente porque se gasta un tiempo significativo en adquirir recursos.

"Thrashing" también se utiliza en contextos distintos de los sistemas de memoria virtual; por ejemplo, para describir problemas de caché en informática o síndrome de ventana tonta en redes.

Visión general

La memoria virtual funciona al tratar una parte del almacenamiento secundario , como el disco duro de una computadora , como una capa adicional de la jerarquía de caché . La memoria virtual se destaca por permitir que los procesos utilicen más memoria de la que está físicamente presente en la memoria principal y por habilitar las máquinas virtuales . Los sistemas operativos que soportan la memoria virtual asignan a los procesos un espacio de direcciones virtuales y cada proceso se refiere a direcciones en su contexto de ejecución mediante una llamada dirección virtual. Para acceder a datos como códigos 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 direcciones virtuales . 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 un cierto número de páginas según las necesidades del sistema operativo . Las páginas de memoria activa existen tanto en la RAM como en el disco. Las páginas inactivas se eliminan de la caché y se escriben en el disco cuando la memoria principal se llena.

Si los procesos están utilizando toda la memoria principal y necesitan páginas de memoria adicionales, se producirá una cascada de errores graves de caché conocidos como fallas de página , lo que a menudo conduce a 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". Con frecuencia, esto conduce a un uso elevado y descontrolado de la CPU que puede paralizar el sistema. En las computadoras modernas, pueden producirse errores 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 varios órdenes de magnitud . Thrashing es un estado en el que la CPU realiza menos trabajo "productivo" y "intercambia" 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 los programas de los usuarios e interrumpe 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 se acorta en capacidad para tener todas las páginas, por lo que utiliza 'memoria virtual'. Cuando cada página en ejecución exige esa página que no se encuentra 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 trepidación.

Causas

En los sistemas de memoria virtual , la paliza puede ser causada por programas o cargas de trabajo que presentan una localidad de referencia insuficiente : si el conjunto de trabajo de un programa o una carga de trabajo no se puede mantener de manera efectiva dentro de la memoria física, entonces puede ocurrir un intercambio constante de datos, es decir, una paliza. El término se utilizó por primera vez durante los días del sistema operativo de cintas para describir el sonido que hacían las cintas cuando se escribían y leían datos rápidamente. Un escenario de este tipo en el peor de los casos en la computadora central de la serie IBM System / 370 podría ser una instrucción de ejecución que cruza un límite de página que apunta a una instrucción de movimiento en sí misma que también cruza un límite de página, apuntando a una fuente y un destino que cada uno cruza límites de página. El número total de páginas involucradas en esta instrucción en particular es ocho, y las ocho páginas deben estar presentes simultáneamente en la memoria. Si alguna de las ocho páginas no se puede intercambiar (por ejemplo, para dejar espacio para cualquiera de las otras páginas), la instrucción fallará y todos los intentos de reiniciarla fallarán hasta que se puedan intercambiar las ocho páginas.

Otros usos

Thrashing se conoce mejor en el contexto de la memoria y el almacenamiento, pero ocurren fenómenos análogos para otros recursos , que incluyen:

Golpe de caché

Donde se accede a la memoria principal en un patrón que conduce a múltiples ubicaciones de la memoria principal que compiten por las mismas líneas de caché, lo que resulta en pérdidas excesivas de caché . Esto es más problemático para las memorias caché que tienen baja asociatividad .

Paliza TLB

Donde el búfer de búsqueda de traducción (TLB) que actúa como caché para la unidad de administración de memoria (MMU) que traduce direcciones virtuales a direcciones físicas es demasiado pequeño para el conjunto de páginas de trabajo. La trilla de TLB puede ocurrir incluso si la caché de instrucciones o la trilla de caché de datos no están ocurriendo, porque se almacenan en caché en diferentes tamaños. Las instrucciones y los datos se almacenan en caché en pequeños bloques ( líneas de caché ), no en páginas completas, pero la búsqueda de direcciones se realiza a nivel de página. Por lo tanto, incluso si los conjuntos de trabajo de código y datos encajan en la memoria caché, si los conjuntos de trabajo están fragmentados en muchas páginas, es posible que el conjunto de trabajo de direcciones virtuales no encaje en TLB, lo que provocaría una paliza de TLB.

Paliza en el montón

La recolección de basura frecuente , debido a la falla en la asignación de memoria para un objeto, debido a una memoria libre insuficiente o una memoria libre contigua insuficiente debido a la fragmentación de la memoria, se conoce como eliminación del montón.

Proceso de paliza

Un fenómeno similar ocurre con los procesos: cuando el conjunto de trabajo del proceso no se puede programar conjuntamente , por lo que no todos los procesos que interactúan están programados para ejecutarse al mismo tiempo, experimentan una "agitación del proceso" debido a que se programan y no se programan repetidamente, progresando solo lentamente.

Ver también

Referencias