stringtranslate.com

Thrashing (informática)

En informática , la paliza ocurre en un sistema con memoria virtual cuando los recursos de almacenamiento reales de una computadora están comprometidos en exceso , 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 . [1] 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 , que puede cambiar con el tiempo.

Cuando el conjunto de trabajo no es significativamente mayor que el número total de marcos de páginas de almacenamiento reales 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 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.

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

Descripción general

La memoria virtual funciona tratando 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 permite que los procesos utilicen más memoria de la que está físicamente presente en la memoria principal . Los sistemas operativos que soportan 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 la 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 direcciones virtuales . En efecto, la memoria principal física se convierte en un caché de la memoria virtual, que por lo general se almacena en el disco en 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 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 menos trabajo "productivo" y más trabajo de "intercambio". 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. [2] La CPU está tan ocupada intercambiando páginas que no puede responder a los programas de los usuarios e interrumpe tanto como es 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 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 puede mantenerse efectivamente dentro de la memoria física, entonces puede ocurrir un constante intercambio de datos, es decir, paliza. El término se utilizó por primera vez durante la época del sistema operativo de cintas para describir el sonido que emitían las cintas cuando se escribían y leían datos rápidamente. El peor de los casos de este tipo en la computadora central de la serie IBM System/370 podría ser una instrucción de ejecución que cruza el límite de una página y que apunta a una instrucción de movimiento que también cruza el límite de una página, apuntando a un origen y un destino que cada uno cruza. límites de la página. El número total de páginas involucradas en esta instrucción particular es ocho, y las ocho páginas deben estar presentes simultáneamente en la memoria. Si cualquiera 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.

Una caída del sistema 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 [3] 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

La paliza es más conocida en el contexto de la memoria y el almacenamiento, pero ocurren fenómenos análogos para otros recursos , que incluyen:

paliza de caché

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

goleada al 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 destrucción de TLB puede ocurrir incluso si la caché de instrucciones o la caché de datos no se produce porque están almacenadas 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 enteras, 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 caben 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 quepa en TLB, lo que provoca una paliza de TLB.

montón de paliza

La recolección frecuente de basura , debido a una falla en la asignación de memoria para un objeto, debido a una memoria libre insuficiente o a una memoria libre contigua insuficiente debido a la fragmentación de la memoria , se denomina destrucción de montón. [4]

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 "palotación del proceso" debido a que se programan y no programan repetidamente, y progresan solo lentamente. [5]

Ver también

Referencias

  1. ^ Denning, Peter J. (1968). «Golpear: Sus causas y prevención» (PDF) . Actas AFIPS, Conferencia conjunta sobre informática de otoño . 33 : 915–922 . Consultado el 15 de febrero de 2012 .
  2. ^ L., Hennessy, John (2012). Arquitectura informática: un enfoque cuantitativo . Patterson, David A., Asanović, Krste. (5ª ed.). Waltham, MA: Morgan Kaufmann. ISBN 9780123838728. OCLC  755102367.{{cite book}}: CS1 maint: multiple names: authors list (link)
  3. ^ Song Jiang y Xiaodong Zhang (2005). "LRU ordenado por token: una política eficaz de reemplazo de páginas y su implementación en sistemas Linux" . Evaluación del desempeño. págs. 5–29. doi :10.1016/j.peva.2004.10.002.
  4. ^ Técnicas de optimización y ajuste del rendimiento para procesadores IBM, incluido IBM POWER8 , "heap+thrashing" p. 170
  5. ^ Ousterhout, JK (1982). "Técnicas de programación para sistemas concurrentes" (PDF) . Actas de la Tercera Conferencia Internacional sobre Sistemas Computacionales Distribuidos . págs. 22-30.