Tema 6: Sistemas Distribuidos

Tema 6: Sistemas Distribuidos • Introducción • Procesos (comunicación, sincronización, exclusión mútua y deadlock) • Diseño de los módulos del sistem...
2 downloads 0 Views 2MB Size
Tema 6: Sistemas Distribuidos • Introducción

• Procesos (comunicación, sincronización, exclusión mútua y deadlock) • Diseño de los módulos del sistema - Planificación de trabajos - Manejo de memoria - Sistema de ficheros

Sistemas Distribuidos (Introducción) Velocidad Refinar algoritmos Solapar ejecución - Varias ALU - Pipe-line Máquinas grandes Costo $ Mejora Tolerancia a fallos Aplicaciones sin "error parada"

Necesidad Reducir T. Apl. Introducir n_CPU

Aparición : 1) μ p (costo) 2) Límite físico 3) LAN

A

B

C

Sistemas Distribuidos

Problemática planteada La inclusión de N-elementos de procesamiento ha abierto una serie de problemas que no aparecían en el procesamiento convencional serie: • Arquitectura • Lenguajes • Compiladores • S.O. • Entornos adecuados de desarrollo de aplicaciones

Taxonomía (perspectiva del h/w) MIMD Computadores paralelos (distribuidos) fuertemente acoplados Multiprocesadores (Mem. Compartida)

BUS

SWITCHED

Basada en un bus Redes conmutadas común. Utiliza una red de enlace entre CPU's-mem. princ. Amplitud de banda mayor. Utilizadas para maximizar el tiempo de una aplicación

debilmente acoplados Multicomputadores (Mem. privada)

BUS Redes entre procesadores (CPU-CPU)

SWITCHED

Sistemas fuerte/débilmente acoplados CPU CACHE

CPU CACHE

MEMORIA BUS

• Saturación del bus • Escalabilidad /tolerancia a fallos • Coherencia de cache

subsistema de memoria M

M

M

M

C

C CPU C

C n2 nodos de conmutación

C

M 2x2

C

M

C

M

C

M

CPU

Sistema de memoria

Topologías de interconexión

Combinaciones H/W y S/W • Sistema Operativo en Red h/w y s/w débilmente acoplados (NFS) • Verdaderos S.O.D. h/w débilmente acoplado y s/w fuertemente acoplado • Multiprocesador h/w y s/w fuertemente acoplados

Objetivos del diseñador de S.D. • Transparencia: - localización

- paralelismo

- migración

- concurrencia

• Flexibilidad - Microkernels

- DCE

- SSI ….

• Fiabilidad - Redundancia - Tolerancia a fallos (checkpoint, rollback) • Prestaciones • Escalabilidad

Tendencias actuales de diseño

DCE

S.O. Red

S.O.D.

NOW

Amoeba

Beowulf

Mach

COW

V System

SSI

Sistemas Distribuidos (1)

Comparison of three kinds of multiple CPU systems

Sistemas Distribuidos (2)

Achieving uniformity with middleware

Network Hardware (1) Computer

(a)

• Ethernet (a) classic Ethernet (b) switched Ethernet

(b)

Network Hardware (2)

The Internet

Sistemas Operativos Distribuidos Comunicación de Procesos en Sistemas Distribuidos

Comunicación en Sistemas Distribuidos Permite la interacción entre aplicaciones y servicios del sistema. Modelos de comunicación entre procesos: – Memoria compartida (Sólo uni/multiprocesador no distribuido). – Paso de mensajes.

El nivel de abstracción en la comunicación: – Paso de mensajes puro (Cliente-Servidor). – Llamadas a procedimientos remotos. – Modelos de objetos distribuidos.

Factores de Comunicación Los diferentes mecanismos de comunicación se caracterizan por los siguientes factores: – Rendimiento: Latencia, ratio de transferencia, ancho de banda, ... – Escalabilidad: Número de elementos activos. – Fiabilidad: Pérdida de mensajes. – Seguridad:Cifrado, certificación, ... – Movilidad: Equipos móviles. – Calidad de Servicio (QoS): Reserva y garantía de anchos de banda. – Comunicación en grupo: Multicast.

Niveles de Comunicación 1) Paso de mensajes puro. Aplicaciones en red.

Aplicaciones y Servicios API (sockets)

TCP/UDP

2) Funcionalidades de comunicación de bajo nivel. Sistemas Operativos Distribuidos.

3) Llamadas a procedimientos remotos y objetos distribuidos.

App./Servicios

App./Servicios

Interfaz y Lógica de Comunicación

ATM/Ethernet

RMI/RPC Protocolo y Representación

TCP/UDP

Primitivas de Comunicación Cada una de las funciones de comunicación de una tecnología determinada. Las primitivas básicas son: – Envío: send(destino,mensaje). – Recepción: receive(fuente,mensaje).

Otras primitivas: – Conexión: connect(destino). – Desconexión: close().

Cada una de las primitivas tiene las siguientes características: – Boqueantes vs No-bloqueantes. – Síncronas vs Asíncronas. – Fiables vs No-fiables.

Bloqueantes vs. No-bloqueantes Las características de bloqueo son: – Primitivas bloqueantes: La operación bloquea al elemento que la solicita hasta que ésta sea completada. – Primitivas no-bloqueantes: La operación no detiene la ejecución del elemento que la solicita.

