Publicado el 8 de Septiembre del 2017
621 visualizaciones desde el 8 de Septiembre del 2017
1,0 MB
18 paginas
Creado hace 16a (31/03/2009)
Middlewares para Sistemas de Alto
Middlewares para Sistemas de Alto
Rendimiento
Rendimiento
Rendimiento
Rendimiento
José M. Peña
Contenidos
Contenidos
Contenidos
Contenidos
Middlewares:
Middlewares:
Ejemplo lenguajes/entornos de
programación:
programación:
◦ Lenguaje de programación paralela:
OpenMP
OpenMP
Ejemplos de servicios HPC:
◦ Sistemas de ficheros para cluster
◦ Sistemas de ficheros para cluster
Lustre
Memoria compartida distribuida
◦ Memoria compartida distribuida
TreadMarks
Middleware
Middleware
Middleware
Middleware
Middleware: En el concepto de
Middleware: En el concepto de
“software intermediario”, da soporte al
desarrollo de aplicaciones
distribuidas:
◦ Abstracción: Haciendo de interfaz entre
p
las tareas/procesos y el hardware o
sistema operativo.
◦ Servicios: Proporciona servicios y
funcionalidades para el desarrollo de
aplicaciones.
li
i
Middleware de un Sistema
Distribuido
Objetivos:
◦ Interoperabilidad.
◦ Facilidad de desarrollo.
Middleware de un Sistema Cluster
Objetivos:
◦ Rendimiento.
◦ Disponibilidad.
Ejemplos de Servicios:
Ejemplos de Servicios:
◦ Descubrimiento.
◦ Seguridad.
Mecanismos:
Mecanismos:
◦ Recubrimiento del Software
◦ Abstracciones.
Abstracciones.
◦ Deslocalización de
servicios.
◦ Acceso a datos.
◦ Checkpointing.
Mecanismos:
Mecanismos:
◦ Acceso directo al HW
◦ Reparto de carga.
Reparto de carga.
◦ Caching.
Middleware
Middleware
Niveles de Middleware
Niveles de Middleware
Niveles de Middleware
Niveles de Middleware
◦ Nivel de implementación:
◦ Nivel de implementación:
Acceso a E/S compartida (e.g., disco).
Migración de procesos/checkpointing
Migración de procesos/checkpointing.
Espacio unificado (procesos, usuarios, …)
Nivel de programación:
◦ Nivel de programación:
Lenguajes y bibliotecas específicos (HPF, MPI, OpenMP)
Servicios:
Servicios:
Sistemas de ficheros de cluster
Memoria compartida distribuida (DSM)
◦ Nivel de gestión:
◦ Nivel de gestión:
Gestión de trabajos.
Administración del sistema
Administración del sistema.
MIDDLEWARE DE
MIDDLEWARE DE
SISTEMAS DE ALTO
SISTEMAS DE ALTO
RENDIMIENTO
RENDIMIENTO
Lenguajes y entornos de programación
Lenguajes de programación:
◦ Lenguajes paralelos
OpenMP
OpenMP
OpenMP
OpenMP
Estandarizado
Estandarizado.
Adecuado para:
◦ Máquinas SMP
◦ Máquinas SMP
◦ Memoria compartida
◦ Paralelismo a nivel de tarea/datos
l d t
/d t
l
li
P
i
Características:
Basado en directrices de pre-procesador (en fase de
compilado).
Fácil de utilizar.
Fácil de utilizar
Flexibilidad limitada.
Dependencia del compilador
Dependencia del compilador.
OpenMP
OpenMP
OpenMP
OpenMP
Estructuras de control paralelas
Estructuras de control paralelas
int main(int argc, char **argv)
{
const int MAX = 250000;
const int MAX = 250000;
int i, m[MAX];
#pragma omp parallel for
#pragma omp parallel for
for (i = 0; i < MAX; i++)
m[i] = i*i*1.23;
return 0;
}
OpenMP
OpenMP
OpenMP
OpenMP
Mecanismos de sincronización:
Mecanismos de sincronización:
◦ Barreras de sincronización:
#pragma omp barrier
#pragma omp barrier
◦ Operaciones atómicas:
#pragma omp atomic
#pragma omp atomic
◦ Secciones críticas:
#pragma omp critical
iti l
#
OpenMP
OpenMP
OpenMP
OpenMP
Funciones auxiliares:
Funciones auxiliares:
◦ Barreras de sincronización:
omp get thread num()
omp_get_thread_num()
omp_get_num_threads()
◦ Información de control:
◦ Información de control:
omp_get_nested()
omp in parallel()
omp_in_parallel()
◦ Control de cerrojos:
omp_*_lock()
* l k()
MIDDLEWARE DE
MIDDLEWARE DE
SISTEMAS DE ALTO
SISTEMAS DE ALTO
RENDIMIENTO
RENDIMIENTO
Servicios a nivel de programación
Servicios:
◦ Sistemas de ficheros de cluster.
◦ Sistemas de memoria compartida distribuida.
p
Lustre
Lustre
Lustre
Lustre
Desarrollado por
Desarrollado por
Sun Microsystems
◦ Características
◦ Características
generales:
Compatible POSIX
Compatible POSIX
Con estado
Basado en objetos
Basado en objetos
Tolerante a fallos
◦ Componentes:
C
Object Storage Client
t
(OSC)
(OSC).
Metadata Served
(MDS)
(MDS)
Object Storage Server
(OSS)
(
)
Lustre
Lustre
Lustre
Lustre
◦ Componentes:
Object Storage
Object Storage
Client (OSC).
Metadata Served
(MDS)
Object Storage
Server (OSS)
LDAP Server
Configuration information, network connection details,
& security management
Lustre Client
Lustre Client
Directory operations,
Meta-data & concurrency
file I/O &
file locking
Meta-data Server
M d
S
(MDS)
recovery,
file status,
file creation
Object Storage Targets
Obj
T
S
(OST)
Object Storage Targets
(OST)
© S.Ravindrandh Chowdary
Lustre File System – HP, 09
Lustre
Lustre
Lustre
Lustre
Mejoras de rendimiento:
Mejoras de rendimiento:
◦ Soporte nativo sobre redes de altas
prestaciones (e g InfiniBand) en lugar
prestaciones (e.g., InfiniBand), en lugar
de pasar por la pila TCP/IP
DSMDSMDSMDSM
Motivación:
Motivación:
◦ Migración de código de sistemas
multiprocesadores/vectoriales
multiprocesadores/vectoriales.
◦ Modelo de programación más intuitivo.
Implementaciones:
Basadas en compiladores
◦ Basadas en compiladores.
◦ Basadas en memoria virtual:
TreadMarks
dM k
T
DSM: Gestión de Copias
DSM: Gestión de Copias
DSM: Gestión de Copias
DSM: Gestión de Copias
Número de copias:
Número de copias:
◦ Única: Mal rendimiento.
◦ Múltiples de lectura
◦ Múltiples de lectura.
◦ Múltiples de lectura/escritura.
Localización:
d
B
◦ Broadcast.
◦ Gestor de páginas DSM
◦ Gestión distribuidas: Múltiples gestores.
DSM:DSM: TreadMarks
DSM:
DSM: TreadMarks
TreadMarks
TreadMarks
Biblioteca de DSM a nivel de usuario:
Biblioteca de DSM a nivel de usuario:
◦ Bibliotecas propias de gestión.
◦ Identificación selectiva de variables
◦ Identificación selectiva de variables
compartidas (páginas de memoria virtual).
◦ Indicación explicita de sincronización
◦ Indicación explicita de sincronización.
◦ Consistencia perezosa.
Múltiples lectores/escritores
◦ Múltiples lectores/escritores.
◦ Utiliza copias de trabajo y originales
modificados
modificados.
◦ Combinación en base a diferencias.
DSM:DSM: TreadMarks
DSM:
DSM: TreadMarks
TreadMarks
TreadMarks
Uso:
Uso:
◦ Reserva de memoria (Tmk_malloc).
◦ Compartición explícita de memoria
◦ Compartición explícita de memoria
(Tmk_distribute).
◦ Sincronización entre todas las copias
◦ Sincronización entre todas las copias
(Tmk_barrier, Tmk_lock_...).
◦ Consistencia al adquirir cerrojos:
◦ Consistencia al adquirir cerrojos:
Invalidando datos compartidos.
Alternativas:
Alternativas:
Recuperándolos bajo demanda (invalidate).
Mandando cambios al adquirir el cerrojo (update).
( p
)
q
j
Comentarios de: Middlewares para Sistemas de Alto Rendimiento (0)
No hay comentarios