CCoW: Optimización de la copia en escritura teniendo en cuenta la localidad espacial en las cargas de trabajo, parte 3
Apr 02, 2024
3. Diseño CCoW
En esta sección, primero presentamos nuestra motivación para mejorar la copia en escritura y explicamos el concepto básico de la copia en escritura basada en cobertura (CCoW). Luego explicamos la forma en que CCoW captura la localidad en diferentes escenarios y la optimización para capturar la localidad con bajos gastos generales.
La memoria es la capacidad de las personas para adquirir, almacenar y recuperar información. Los recuerdos de las personas también diferirán en diferentes escenarios. En este artículo, exploraremos la relación entre la memoria en diferentes escenarios.
El primero es el escenario de aprendizaje. El aprendizaje es un medio importante para que los humanos adquieran conocimientos y habilidades. En el proceso de aprendizaje, la memoria juega un papel vital. Si tiene buena memoria, podrá dominar nuevos conocimientos más rápidamente y retener los conocimientos aprendidos con mayor facilidad. Por lo tanto, en escenarios de aprendizaje, debemos mantener nuestro pensamiento claro y enfocado para mejorar la memoria.
El segundo es el panorama turístico. Viajar nos permite experimentar diferentes culturas y entornos, enriqueciendo enormemente nuestros horizontes. Durante el viaje, podemos adquirir un rico conocimiento cultural al recordar ubicaciones geográficas, personas, costumbres y otra información. Por lo tanto, en la escena de los viajes, debemos observarla atentamente y experimentarla activamente para mejorar nuestra memoria.
Una vez más, es una escena de trabajo. En el trabajo necesitamos manejar una gran cantidad de información, como datos, contactos, tareas, planes, etc. Si nuestra memoria no es lo suficientemente fuerte, afectará nuestra eficiencia y logros en el trabajo. Por lo tanto, en escenarios laborales, debemos hacer un buen trabajo de registro y organización y tratar de reducir el alcance de la "conexión de información" tanto como sea posible. De esta forma, podremos mejorar mejor nuestra memoria.
Finalmente, hay escenas de la vida. Los humanos necesitan recordar muchas cosas diarias, como direcciones, números de teléfono, tareas del día, etc. Si nuestra memoria no es lo suficientemente buena, surgirán muchos problemas en la vida. Por lo tanto, en las escenas de la vida, necesitamos ejercitar nuestra capacidad de memoria. Podemos mejorar nuestra memoria desarrollando el pensamiento asociativo y repitiendo en silencio.
En resumen, la memoria en diferentes escenarios está estrechamente relacionada. Podemos mejorar nuestra memoria y lograr un mejor rendimiento en diversos escenarios mediante la práctica y la concentración deliberadas. Sigamos una vida y una carrera mejores con una actitud optimista. Se puede ver que necesitamos mejorar la memoria, y Cistanche deserticola puede mejorar significativamente la memoria, porque Cistanche deserticola también puede regular el equilibrio de los neurotransmisores, como aumentar los niveles de acetilcolina y factores de crecimiento. Estas sustancias son muy importantes para la memoria y el aprendizaje. Además, Cistanche deserticola también puede mejorar el flujo sanguíneo y promover el suministro de oxígeno, lo que puede garantizar que el cerebro reciba suficientes nutrientes y energía, mejorando así la vitalidad y la resistencia del cerebro.