Las llamadas no bloqueantes tienen distinto sentido dependiendo de la primitiva que se trate: – Envío no bloqueante: El emisor almacena el dato en un buffer del núcleo (que se encarga de su transmisión) y reanuda su ejecución. – Recepción no bloqueante: Si hay un dato disponible el receptor lo lee, en otro caso indica que no había mensaje.

Sínconas vs. Asíncronas Esta característica afecta no tanto a la primitiva como a la transmisión en sí. – Comunicación síncrona: Envío y recepción se realizan de forma simultanea. – Comunicación asíncrona: El envío no requiere que el receptor este esperando.

La comunicación asíncrona usa un buffer de almacenamiento. Implica ciertas condiciones de bloque en envío y recepción.

Fiabilidad El envío fiable de datos garantiza que un mensaje enviado ha sido recibido por el receptor. Implica la retransmisión de mensajes de validación (ACKs). La fiabilidad la puede garantizar: – El protocolo de comunicación (TCP si y UDP no). – Los elementos emisor y receptor.

Primitivas de Comunicación EMISOR EMISOR 1

8 Núcleo Emisor

7

RED ACK msg

6

5

RECEPTOR RECEPTOR

Núcleo Receptor

4

2 3 Envío no bloqueante: [1:8] El emisor continua al pasar el mensaje al núcleo. Envío bloqueante: [1:2:7:8] El emisor espera a que el núcleo transmita por red el mensaje. Envío bloqueante fiable: [1:2:3:6:7:8]: El emisor espera a que el núcleo receptor recoge el mensaje. Envío bloqueante explícito: [1:2:3:4:5:6:7:8]: Idem al anterior, pero es la aplicación receptora la que confirma la recepción. Petición-Respuesta: [1:2:3:4::5:6:7:8]: El emisor espera a que el receptor procese la operación para reanudar la ejecución.

Direccionamiento Información válida para la identificación de elementos del sistema. Posibles receptores de un mensaje. Mecanismos: – Dirección dependiente de la localización: • Por ejemplo: dirección máquina + dirección puerto local. • No proporciona transparencia.

– Dirección independiente de la localización (dir. lógica): • Facilita transparencia. • Necesidad de proceso de localización: – Mediante broadcast. – Uso de un servidor de localización que mantiene relaciones entre direcciones lógicas y físicas.

• Uso de cache en clientes para evitar localización.

Comunicación en Grupo Se habilita por medio de: – Variantes de protocolos de red: IP-multicast. – Emulandola por medio de protocolos de alto nivel o por las aplicaciones.

El direccionamiento se realiza por medio de una dirección de grupo (grupo al que pertenecen todos los receptores). Modelos de grupos: – Grupo abierto. – Grupo abierto controlado. – Grupo cerrado.

msg rpy

... receive(msg) ... send(rpy)

int buscar(int cod) { ... ... return val; }

Servidor

... send(msg) ... receive(rpy)

Servidor

Cliente

Llamadas Procedimientos Remotos

... ... x=buscar(1556) ...

¿?

¿?

Cliente

Paso de mensajes (visión de bajo nivel)

Llamadas a procedimientos remotos (más alto nivel)

Comodidad

Llamadas a Procedimientos Remotos Remote Procedure Call: RPC. Evolución: – Propuesto por Birrel y Nelson en 1985. – Sun RPC es la base para varios servicios actuales (NFS o NIS). – Llegaron a su culminación en 1990 con DCE (Distributed Computing Environment) de OSF. – Han evolucionado hacia orientación a objetos: invocación de métodos remotos (CORBA, RMI).

Funcionamiento RPC Cliente: – El proceso que realiza una la llamada a una función. – Dicha llamada empaqueta los argumentos en un mensaje y se los envía a otro proceso. – Queda la espera del resultado.

Servidor: – Se recibe un mensaje consistente en varios argumentos. – Los argumentos son usados para llamar una función en el servidor. – El resultado de la función se empaqueta en un mensaje que se retransmite al cliente.

Objetivo: acercar la semántica de las llamadas a procedimiento convencional a un entorno distribuido (transparencia).

Elementos Necesarios Código cliente. Código del servidor. Formato de representación. Definición del interfaz. Localización del servidor. Semánticas de fallo. ... ... x=buscar(1556) ...

int buscar(int cod) { ... ... return val; }

Servidor

Cliente

• • • • • •

Código Cliente/Código Servidor Las funciones de abstracción de una llamada RPC a intercambio de mensajes se denominan resguardos (stubs).

SISTEMA CLIENTE

SISTEMA SERVIDOR

CÓDIGO DE LA APLICACIÓN INICIO LLAMADA RESGUARDO CLIENTE

1

2

5

FIN LLAMADA

PREPARA ENTRADA CONVIERTE SALIDA

BIBLIOT. EJECUCIÓN RPC

PROCEDIMIENTOS

CONVIERTE ENTRADA

RESGUARDO SERVIDOR

9

ENVÍA ENTRADA RECIBE SALIDA

EJECUTA PROCEDIMIENTO REMOTO

8

4

6 PREPARA SALIDA BIBLIOT. EJECUCIÓN RPC

RECIBE Y PASA

