To Top
Optimización del comportamiento paralelo

Optimización del comportamiento paralelo

Imprimir Email
(0 votos)

Optimización del comportamiento paralelo

Las unidades de almacenamiento en disco ofrecen un rendimiento óptimo para los grandes accesos: operaciones de lectura (o escritura) realizadas sobre una gran cantidad de datos en un solo acceso (9 ms para posicionar y sólo 3 ms para transferir un bloque de 64KB [ID01]). Sin embargo, hemos indicado que los patrones de E/S en los programas HPC paralelos consisten en su mayoría en un gran número de peticiones simultáneas sobre cantidades más o menos grandes y no contiguas.

Un enfoque ambiguo, pero todavía muy utilizado, consiste en hacer que un proceso precargue todos los datos útiles para la aplicación en su espacio de memoria. A continuación, los datos se redistribuirán en el momento oportuno a los procesos correspondientes. Además de una red de interconexión rápida (los datos transitan dos veces por la red), esta solución llamada de precarga requiere un espacio de memoria lo suficientemente grande como para soportar el archivo. De lo contrario, la aplicación se enfrenta a un problema de fuera del núcleo que también depende de la E/S.

Para superar este problema de E/S en paralelo, la comunidad científica ha propuesto cuatro enfoques: la agregación de accesos, el uso de técnicas asíncronas, la implementación de técnicas de caché y/o de programación. Como veremos, cada uno de estos mecanismos puede ser implementado en diferentes lugares (nivel de aplicación vs. capas de sistema o nivel de cliente vs. servidores). Como las posibilidades de optimización dependen de la ubicación, cada una de las técnicas tiene que hacer concesiones. En el resto de este capítulo presentaremos las técnicas más utilizadas.

Acceso a la agregación

Esta técnica consiste en agregar varias consultas en una sola más amplia. El objetivo es doble: permite reducir el número de peticiones al sistema de archivos y realizar accesos más consistentes y, por tanto, más eficientes.

La mayoría de las soluciones disponibles para mejorar el rendimiento se basan en esta idea [TGL02, TGL99a, NL97, LR96, MWLY03, HJMY00]. En esta sección, presentaremos las principales diferencias entre cada una de ellas. En primer lugar, describiremos dos mecanismos explotados dentro de un proceso (y, por tanto, dentro de un único nodo cal-cul) y, a continuación, nos centraremos en las estrategias colectivas que permiten agregar todas las peticiones de una aplicación paralelizada.

Vectores de E/S

La primera solución para transmitir varias peticiones en una sola llamada es utilizar rutinas de vectores de acceso. Este tipo de enfoque se implementa a nivel de aplicación en los nodos cliente.

La interfazPOSIX proporciona las funcionesreadv y write que permiten una llamada para manipular múltiples áreas de memoria disjuntas ubicadas en el espacio de usuario desde/a una porción contigua de un archivo. Desgraciadamente, este primer mecanismo no permite la tarea contraria: manipular un área contigua desde/a múltiples áreas dentro de un archivo.

Para solucionarlo, se ha propuesto el enfoque de la lista de E/S [CCC+03]. Permite indicar dentro de una sola llamada un patrón de acceso complejo: simple, doble, ... Una lista de pares (offset, tamaño) describe la distribución de los datos en memoria y una lista similar se utiliza para hacer coincidir en el disco.

E/S basadas en flujos

Este enfoque se ha propuesto para reducir las interacciones que pasan por las redes en el contexto de los sistemas de archivos distribuidos. Desarrollado en el marco del proyecto PVFS ([LR96], véase la sección 3.1.6), el concepto consiste en agregar varias peticiones en una sola trama de red en los nodos cliente para enviarla al servidor de datos. El número de mensajes que pasan por el clúster se reduce así considerablemente.

La construcción de cada trama de "solicitud" tiene en cuenta el protocolo de intercambio utilizado y el tamaño óptimo de los segmentos correspondientes. De este modo, se pueden reducir considerablemente los mensajes de control necesarios para cada solicitud de E/S y, por tanto, el tránsito por la red.

La sobrecarga de este método es la operación de empaquetamiento del acceso dentro de las capas del sistema en el lado del cliente (capa PVFS) y la fase de reestructuración de la solicitud (lado del servidor).

Sin embargo, esta solución no tiene en cuenta los problemas relacionados con la colocación de los datos y el intercalado (es posible realizar varias consultas sobre los mismos datos). Además, se propuso sobre la base de una arquitectura en la que la latencia de la red es relativamente alta en comparación con el rendimiento ofrecido por las unidades de almacenamiento, lo que, como hemos comentado en el capítulo anterior, suele ser inexacto.

Tamizado de datos

El cribado de datos es una técnica para agregar múltiples solicitudes no contiguas del mismo proceso.

del mismo proceso. A diferencia de los vectores de acceso o el Stream

El enfoque de E/S, en el que sólo se manipulan los datos útiles, el enfoque de tamizado de datos consiste en

El siguiente ejemplo ilustra el principio del cribado de datos.

El siguiente ejemplo ilustra el principio de este método: supongamos que queremos realizar 5 peticiones de lectura desde un mismo proceso y que estos accesos no son contiguos. En lugar de transmitir 5 llamadas, se calcula una única llamada desde la posición inicial hasta la final de estas peticiones y se realiza una única operación de lectura. Todos los datos se colocan en un búfer temporal antes de ser redistribuidos a las distintas zonas que ofrece la aplicación.

La parte izquierda de la figura 2.6 lo ilustra. Esta solución está limitada por dos factores principales: - El tamaño del búfer de copia temporal:

Define el número de llamadas que hay que ejecutar para "cubrir" todos los bloques remotos.

- El grado de no continuidad:

Define el espacio entre dos bloques distantes. Por lo tanto, si este factor es demasiado alto, la implementación del método puede ser mucho más cara que el coste acumulado de todos los accesos necesarios para recuperar los datos útiles mediante llamadas simplesPOSIX. Es importante tener en cuenta que, a diferencia de los dos métodos anteriores, entre la aplicación y el sistema de archivos pasa una cantidad mayor o menor de datos "inútiles". Se ha demostrado que el cálculo de este ratio para cada llamada permite una elección óptima de la estrategia a aplicar sin añadir un coste significativo [Raj02] (presentamos el cálculo del grado de continuidad en detalle en el Apéndice A).

Por último, es interesante señalar que, aunque esta solución también puede utilizarse para las operaciones de escritura, requiere la implementación de un tipo de acceso específico:

lectura-escritura modificada. Este tipo de procedimiento permite modificar sólo las partes deseadas de los datos (la información incluida en el

(la información incluida en dustridene no se sobrescribe). Además, para mantener la integridad de los datos, es imprescindible bloquear la región del archivo a la que accede la aplicación.

los accesos de la aplicación. Por lo tanto, para reducir los fenómenos de contención debidos a la toma de bloqueos, el buffer temporal utilizado para las escrituras es de un tamaño mucho menor que el utilizado durante las operaciones de lectura.

Esta solución se encuentra generalmente en las bibliotecas de aplicaciones que implementan las especificaciones de E/S de MPI (ver sección 3.2.6).

Fuente


Deja un comentario

Calificado 4.69 / 5.0 para Data System Diseño Web

Reparación portátil © Todos los derechos reservados

Hola! Haz clic en uno de nuestros representantes a continuación para chatear por WhatsApp o envíanos un correo electrónico a [email protected]

Chatea con nosotros por WhatsApp
Close and go back to page