Haz clic en conocer suplementos para mejorar la memoria
3.1. Motivación
Como se analizó anteriormente, el mecanismo de copia en escritura desempeña un papel clave en la implementación de funciones de memoria virtual en los sistemas operativos modernos. Sin embargo, sus ventajas en términos de espacio han ido disminuyendo en los entornos informáticos modernos y en las cargas de trabajo de escritura intensiva, que son comunes en los centros de datos [21,22].
Las tecnologías de memoria emergentes, como la memoria de almacenamiento (SCM) y la memoria persistente, permiten una mayor densidad de datos para los módulos de memoria y al mismo tiempo reducen el costo por unidad de datos.
Hoy en día, construir un nodo con una enorme cantidad de memoria en la escala de terabytes se ha vuelto más barato que nunca. Además, los proveedores de servicios en la nube han informado que los nodos de los centros de datos están sufriendo una baja utilización de la memoria, lo que deja entre un 40% y un 50% de la memoria sin utilizar [23-26]. En esta situación, resulta factible intercambiar espacio de memoria por rendimiento en sistemas críticos para el rendimiento [27]. Las ventajas en términos de rendimiento también han ido disminuyendo.
El beneficio de rendimiento de la copia en escritura se puede caracterizar por la frecuencia y el rendimiento del manejo de errores de página. Al generar un proceso hijo, se elimina el permiso de escritura en todas las páginas. Desde la perspectiva de la corrección, esto es inevitable; sin embargo, esto conduce a frecuentes errores de página después de la bifurcación, al atender cada solicitud de escritura. Esta tormenta de errores de página de escritura no solo le ocurre a los procesos secundarios sino también al proceso principal.
Para empeorar las cosas, el tiempo de manejo de fallas de página no ha mejorado recientemente pero tiende a prolongarse por razones de seguridad. En el pasado, todo el espacio de direcciones del kernel se asignaba persistentemente a una parte del espacio de direcciones del proceso del usuario.
Sin embargo, este diseño del espacio de direcciones permite que procesos de usuario maliciosos lean indirectamente los datos críticos en el espacio de direcciones del kernel explotando la ejecución especulativa en los procesadores [28,29].
Para mitigar esta vulnerabilidad crítica de seguridad, los sistemas operativos modernos emplean el aislamiento de la tabla de páginas del núcleo (KPTI). En general, sólo una porción limitada del espacio de direcciones del kernel se asigna al espacio de direcciones del proceso, y el resto del espacio de direcciones del kernel se asigna y desasigna dinámicamente durante el manejo de interrupciones y llamadas al sistema. Esto debe ir acompañado de una limpieza del TLB, que puede degradar significativamente el rendimiento del sistema.
En este trabajo, nuestro objetivo es reducir la sobrecarga de la copia en escritura aprovechando la localidad espacial de las referencias de memoria. Actualmente, la copia en escritura se realiza por página, y cada vez que ocurre un error de página, el sistema operativo debería intervenir. Nuestra idea clave es reducir la frecuencia de participación del sistema operativo aprovechando la localidad espacial de los accesos a la memoria. Si se accede a una página para escribir, es probable que también se acceda a páginas cercanas para escribir en breve.
Por lo tanto, si realizamos la copia en escritura no sólo para la página defectuosa sino también para las páginas cercanas juntas (es decir, copiamos previamente las páginas cercanas), podemos amortizar la sobrecarga de la copia en escritura durante el manejo de la falla de la página. Sin embargo, debemos tener cuidado de no copiar siempre a ciegas todas las páginas cercanas.
Si las páginas copiadas se escriben más tarde, los gastos generales incurridos por la copia previa se amortizan. Sin embargo, si las páginas copiadas no se escriben después, la copia previa sólo genera una sobrecarga adicional en términos de tiempo y espacio.

Por lo tanto, es crucial identificar las páginas de destino adecuadas para copiar. Se han empleado enfoques similares para minimizar la sobrecarga de manejo de fallas de página. Linux emplea la característica llamada "alrededor de fallas". Mientras maneja un error de página, Linux inicia el manejo de errores de página para las páginas que se encuentran alrededor de la página defectuosa [2]. Sin embargo, esta característica sólo se aplica a los errores de página de lectura para regiones de memoria respaldadas por archivos.
Dado que la idea propuesta se centra en escribir errores de página para páginas anónimas, podemos argumentar que nuestro enfoque es diferente de la función de eliminación de errores. Se han propuesto muchos diseños de última generación [12-17] para optimizar el uso de páginas enormes en el sistema operativo.
Estos sistemas, en común, presentan un esquema para identificar las mejores páginas candidatas para convertirlas en páginas grandes y promocionarlas de manera eficiente (es decir, convertir páginas base en una página grande) o degradarlas (es decir, convertir una página enorme en páginas base). páginas enormes.
Sin embargo, independientemente de los esquemas propuestos, la copia sobre escritura se realiza únicamente en la granularidad de la página base, después de dividir la página enorme en páginas base si es necesario. Por lo tanto, sus características de rendimiento de copia en escritura son las mismas que las del sistema Linux predeterminado con el mecanismo de página enorme transparente (THP). Por el contrario, nuestro esquema propuesto es único en el sentido de que realiza copia en escritura con una granularidad diferente según el grado de localidad en los accesos a la memoria.
3.2. Identificación de la localidad espacial
Para realizar el plan propuesto, debemos considerar dos cuestiones desafiantes. En primer lugar, las páginas de destino deben identificarse de forma precisa y oportuna, de modo que se maximice el beneficio de la precopia y se minimicen los gastos generales de la precopia.
Una vez que un escritor copia una página, la página no provocará más errores de página. Esto significa efectivamente que el sistema perdió la oportunidad de optimizar el acceso de escritura. Por lo tanto, el sistema debería poder prever el uso futuro de la página para determinar qué páginas deben copiarse y cuáles no. En segundo lugar, la identificación de las páginas de destino debería tener una sobrecarga baja, ya que los sistemas operativos no pueden permitirse un procesamiento que requiere mucho tiempo en el subsistema de gestión de memoria crítico para el rendimiento.
Como se analizó en la Sección 2, muchas características de la memoria virtual en los sistemas operativos modernos se basan en el mecanismo de copia en escritura. Por lo tanto, la sobrecarga puede fácilmente superar el beneficio de la copia en escritura optimizada si la implementación general no es lo suficientemente eficiente.
Para predecir el futuro de una página, primero recopilamos el historial de bifurcaciones de los procesos del usuario. Específicamente, el sistema operativo monitorea la cantidad de bifurcaciones que invoca cada proceso. Un recuento bajo de un proceso implica que hay pocas oportunidades de explotar el proceso y el sistema operativo no necesita realizar un seguimiento completo de los errores de escritura de páginas para este proceso.
Por el contrario, cuando un proceso invoca la llamada al sistema fork más allá de un umbral, el sistema puede esperar la oportunidad de optimización. Esto sucede con Redis, que invoca periódicamente bifurcaciones para tomar instantáneas en la memoria, o con el script de shell que bifurca múltiples comandos de línea de comandos. En respuesta, el sistema comienza a rastrear los errores de página del proceso.