7 TRANSMITE SALIDA

3

Sistemas Operativos Distribuidos Sincronización, Concurrencia

Sincronización en Sistemas Distribuidos Más compleja que en los centralizados • Propiedades de algoritmos distribuidos: – La información relevante se distribuye entre varias máquinas. – Se toman decisiones sólo en base a la información local. – Debe evitarse un punto único de fallo. – No existe un reloj común.

• Problemas a considerar: – – – –

Tiempo y estados globales. Exclusión mutua. Algoritmos de elección. Operaciones atómicas distribuidas: Transacciones

Sincronización de Relojes Físicos Relojes hardware de un sistema distribuido no están sincronizados. Necesidad de una sincronización para: – En aplicaciones de tiempo real. – Ordenación natural de eventos distribuidos (fechas de ficheros).

Concepto de sincronización: – Mantener relojes sincronizados entre sí. – Mantener relojes sincronizados con la realidad.

UTC: Universal Coordinated Time – Transmisión de señal desde centros terrestres o satélites. – Una o más máquinas del sistema distribuido son receptoras de señal UTC.

Algoritmo de Cristian Servidor de tiempos

Cliente petició n

tiempo

T0

I

T1

• • • •

Tiempo del manejador de interrupciones

tiempo

Adecuado para sincronización con UTC. Tiempo de transmisión del mensaje: (T1-T0)/2 Tiempo en propagar el mensaje: (T1-T0-I)/2 Valor que devuelve el servidor se incrementa en (T1-T0I)/2 • Para mejorar la precisión se pueden hacer varias mediciones y descartar cualquiera en la que T1-T0 exceda de un límite

Algoritmo de Berkeley • El servidor de tiempo realiza un muestreo periódico de todas las máquinas para pedirles el tiempo. • Calcula el tiempo promedio y le indica a todas las máquinas que avancen su reloj a la nueva hora o que disminuyan la velocidad. • Si cae servidor: selección de uno nuevo (alg. de elección) 3:00

3:00

3:00

3:00

+25

2:50

+5

-20

3:00

3:25

3:00

0

-10

3:25

2:50

+15

3:25

2:50

Protocolo de Tiempo de Red NTP (Network Time Protocol). – Aplicable a redes amplias (Internet). – La latencia/retardo de los mensajes es significativa y variable.

Objetivos: – – – –

Permitir sincronizar clientes con UTC sobre Internet. Proporcionar un servicio fiable ante fallos de conexión. Permitir resincronizaciones frecuentes. Permitir protección ante interferencias del servicio de tiempo.

Organización: – Jerarquía de servidores en diferentes estratos. – Los fallos se solventan por medio de ajustes en la jerarquía.

Causalidad Potencial En ausencia de un reloj global la relación causaefecto (tal como precede a) es una posibilidad de ordenar eventos. Relación de causalidad potencial (Lamport) – – – –

eij = evento j en el proceso i Si j < k entonces eij → eik Si ei=send(m) y ej=receive(m), entonces ei → ej La relación es transitiva.

Dos eventos son concurrentes (a || b) si no se puede deducir entre ellos una relación de causalidad potencial.

Relojes Lógicos (Algorit. Lamport) • Útiles para ordenar eventos en ausencia de un reloj común. – – – –

Cada proceso P mantiene una variable entera LCP (reloj lógico) Cuando un proceso P genera un evento, LCP=LCP+1 Cuando un proceso envía un mensaje incluye el valor de su reloj Cuando un proceso Q recibe un mensaje m con un valor t: • LCQ=max(LCQ,t)+1

• El algoritmo asegura: – Que si a → b entonces LCa < LCb – Pero LCa < LCb no implica a → b (pueden ser concurrentes)

• Relojes lógicos sólo representan una relación de orden parcial. • Orden total entre eventos si se añade el número del procesador.

Algoritmo de Lamport No sincronizado Sincronizado

+1 +1

Uso de los Relojes Lógicos La utilización de relojes lógicos (Lamport, Vectoriales o Matriciales) se aplica a: – Mensajes periódicos de sincronización. – Campo adicional en los mensajes intercambiados (piggybacked).

Por medio de relojes lógicos se pueden resolver: – Ordenación de eventos (factores de prioridad o equitatividad). – Detección de violaciones de causalidad. – Multicast causal (ordenación de mensajes).

Tema 6: Sistemas Distribuidos • Introducción

• Procesos (comunicación, sincronización, exclusión mútua y deadlock) • Diseño de los módulos del sistema - Planificación de trabajos - Manejo de memoria - Sistema de ficheros

Exclusión Mutua Mecanismo de coordinación entre varios procesos concurrentes a la hora de acceder a recursos/secciones compartidas. Las soluciones definidas para estos problemas son: – Algoritmos centralizados. – Algoritmos distribuidos. – Algoritmos basados en marcas de tiempo.

Problemática: – No existen variables compartidas – Riesgo de interbloqueos – Riesgo de inanición

Exclusión Mutua La evaluación de los algoritmos de exclusión mutua se evalúa en base a los siguientes factores: – Ancho de banda: Proporcional al número de mensajes transmitidos. – Retardo del cliente: En la ejecución de cada una de las operaciones enter()y en cada operación exit(). – Throughput del sistema: Ratio de acceso al recurso por una batería de procesos que lo solicitan. Evalúa el retardo de sincronización entre clientes. – Tolerancia a fallos: Comportamiento del algoritmo ante diferentes modalidades de fallo.

