CCoW: Optimización de la copia en escritura teniendo en cuenta la localidad espacial en las cargas de trabajo, parte 1

Apr 02, 2024

Abstracto:

La copia en escritura (CoW) es una técnica de gestión de memoria esencial que permite compartir páginas de forma eficiente entre procesos. Específicamente, al combinar CoW con la llamada al sistema fork, las aplicaciones, incluso con una gran cantidad de memoria, pueden tomar una instantánea de los datos actuales en la memoria con una sobrecarga baja.

Los datos de la memoria se refieren a los datos almacenados en la memoria de la computadora. Aunque es diferente de la memoria humana, existe una cierta conexión entre ambas.

En primer lugar, los datos de la memoria pueden promover el desarrollo de la memoria humana. Por ejemplo, podemos utilizar las funciones de grabación, almacenamiento y recuperación de las computadoras para ayudarnos a aprender, recordar y comprender conocimientos. La tecnología moderna nos proporciona formas más eficientes de recordar y aprender, lo que garantiza que podamos dominar mejor los conocimientos y las habilidades.

En segundo lugar, los datos de la memoria también pueden ayudar a las personas a gestionar mejor sus recuerdos. Al organizar y clasificar los datos de forma ordenada, podemos encontrar y recordar la información que necesitamos más rápidamente, lo cual es muy importante para nuestra vida, trabajo y estudio.

Lo más importante es que los datos en memoria previenen la pérdida de memoria humana. La memoria humana se debilita gradualmente con el tiempo, un proceso llamado "olvido". Sin embargo, al almacenar datos en el disco duro de una computadora, podemos asegurarnos de que la información y los recuerdos que necesitamos puedan conservarse y recuperarse en cualquier momento.

Por tanto, se puede decir que la relación entre los datos de la memoria y la memoria humana es positiva. Aunque no debemos confiar demasiado en la tecnología, el uso razonable de los datos de la memoria puede mejorar la eficiencia de nuestro trabajo y los resultados del aprendizaje, ayudarnos a administrar mejor la memoria y evitar el olvido. Se puede ver que necesitamos mejorar la memoria, y Cistanche deserticola puede mejorar significativamente la memoria porque Cistanche deserticola es un material medicinal tradicional chino que tiene muchos efectos únicos, uno de los cuales es mejorar la memoria. La eficacia de Cistanche deserticola proviene de los múltiples ingredientes activos que contiene, incluidos ácido tánico, polisacáridos, glucósidos flavonoides, etc. Estos ingredientes pueden promover la salud del cerebro a través de una variedad de vías.

improve memory

Haz clic en conocer 10 formas de mejorar la memoria

Sin embargo, dado que el CoW tiene lugar por página en el controlador de errores de página, cada vez que se produce el error de página, el sistema operativo debería intervenir. Esto conduce a una degradación significativa del rendimiento para cargas de trabajo con uso intensivo de escritura.

Este artículo propone copia en escritura (CCoW) basada en cobertura, un esquema de CoW optimizado que considera la localidad en los accesos a la memoria para mitigar el problema de CoW. CCoW mide la localidad espacial en espacios de direcciones de procesos con el concepto de cobertura.

Mientras procesa CoW, CCoW copia varias páginas por adelantado para regiones de memoria de alta localidad, minimizando así la participación del sistema operativo en cargas de trabajo con uso intensivo de escritura. Explicamos los desafíos para medir la localidad y brindamos la optimización para implementar el concepto.

La evaluación con un prototipo demuestra que este enfoque puede mejorar el rendimiento general de las aplicaciones hasta en un 10 % con una pequeña cantidad de sobrecarga de memoria.

Palabras clave: copia sobre escritura; sistema de memoria virtual; tenedor; Redis; fallo de página.

1. Introducción

La función principal de un sistema operativo (SO) es administrar recursos valiosos del sistema, y ​​la copia en escritura (CoW) es una de las técnicas de administración de memoria más fundamentales adoptadas por la mayoría de los sistemas operativos contemporáneos.

Cuando dos o más procesos necesitan tener los mismos datos, el esquema CoW permite que los procesos compartan las mismas páginas en lugar de duplicarlas inmediatamente. Las páginas compartidas se duplican bajo demanda, solo cuando uno de los procesos escribe en las páginas compartidas.

Los sistemas de memoria virtual pueden proporcionar de manera efectiva el intercambio de datos entre procesos, y varias características de la memoria virtual, como duplicar el espacio de direcciones durante las bifurcaciones de procesos, deduplicar las mismas páginas y compartir cero páginas, se implementan basándose en la copia en escritura [1-3]. Gracias a estas características, las aplicaciones pueden hacer una copia de sí mismas con poco espacio y utilizar el clon de forma adecuada.

Por ejemplo, Redis, uno de los sistemas populares de almacenamiento de valores clave en memoria [4], utiliza copia en escritura junto con el sistema de bifurcación para solicitar datos persistentes en memoria en el almacenamiento. Mientras atiende solicitudes entrantes, el proceso principal de Redis genera periódicamente un proceso hijo con la bifurcación. El proceso secundario comienza con una instantánea de la memoria idéntica al proceso principal para guardar los datos en memoria almacenados.

short term memory how to improve

Como la instantánea está aislada del espacio de direcciones del proceso principal pero administrada mediante copia en escritura, los procesos principal e hijo no requieren ningún mecanismo complicado para mantener la coherencia entre los datos actuales y la instantánea.