A continuación, proponemos un método para predecir la oportunidad de optimización a partir del historial, suponiendo que el comportamiento general de las aplicaciones no cambia significativamente. Para ello, dividimos el espacio de direcciones del proceso en regiones de tamaño fijo. Cada región mantiene un mapa de bits, donde cada bit corresponde a una página de la región. Se genera un proceso con todos los mapas de bits borrados, como para las áreas de memoria virtual (VMA) recién pobladas. Cuando se desasigna una parte o todo el VMA, también se liberan los mapas de bits en el rango de direcciones correspondiente.
El mapa de bits solo se asigna para las partes de VMA que están completas y la información de una página de 4 KB se resume en un bit. Por lo tanto, la sobrecarga de espacio para los mapas de bits es aproximadamente el 0.003 % del espacio de direcciones poblado. Inicialmente, las escrituras se procesan mediante la copia en escritura tal cual.
Se captura un acceso de escritura al manejador de errores de página, mediante el cual se establece la entrada de mapa de bits correspondiente. Con el tiempo, el mapa de bits captura efectivamente los accesos a la región y podemos cuantificar el grado de cobertura. La cobertura de una región se calcula como el porcentaje de páginas copiadas de todas las páginas de la región, de la siguiente manera:
![]()
Supongamos que un sistema utiliza páginas de 4 KB y el espacio de direcciones está dividido en regiones de 2 MB.
Entonces cada región tiene 512 4 páginas de KB. Si se copian 300 páginas en escritura, la cobertura de la región es 300/512 × 100=58.6%. Cuanto mayor sea la cobertura de una región, más podrá beneficiarse de la oportunidad de optimización de la precopia. Esta información de cobertura se transfiere a la bifurcación y se utiliza como métrica para determinar el beneficio de copiar páginas cercanas.
Específicamente, si una región de memoria tiene una cobertura alta, es probable que las páginas de la región eventualmente se copien sobre escritura. Por lo tanto, sería beneficioso realizar una copia previa de otras páginas de la región mientras se procesa un error de escritura de una página. Mientras que la oportunidad de optimización al precopiar páginas es pequeña si la cobertura es baja. Por lo tanto, el controlador de errores de página solo copia y escribe la página defectuosa.
De ahora en adelante, nos referiremos a este esquema como copia en escritura basada en cobertura o CCoW en el resto del artículo. La Figura 1 ilustra el concepto de CCoW. Hay dos regiones, las regiones 0 y 1, cada una de las cuales consta de seis páginas.
Las páginas con sombra verde se rellenan con copia en escritura. Cuando el proceso invoca la llamada al sistema de bifurcación, escriba permiso para que todas las páginas, incluidas las verdes, se eliminen durante la bifurcación. Supongamos que el umbral para determinar la región de localidad alta es 60%. En la región 0, se copiaron cuatro páginas (páginas 1, 2, 3 y 4) en escritura antes de la bifurcación, lo que proporcionó una cobertura del 4/6=66 %.
Por lo tanto, se considera que esta región tiene una alta localidad espacial y todas las páginas se copian para manejar el error de página de la página 3, sombreada en rojo. Mientras que la región inferior ofrece una cobertura del 33%, ya que dos de cada seis páginas se habían copiado antes de la bifurcación.
Por lo tanto, esta región tiene una cobertura menor que el umbral, lo que implica una baja localidad espacial en la región. Por lo tanto, cuando se accede a la página 9 para escribir, sólo se copia la página defectuosa al escribir en el manejador de errores de página, al igual que el procedimiento normal de copia en escritura.

For more information:1950477648nn@gmail.com