Exclusión Mutua Centralizado El algoritmo más simple: – Los clientes solicitan el acceso a un elemento de control que gestiona la cola de peticiones pendientes. – Tres mensajes: enter, exit y OK . – No cumple necesariamente la propiedad de ordenación. 0

2

1

0

2

1

OK

C Cola de Espera 1

1

2

exit

enter

enter

0

No hay respuespuesta (bloquea al cliente)

C Cola de Espera 1 2

C Cola de Espera 2

OK

Exclusión Mutua Centralizado Rendimiento: – Ancho de banda: • El acceso al recurso implica dos mensajes (aunque el recurso esté libre).

– Retardo del cliente: • enter(): El retardo de transmisión de los dos mensajes. • exit(): Con comunicación asíncrona no implica retraso en cliente.

– Throughput del sistema: • La finalización de un acceso a la región critica implica un mensaje de salida y un OK al siguiente proceso en espera.

– Tolerancia a fallos: • La caída del elemento de control es crítica (alg. de elección). • La caída de los clientes o la perdida de mensajes se puede solucionar por medio de temporizadores.

Exclusión Mutua Distribuida Algoritmos distribuido de paso de testigo: – Se distribuyen los elementos en un anillo lógico. – Se circula un token que permite el acceso a la región critica. – El token se libera al abandonar la región. – No cumple la propiedad de ordenación token

Exclusión Mutua Distribuida Rendimiento: – Ancho de banda: • El algoritmo consume ancho banda de forma continua.

– Retardo del cliente: • La entrada en la sección critica requiere de 0 a N mensajes. • La salida sólo implica un mensaje.

– Throughput del sistema: • La entrada del siguiente proceso tras la salida del que ocupa la región critica implica de 1 a N mensajes.

– Tolerancia a fallos: • Perdida del token: Detección y regeneración • Caída de un elemento del anillo: Reconfiguración del anillo.

Exclusión Mutua Relojes Lógicos Algoritmo de Ricart y Agrawala: Usa relojes lógicos y broadcast Pasos: – Un proceso que quiere entrar en sección crítica (SC) envía mensaje de solicitud a todos los procesos. – Cuando un proceso recibe un mensaje • Si receptor no está en SC ni quiere entrar envía OK al emisor • Si receptor ya está en SC no responde • Si receptor desea entrar, mira marca de tiempo del mensaje: – Si menor que marca tiempo de su mensaje de solicitud: envía OK. – En caso contrario será él el que entre.

• Cuando un proceso recibe todos (N-1) los mensajes puede entrar.

– Garantiza todas las propiedades incluida ordenación

Exclusión Mutua Relojes Lógicos 23

23

WANTED

1

2 OK

23 WANTED

3 21

– Los procesos 1 y 3 quieren acceder a la sección crítica. – Los relojes lógicos son respectivamente 23 y 21.

Exclusión Mutua Relojes Lógicos Rendimiento: – Ancho de banda: • El protocolo consume 2(N-1) mensajes. N-1 para la petición y N-1 respuestas. Si existen comunicación multicast sólo N mensajes.

– Retardo del cliente: • La entrada en la sección critica requiere de N-1 mensajes. • La salida no implica ningún mensaje.

– Throughput del sistema: • Si dos procesos compiten por el acceso a la sección critica ambos habrán recibido N-2 respuestas. El de menor reloj tendrá la respuesta del otro. Al salir éste el siguiente se indicará con sólo 1 mensaje.

– Tolerancia a fallos: • Retardo de respuesta elevado o perdida de mensajes: Se reduce por medio de mensajes NO-OK (asentimientos negativos).

Tema 6: Sistemas Distribuidos • Introducción

• Procesos (comunicación, sincronización, exclusión mútua y deadlock) • Diseño de los módulos del sistema - Planificación de trabajos - Manejo de memoria - Sistema de ficheros

Deadlock en Sistemas Distribuidos • Distinción entre boqueo por comunicación / recursos • Técnicas aplicadas: - Ignorar el problema - Prevención (Restricción al solicitar los recursos) - Eliminación (Alg-banquero; conocer R´s en avance) - Detección y recuperación Romper alguna de las condiciones clásicas: Retener y esperar, Preemption, espera circular, exclusión mutua.

Tema 6: Sistemas Distribuidos • Introducción

• Procesos (comunicación, sincronización, exclusión mútua y deadlock) • Diseño de los módulos del sistema - Planificación de trabajos - Manejo de memoria - Sistema de ficheros

Planificación de procesos en S.D. • Modelos de sistema • Asignación de procesadores Estrategias dinámicas Estrategias estáticas • Coscheduling

Modelos de sistema • Organización de los procesadores en un SD • Tres alternativas: – Conjunto de estaciones de trabajo – Pool de procesadores – Modelo híbrido

Conjunto de estaciones de trabajo • SD compuesto de estaciones de trabajo conectadas • Procesos de un usuario se ejecutan en su estación de trabajo. • Discos locales se utilizan para paginación, archivos temporales, cache de ficheros y/o ficheros locales. • Normalmente hay un servidor de ficheros