Por lo tanto, podemos considerar que la copia en escritura es esencial en el sistema de memoria virtual. Sin embargo, la copia en escritura actual es problemática en aplicaciones con uso intensivo de memoria y cargas de trabajo con uso intensivo de escritura. Específicamente, la duplicación de datos generalmente ocurre en el controlador de falla de página del sistema operativo. Dado que la duplicación de datos se procesa por página, con varias escrituras, el proceso puede provocar un número considerable de errores de página.

El sistema operativo está involucrado en cada falla de página, lo que resulta en frecuentes cambios de modo entre el usuario y el kernel. Teniendo en cuenta la enorme huella de memoria de las aplicaciones que consumen mucha memoria, la cantidad de cambios de modo es grande.

Además, la tabla de páginas se modifica durante la duplicación, lo que provoca la caída del búfer de búsqueda de traducción (TLB) de todos los núcleos del sistema. Todo esto genera gastos generales no despreciables y deteriora el rendimiento de las aplicaciones.

Este artículo propone la copia en escritura (CCoW) basada en cobertura, un novedoso esquema de optimización de copia en escritura. Cuando se accede a una página para escribir, es probable que también se acceda pronto a sus páginas cercanas para escribir debido a la localidad espacial en los accesos a la memoria. CCoW explota la localidad espacial para reducir la cantidad de errores de página en la copia en escritura. Específicamente, CCoW procesa la copia en escritura en una granularidad grande (llamada región).

Al copiar varias páginas en el controlador de errores de página, CCoW puede reducir un número considerable de errores de página por copia en escritura y los gastos generales que lo acompañan. Sin embargo, el grado de localidad espacial varía ampliamente dependiendo de la ubicación en el espacio de direcciones del proceso, y duplicar las partes de memoria de baja localidad genera sólo gastos generales en términos de tiempo y espacio.

Para superar esta deficiencia, proponemos un mecanismo preciso de bajo costo para evaluar la localidad espacial en el espacio de direcciones del proceso. CCoW cuenta el número de copias en escritura y escrituras en cada región.

Al transportar la información de localidad a través de bifurcaciones, podemos estimar el grado de localidad espacial, y CCoW realiza efectivamente la precopia solo para regiones de alta localidad. Implementamos el esquema CCoW propuesto en el kernel de Linux.

Al estar integradas en el sistema de memoria virtual del sistema operativo, las aplicaciones pueden beneficiarse de CCoW sin modificaciones. Analizamos las características de rendimiento con un microbenchmark y la evaluación utilizando el benchmark con cargas de trabajo realistas muestra que CCoW puede mejorar el rendimiento de la aplicación hasta en un 10% con una cantidad razonable de sobrecarga de memoria.

ways to improve memory

El resto de este documento está organizado de la siguiente manera. En la Sección 2, resumimos los antecedentes y el trabajo relacionado del artículo, incluida la memoria virtual y el fork. Explicamos los detalles del diseño de la CCoW y su implementación en la Sección 3. La Sección 4 presenta los resultados de la evaluación de la CCoW. Finalmente, concluimos este artículo en la Sección 5.

2. Antecedentes y trabajos relacionados

2.1. Paginación y memoria virtual

Casi todas las computadoras y sistemas operativos modernos adoptan paginación y memoria virtual como su esquema principal de administración de memoria [5]. La memoria principal se divide en páginas del mismo tamaño y los sistemas operativos asignan o desasignan memoria de los procesos del usuario en la unidad de páginas.

Los sistemas operativos también mantienen las asignaciones de los espacios de direcciones de los procesos a la ubicación física en el sistema. Cada página lógica en el espacio de direcciones del proceso se asigna a su ubicación física y esta asignación se almacena en forma de tabla de páginas.

Para manejar la referencia de memoria para un proceso, una unidad de administración de memoria (MMU), un componente de hardware en el procesador, traduce la dirección solicitada a su dirección física consultando la tabla de páginas. La tabla de páginas comprende entradas de la tabla de páginas (PTE). Cada PTE contiene la información de mapeo y puede tener campos adicionales para describir el estado de la página y el mapeo correspondientes.

El tamaño de la página, aunque es específico de la arquitectura, suele ser de 4 KB en la mayoría de las arquitecturas. Esto implica que cada 4 KB en el espacio de direcciones del proceso debe tener una PTE. Considerando el enorme tamaño del espacio de direcciones del proceso, el tamaño de la tabla de páginas, incluso para un solo proceso, puede ser enorme.

Por ejemplo, la tabla de páginas para un proceso en arquitectura de 64-bits con páginas de 4 KB y PTE de 8-bytes tendría un tamaño de 32 PB (264/212 × 8=255 bytes). Sin embargo, el espacio de direcciones suele estar escasamente poblado y la mayor parte del espacio de direcciones no es necesario.

Esto ilumina la organización jerárquica de la tabla de páginas. La tabla de páginas completa se divide en partes de la tabla de páginas que caben en una página. Las partes de la tabla de páginas no se asignan a regiones de direcciones no asignadas.

memory enhancement

Las piezas de la tabla de páginas pobladas se pueden resumir como piezas de la tabla de páginas de nivel superior. Esta dirección indirecta se repite hasta que solo existan piezas en una página, lo que permite una forma compacta de tablas de páginas.


For more information:1950477648nn@gmail.com

También podría gustarte