Pool de procesadores • Los usuarios utilizan terminales gráficos (p.ej. terminales X). • Existe un pool de procesadores donde se envían los procesos. • “Similar” al tiempo compartido. • Pool de procesadores → Servidor de cómputo • Asignación dinámica de procesadores: – Nuevo proceso a cualquier procesador – Usuario con más trabajo utiliza más procesadores

Modelo híbrido • • • •

Usuarios utilizan estaciones de trabajo. Existe un pool de procesadores Trabajos interactivos en las estaciones de trabajo. Trabajos no interactivos en el pool de procesadores.

Asignación de procesadores • Objetivos: – Decidir en qué procesador se debería ejecutar un proceso – Reparto y equilibrio de carga (load sharing/balancing)

• Suposiciones: – Todos los procesadores son compatibles. – La velocidad de los procesadores puede ser distinta. – Un procesador puede comunicarse con cualquier otro.

Tipos de carga • Procesos cooperantes – Interaccionan entre sí – Pertenecientes a una misma aplicación paralela – Objetivo: minimizar tiempo de ejecución de aplicación

• Procesos disjuntos – Procesos independientes – Pertenecientes a distintos usuarios – Objetivo: maximizar utilización de procesadores

Tipos de asignación • Estrategias estáticas – Determinista – Usada para procesos cooperantes – Asignación a priori a partir de características de aplicación paralela

• Estrategias dinámicas – Reparto y equilibrio de carga dinámico – Usada para procesos disjuntos – Asignación en tiempo de ejecución

Planificación de procesos en S.D. Scheduling Local

Global Dinámico

Distribuido Cooperativo Óptimo

Estático

Semidistribuido

Centralizado

No-coopera Subóptimo HEURÍSTICAS

Estrategias dinámicas • Migratorias o No migratorias – ¿Proceso puede cambiar de procesador durante su ejecución? – Migratorias: mejor equilibrio de la carga pero más complejas

• Centralizadas o Distribuidas – ¿Existe un coordinador central?

• Óptimas o Subóptimas – ¿Busca la mejor asignación o una que sea aceptable?

• Locales o Globales – ¿Tiene en cuenta estado de la máquina local o estado del sistema?

Políticas de distribución de carga • Estrategia dinámica controlada por tres políticas: • Política de transferencia: determina cuándo transferir. • Política de selección: selecciona el proceso a transferir. • Política de ubicación: selecciona el nodo al que transferir.

Política de transferencia • Generalmente, basada en umbral: – Si en nodo S carga > T unidades, S emisor de procesos – Si en nodo S carga < T unidades, S receptor de procesos

• Tipos de transferencias: – Expulsivas: se pueden transferir procesos ejecutados parcialmente. • Supone transferir el estado del proceso.

– No expulsivas: los procesos en ejecución no pueden ser transferidos.

Políticas de selección • Elegir los procesos nuevos (transferencia no expulsiva). • Seleccionar los procesos con un tiempo de transferencia mínimo (poco estado, mínimo uso de los recursos locales). • Seleccionar un proceso si su tiempo de respuesta estimado en un nodo remoto es menor que el tiempo de respuesta local.

Política de ubicación • Muestreo: consulta de otros nodos para encontrar adecuado. • Alternativas: – – – – –

Muestreo secuencial o paralelo. Selección aleatoria. Nodos más próximos. Enviar un mensaje al resto de nodos (broadcast). Basada en información recogida anteriormente.

• Tres tipos de políticas: – Iniciadas por el emisor (Push) → emisor busca receptores – Iniciadas por el receptor (Pull) → receptor solicita

Algoritmos iniciados por el emisor • Política de transferencia: umbral basado en la longitud de la cola de procesos listos. • Política de selección: procesos nuevos. • Política de ubicación. Distintas alternativas: – Elegir un nodo al azar. – Probar con un nº de nodos hasta encontrar un receptor. – Probar con un nº de nodos y elegir aquél con menos carga.

• Estabilidad: inestable con alta carga – Difícil encontrar receptores y los muestreos consumen CPU

Algoritmos iniciados por el receptor • Política de transferencia: umbral basado en la longitud de la cola de procesos listos. • Política de selección: cualquier proceso. • Política de ubicación: Ejemplo: – Muestreo aleatorio de un nº limitado de nodos hasta encontrar uno con un nivel de carga > umbral. – Si la búsqueda falla, esperar hasta que otro proceso termine o un periodo predeterminado antes de reintentar.

• Estabilidad: estable – Con altas cargas, probable que receptores encuentren emisores.

Planificación de procesos en S.D. Scheduling Local

Global Estático

Óptimo

Dinámico Subóptimo

Aproximadas

Enumerativas

Grafos

Prog.matemát.

HEURISTICAS T.Colas

Estrategias estáticas • Asignar procesos de una aplicación paralela a procesadores minimizando el tiempo de ejecución total – Debe buscar equilibrio entre paralelismo (uso de distinto procesador) y minimizar coste de comunicaciones (uso del mismo procesador)

• No solución óptima aunque muy estudiado. Dificultades en: – Estimar coste de comunicaciones – Cómo reflejar que un proceso no ejecuta igual en todos procesadores

• Distintos modelos de paralelismo dependiendo de herramienta de programación paralela utilizada • Dos modelos típicos: M d l b

d

d

i d

( b i

Modelo basado en precedencias • Programa paralelo representado como grafo acíclico – Nodo representa un proceso con tiempo de ejecución conocido – Eje indica relación de precedencia entre procesos, incluye etiqueta que muestra cantidad de datos que transfiere proceso a su sucesor

• El problema en su forma general es NP-completo • Algoritmos con complejidad polinomial: – Cuando sólo hay dos procesadores.

• En el caso general se utilizan heurísticas: – P. ej. buscar camino crítico (camino más largo en grafo) y asignar tareas implicadas al mismo procesador

• Uso de estragias migratorias:

10

10

1

Ejemplo

2

0

1

1

20

3

4

1

2 20

1

Planificador 3

1

4

30

5

36

N1

N2

10

1

5

N1

N2

5

Uso de estrategias migratorias 0

N1 1

2

2

0

N1

N2

2

Con migración

1

1 2

3 4

N2

3 2

3

Modelo basado en comunicaciones • Programa paralelo formado por procesos que se comunican • Modelado como grafo no dirigido donde: – Nodo representa proceso con necesidades de UCP y memoria – Eje incluye etiqueta que indica cantidad de datos que intercambian nodos implicados

• El problema en su forma general es NP-completo • Algoritmos con complejidad polinomial: – Cuando sólo hay dos procesadores.

• En el caso general se utilizan heurísticas: – P. ej. corte mínimo: Para P procesadores buscar P-1

Ejemplo Ν1

Ν2

Ν3

Ν1

3

2

3

3

2

2

1

8

5

6 4 3 4

2 4

1

5 2

Tráfico entre nodos: 13+17=30

Ν2

Ν3

2 2

1

3 8

5

6 4 3 4

4 1

5 2

Tráfico entre nodos: 13+15=28 Tanenbaum. “Sistemas Operativos Distribuidos” © Prentice Hall 1996

Ejecución remota de procesos • ¿Cómo ejecutar un proceso de forma remota? – Crear el mismo ambiente de trabajo: • entorno, directorio actual, etc.

– Redirigir ciertas llamadas al sistema a máquina origen: • P. ej. interacción con el terminal

• Migración (transferencia expulsiva) mucho más compleja: – “Congelar” el estado del proceso – Transferir a máquina destino – “Descongelar” el estado del proceso

• Numerosos aspectos complejos: – Redirigir mensajes y señales ¿Copiar espacio de swap o servir fallos de pág desde

Formulación de intenciones

a Objetivos: Realizar un entorno de programación distribuida sobre una NOW con una doble funcionalidad: ` Ejecución Eficiente de Aplicaciones Paralelas

` Asegurar unos buenos tiempos de ejecución y de respuesta de las aplicaciones locales

Líneas de investigación a Job Scheduling ( Coscheduling / prioridades) a Coscheduling ( Gestión integrada de la memoria, consideración de los eventos externos ) a Workload (Paralela /local). Representatividad (Aulas). a Entorno de desarrollo de aplicaciones paralelas a Space Slicing a Migración versión Linux 2.4

Diseño de la Máquina Virtual Paralela Idea Principal

Job Scheduling • Explícito ( costo) • Implícito ( send/receive ): “Los planificadores basados en esta estrategia presentan problemas, cuando las características de las aplicaciones son similares entre ellas. El problema se agrava cuando el MLP es importante.” Obliga a introducir mecanismos auxiliares de sincronización a efectos de mejorar el coscheduling (Scheduling Cooperante) eventos externos: LOCAL, NO_LOCAL, STOP, RESUME (swapping). El modo de ejecución y tiempo de las aplicaciones f(send/rec). FAIR_SHARE basado en créditos ?

GUI: Browser Netscape

Manejo y control del sistema como un SSI (portabilidad y extensión de funcionalidad sencilla) - Cluster UAB (manejo desde el exterior) - Cluster Lérida (ampliación y Administración)

Monitorización del cluster

Sistema: power, temperatura, conectividad Herramientas: MoniTo, MemTo, uso R´s, métricas

Space Slicing • Confección del estado del arte (actualizar) • Diseño e implementación de un entorno de desarrollo para probar las políticas (PBS, STORM, SLURM, etc) • Caracterización de las cargas paralelas:datos de usuario + perfiles históricos.

Migración versión Linux 2.4

¿ Filosofía adecuada?

Tema 7: DVSM y FS Distribuido •Introducción

•Introducción

• Visión general de la DSM

• Diseño

• Espectro de diseño • Modelos de consistencia • Implementación • Memoria compartida distribuida; alternativas

- interfaces (SA y Dir) - transparencia de nombres • Implementación - Uso de archivos - Semántica de archivos compartidos - Ocultamiento

DVSM: M. Compartida - Distribuida • Introducción • Visión general de la DSM • Espectro de diseño • Modelos de consistencia • Implementación • Memoria compartida distribuida; alternativas

Introducción

• Diseño h/w, implicaciones

MULTICOMPUTADOR

• Programador

MULTIPROCESADOR

Sistemas fáciles de construir y programar

Memoria Compartida - Distribuida • Introducción • Visión general de la DSM • Espectro de diseño • Modelos de consistencia • Implementación • Memoria compartida distribuida; alternativas

Visión general de la DSM Distributed shared memory

DSM appears as memory in address space of process

Process accessing DSM

Physical memory

Physical memory

Physical memory

Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 3 © Addison-Wesley Publishers 2000

MV-HD 5 .. 10 200 ms

NETRAM 10 ..30%

100 ms

RAM

50

100

M

Memoria Compartida - Distribuida • Introducción • Visión general de la DSM • Espectro de diseño • Modelos de consistencia • Implementación • Memoria compartida distribuida; alternativas

Espectro de diseño • Gran parte del trabajo de la DSM ha sido inspirado en la arquitectura de multiprocesadores. • Analizar el espectro: - Memoria en circuitos - Multiprocesadores basados en bus/anillo y con conmutador UMA (escalabilidad) - NUMA (ocultación h/w y s/w; no cache) - DSM (controlado por el S.O.)

Multiprocesadores UMA Acceso Uniforme a Memoria: Cada Pi mismo tiempo de acceso a todas y cada una de las posiciones de memoria Symetric Multi Processor

P1

P2

Pn

C1

C2A’

¿Coherencia?

CnA

Bus Común M1

M2

MkA

Puede complicarse algo para aumentar las prestaciones

Coherencia de Caches Para conseguir coherencia, básicamente hay dos políticas: P1

P2

Pi

Pn

X

X

Y

X

Cachés WriteThrough

Ac

n ó i c W* => 1 Inv. a lid a Inv

X Y

Inv. Línea 16B tua Act. Dato (1,2,4)B liz ac ión

P1

P2

Pi

Pn

P1

P2

Pi

Pn

X’

X

Y

X WriteBack X’

X X’

Y

X X’

X’ X Y

¿Mejor?

X’ X Y Y

Coherencia de Cachés (Directorios) Con decenas/cientos de procesadores, no hay bus común

C

• ¿Aplicable coherencia por husmeo? => Difusión (inviable con N grande)

M

• Si N = 36, lo normal es que no haya 35 copias en 35 cachés (2..5)

Solución =>

1

Informar (comando/mensaje) sólo a los nodos cuyas cachés contengan una copia del dato accedido (R/W)

ng 9 7 6 Ta

Directorio

1978 Censier

...

distribuido

centralizado limitados

completos 1990 Chaiken ...

encadenados

DSM basada en páginas Replication (a) Pages distributed on 4 machines (b) CPU 0 reads page 10

(c) CPU 1 reads page 10

Implementaciones

Memoria Compartida - Distribuida • Introducción • Visión general de la DSM • Espectro de diseño • Modelos de consistencia • Implementación • Memoria compartida distribuida; alternativas

Modelos de consistencia • Modelo simple 1-pag W /n-pag R ==> cuellos de botella. Si varias copias ==> Consistencia entre copias. Relajar la consistencia sin hacer insoportable la programación Cualquier lectura a una localidad de memoria X regresa el valor guardado por la operación de escritura más reciente en X.

Uniprocesador: a=1; a=2;

print (a); si < > 2 ==> ????

DSM: var x T2:

write (x)

T1: read (x) ==> send (Ma) 1ns

Máquina a Si:

Máquina b

T2 - T1= 1ns distancia (Ma & Mb) = 3 metros

Obtener read(x) antes que write(x) ¿ Razonable pedir la consistencia estricta?

Modelos de consistencia Estricta R/W instantáneamente visibles a todos los procesos • Lectura de una posición de memoria devuelve el valor guardado por la operación de escritura más reciente • Orden absoluto con respecto al tiempo de accesos a memoria • Difícil de implementar en sistemas distribuidos • Único resultado válido

Ejemplo de acceso compartido Procesador 1 x = 1; y = 1; print z

Procesador 2 z = 2; print x, y

Orden de ejecución real P1: x = 1; P2: z = 2; P1: y = 1; P2: print x,y P1: print z

• Las variables valen inicialmente 0 • Análisis de resultados dependiendo del modelo de coherencia

Consistencia secuencial • Modelo uniforme más débil (Lamport, 1979) • “Resultado equivalente a que los accesos a memoria de los procesadores se ejecutaran en algún orden secuencial apareciendo las operaciones de cada procesador en el orden especificado por su programa”. • Definición similar a la “seriabilidad” de las transacciones • Todos los procesadores ven accesos a memoria en el mismo orden que puede ser distinto del tiempo real

Coherencia secuencial en el ejemplo • Algunos resultados válidos adicionales: – P2: {x=0, y=0}; P1: {z=2} • Posible orden: z=2; print x,y; x=1; y=1; print z

– P2: {x=1, y=0}; P1: {z=2} • Posible orden: x=1; z=2; print x,y; y=1; print z Proc1 x = 1; y = 1; print z

Proc2 z = 2; print x, y

Memoria Compartida - Distribuida • Introducción • Visión general de la DSM • Espectro de diseño • Modelos de consistencia • Implementación • Memoria compartida distribuida; alternativas

Ejemplo de implementación de DSM • DSM basada en páginas con coh. secuencial e invalidación • Múltiples copias de páginas para mejorar rendimiento • Cada página tiene asociado: – Un estado: R (sólo lectura) o W (lectura/escritura) – Un propietario: el último proceso que la modificó • Página W sólo 1 copia en máquina propietaria • Página R copia en varias máquinas (1 propietaria) • Lectura: – Si tiene copia local: lee de la misma – Si no: la solicita a propietario y la marca R • Si el propietario la tenía W, la pasa a R (degradación)

Ejemplo de implementación de DSM •



Escritura: – Si propietario y W: escribe copia local – Si propietario y R: invalida copias, escribe local y marca W – Si copia local pero no propietario: • genera invalidación, se hace propietario, marca W y escribe – Si no copia local: • la solicita a propietario, genera invalidación, se hace propietario, marca W y escribe Requiere poder localizar propietario y poseedores de copias – Mediante broadcast – 1 o más “controladores” mantienen información sobre las páginas • Reparto estático dependiendo del número de la página

Diseño e implementación • Granularidad (Implementación convencional) • Estructura (Array, tipo de datos, BD) • Coherencia (secuencial) • Estrategias de reemplazo • Thrashing (migración) • Sistemas heterogéneos

Memoria Compartida - Distribuida • Introducción • Visión general de la DSM • Espectro de diseño • Modelos de consistencia • Implementación • Memoria compartida distribuida; alternativas

DSM; alternativas • DSM basada en variables compartidas: – Sólo se comparten variables marcadas como tal en programa – Compilador + entorno de ejecución encargados de gestionar accesos a estas variables – Acceso a DSM se convierte en llamada a entorno de ejecución – Ejemplos: Munin y Midway

• DSM basada en objetos: – Se comparten objetos – DSM=Colección de objetos compartidos – Acceso a datos compartidos mediante métodos

Sistema de Ficheros Distribuido • Introducción • Diseño - interfaces (SA y Dir) - Transparencia de nombres • Implementación - Uso de archivos - Semántica de archivos compartidos - Ocultamiento

Conceptos básicos • Sistema de ficheros distribuido (SFD) – Sistema de ficheros para sistema distribuido – Gestiona distintos dispositivos en diferentes nodos ofreciendo a usuarios la misma visión que un SF centralizado – Permite que usuarios compartan información de forma transparente – Misma visión desde cualquier máquina (espacio de nombres único) • Numerosos aspectos similares a SF centralizados • Algunos aspectos específicos como por ejemplo: – Traducción de nombres afecta a varios nodos – Caching afecta a múltiples nodos – Aspectos de tolerancia a fallos

Sistema de Ficheros Distribuido • Introducción • Diseño - interfaces (SA y Dir) - Transparencia de nombres • Implementación - Uso de archivos - Semántica de archivos compartidos - Ocultamiento

Interfaces y estructura Client computer

Applicat Application program program ion

Server computer •Traduce nombres de fichero a identificador interno

Directory service

•Proporciona acceso a ficheros a partir de su identificador Flat file service Client module

•Gestiona un “sistema de ficheros plano”

Dos alternativas: –Único módulo que ofrece ambos servicios (a lo UNIX) • Servidor de ficheros incluye ambas funciones (directorio es fichero especial) –Módulos independientes (p. ej. Amoeba) • Servidor de directorios y servidor de ficheros

Servicio de ficheros • Se encarga de la gestión de ficheros y del acceso a los datos • Se analizan los siguientes aspectos: – – – –

Definición de fichero Atributos Modelo de acceso (ACL) Servicios f(modelo: carga/descarga Vs remoto)

Modelo carga/descarga Vs remoto

(a) Modelo de carga/descarga (b) Modelo de acceso remoto

Servicio de directorio •

Proporciona operaciones (crear, eliminar, mover, etc) y define una manera de generar los nombres de archivos y directorios). • Árboles y grafos de especial importancia (directorios huérfanos)

Visiones diferentes del FS (ficheros con diferentes rutas, difícil programación)

Sistema de Ficheros Distribuido • Introducción • Diseño - interfaces (SA y Dir) - Transparencia de nombres • Implementación - Uso de archivos - Semántica de archivos compartidos - Ocultamiento

Transparencia de nombres Proporcionar transparencia respecto a la posición: – Nombre de fichero no permite saber donde está almacenado (libre de moverse por la red /servidor1/dir1/dir2/x) – Nombre no debe incluir identificación del nodo donde está si hay movimiento /servidor2/dir1/dir2/x => espacio de nombres común en todas las máquinas)

Sistema de Ficheros Distribuido • Introducción • Diseño - interfaces (SA y Dir) - Transparencia de nombres • Implementación - Uso de archivos - Semántica de archivos compartidos - Ocultamiento

Servicio de ficheros • Se encarga de la gestión de ficheros y del acceso a los datos • Se analizan los siguientes aspectos: – – – – –

Uso de los ficheros Semántica de utilización concurrente Modelo de acceso Caching Servidor con o sin estado

Sistema de Ficheros Distribuido • Introducción • Diseño - interfaces (SA y Dir) - Transparencia de nombres • Implementación - Uso de archivos - Semántica de archivos compartidos - Ocultamiento

Uso de ficheros • La forma de usar los ficheros influye en el diseño de los SFD • Estadíticas de uso en entornos UNIX de propósito general: – – – – –

Mayoría de los ficheros pequeños (