View
22
Download
0
Category
Preview:
Citation preview
Prof. Luiz Fernando Bittencourt IC - UNICAMP
MC714Sistemas Distribuídos2° semestre, 2018
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Introdução- sistemasdistribuídos• 1. Coleção de entidades independentes que colaboram para
resolver um problema que não poderia ser resolvido individualmente (Kshemkalyani e Singhal).
• 2. Sistema onde componentes de hardware ou software localizados em computadores em rede comunicam-se e coordenam suas ações através somente de troca de mensagens (Couloris, Dollimore e Kindberg).
• 3. Um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente(Tanenbaum e Van Steen).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Caracterização– sistemasdistribuídos• Usuário só descobre que está usando um sistema distribuído
quando alguma falha impede de usar alguma aplicação (Lamport).
• Coleção de computadores que não compartilham memória ou relógio físico comum, que se comunicam por mensagenssobre uma rede de comunicação, e cada computador possui sua própria memória e executa seu próprio sistema operacional. Tipicamente são semi-autônomos e fracamente acoplados enquanto cooperam para resolver um problema coletivamente (Tanenbaum / Van Steen).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Características• Sem relógio físico comum• Introduz a noção de distribuição, dando origem à
assincronia inerente entre processadores.
• Sem memória compartilhada• Requer troca de mensagens para comunicação.• Deve-se notar que pode fornecer abstração de um
espaço de endereçamento comum através da abstração de memória compartilhada distribuída.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemasparalelos-classificação• Sistemas multiprocessados• Multicomputadores• Processadores vetoriais
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemas paralelos
Computação distribuída Computação paralelaMulticomputadores
Memória compartilhadaNUMA
UMAProcessadores vetoriais
Switch centralizado
Switch decentralizadoBus
Troca de mensagens Espaço de end. único
• Tarefa: achar inconsistências na figura acima em relação aos slides anteriores.• Considere dois níveis abaixo. Análise pode ser diferente para cada um deles?
• Programação -> memória compartilhada ou troca de mensagens?• Arquitetura -> como é a disposição física dos componentes?
Sistemas multiprocessados
Exercício
Relógio físico comum
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Caracterizaçãodesistemasparalelos
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Caracterizaçãodesistemasparalelos• Distinção/caracterização é importante para projeto de
algoritmos.• Considerar latências• Muito acesso aos mesmos dados, muito acesso a dados locais e
pouco acesso a dados distribuídos, etc.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Caracterizaçãodesistemasparalelos• Uso primário de sistemas paralelos: maior vazão através da
divisão da carga entre os processadores.
• Tarefas que podem ser melhor aceleradas são as que podem ser particionadas em subtarefas com pouca comunicação.• Ex.:Muitas operações sobre vetores e matrizes, comuns em
aplicações científicas.
• Máquinas paralelas foram objeto de pesquisa teórica e de sistemas em 1980, entretanto não se provaram economicamente viáveis na época.• Poucas aplicações populares tiravam vantagem de paralelismo.• Aumento da capacidade de processamento de PCs.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Taxonomia• Processamento (Flynn):• SISD, MISD, SIMD, MIMD
• Programação• Memória compartilhada
• Troca de mensagens
• PRAM – Parallel Random Access Machine
• LogP vs. PRAM
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Taxonomia– Flynn• Quatro “modos” de processamento classificando:
• Como é o processamento de instruções
• Quais são os dados de entrada de cada processador
• Single Instruction, Single Data – SISD
• Single Instruction, Multiple Data – SIMD
• Multiple Instruction, Single Data – MISD
• Multiple Instruction, Multiple Data – MIMD
Prof. Luiz Fernando Bittencourt IC - UNICAMP
SISD• Single instruction stream, single data stream• Modo “convencional” no paradigma de Von Neumann• Uma CPU• Uma unidade de memória• Conectados por bus• Fig 9
Prof. Luiz Fernando Bittencourt IC - UNICAMP
SIMD• Single instruction stream, multiple data stream.• Processamento: múltiplos processadores homogêneos.• Mesma instrução.• Itens de dados distintos.• Processamento de arrays e matrizes.• Co-processamento (MMX, SSE).• Fig 10
Prof. Luiz Fernando Bittencourt IC - UNICAMP
MISD• Multiple instruction stream, single data stream.• Operações diferentes• Mesmo dado• Fig 11
Prof. Luiz Fernando Bittencourt IC - UNICAMP
MIMD• Multiple instruction stream, multiple data stream.• Instruções diferentes.• Dados diferentes.• Modo de operação de sistemas distribuídos e paralelos em
geral.• Sem relógio comum.• Fig 12
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Trocademensagem,memóriacompartilhada,PRAM,LogP
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Memóriacompartilhada• Paradigmas de programação para sistemas paralelos tem
uma forte correspondência com políticas de acesso à memória em multiprocessadores.
• Diferença fundamental: uso de memória compartilhada ou programação usando troca de mensagens.
• Memória compartilhada: cada processador tem acesso total à memória compartilhada; comunicação entre processos se dá através da memória (acesso concorrente necessita sincronização explícita).
• Troca de mensagens: comunicação entre processadores feita de forma explícita através de comandos send e receive.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Memóriacompartilhada• Tem espaço de endereçamento comum no sistema.• Comunicação através de variáveis compartilhadas.• Variáveis de controle para sincronização entre processos (p.ex.
semáforos e monitores).• Paradigma de programação (memória compartilhada ou troca de
mensagem) nem sempre corresponde à organização de memória do sistema alvo.• Troca de mensagem pode ser usada tanto em arquiteturas de memória
compartilhada quanto de troca de mensagens.• Em memória compartilhada, uma troca de mensagem pode ser
implementada como uma simples cópia de memória.• Memória compartilhada distribuída pode ser emulada através de uma
camada de software adicional em arquitetura de troca de mensagens.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
ModelosPRAMe LogP• Modelos para projeto e análise de complexidade de
algoritmos paralelos.• Descrever/projetar algoritmos independente da máquina
utilizada• Modelos que abstraem detalhes• Foco em aspectos importantes • Esconde detalhes “desnecessários”
• Modelos podem ser simulados
Prof. Luiz Fernando Bittencourt IC - UNICAMP
ModelosPRAMe LogP• PRAM – Parallel Random Access Machine
• Máquina ideal com memória centralizada e compartilhada, processadores síncronos.
• Acesso a uma célula: admite modelar acesso exclusivo ou concorrente.
• Células diferentes podem ser acessadas concorrentemente.
• Simples, porém não considera custos de comunicação entre processadores.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
ModelosPRAMe LogP• Modelo PRAM irreal, especialmente em sistemas distribuídos,
devido à suposição de comunicação sem custo entre processadores.
• LogP• Considera custo de comunicação entre processadores.• L: limite superior no atraso em uma troca de mensagem.• o: overhead – tempo que um processador gasta enviando ou
recebendo uma mensagem, durante o qual não efetua outra operação.
• g: Gap – tempo mínimo entre transmissões ou recepções consecutivas de mensagens (1/BW).
• Limita número de mensagens simultâneas a• Modelo assíncrono.• Fig 13 + exemplo
⇠L
g
⇡
Prof. Luiz Fernando Bittencourt IC - UNICAMP
ModelosPRAMe LogP• Sugestão de melhoria no desempenho do exemplo?
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Acoplamento,paralelismo,concorrênciaegranularidade
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Acoplamento• Grau de acoplamento (hardware ou software):
interdependência e “amarração” e/ou homogeneidade entre módulos.• Fortemente acoplados (SIMD, MISD / relógio comum)
ou fracamente acoplados.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Acoplamento• Ex MIMD:• Multiprocessadores fortemente acoplados (com memória
compartilhada Uniform Memory Access). Bus (Sequent, Encore) ou switch (NYU)
• Multiprocessadores/computadores fortemente acoplados (com memória compartilhada Non-Uniform Memory Access – SGI Origin2000, Sun Ultra HPC – ou troca de mensagens – hipercubo, torus).
• Multicomputadores (sem memória compartilhada ou relógio comum) fracamente acoplados fisicamente próximos. Bus (NOW + LAN ou Myrinet), ou usando uma rede genérica, processadores podem ser heterogêneos. Sistema distribuído (sem memória compartilhada ou relógio comum) com característica de sistema paralelo (processadores próximos). Abordagens diferentes de redes de longa distância.
• Multicomputadores fracamente acoplados, fisicamente distantes. Noção convencional de sistemas distribuídos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismo/speedup emumsistemaespecífico• Speedup relativo de um programa em uma dada
máquina específica.• Depende do número de processadores e
mapeamento do código nesses processadores.• Razão entre o tempo de execução T(1) em um
único processador e tempo T(n) com nprocessadores.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismoemumprogramaparalelo/distribuído• Medida agregada da porcentagem de tempo que todos os
processadores estão executando instruções de CPU ao invés de aguardar comunicação, seja por memória compartilhada ou troca de mensagens.• Se a medida agregada é somente em função do código,
paralelismo é independente de arquitetura.• Caso contrário, definição de paralelismo se assemelha à de
speedup.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Concorrênciadeumprograma• Termo mais amplo• Usado no contexto de sistemas distribuídos• Razão entre o número de operações locais (sem
comunicação / memória compartilhada) e o número total de operações.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Paralelismo: condição que aparece quando pelo menos duas
threads estão executando simultaneamente.
• Concorrência: condição existente quando pelo menos duas threads estão progredindo.
• Paralelismo: programação para execução de computação simultânea (possivelmente relacionada).
• Concorrência: programação como composição de processos (no termo amplo) executando independentemente.
• Paralelismo: quando tarefas executam ao mesmo tempo.
• Concorrência: quando tarefas podem começar, executar, e terminar em intervalos de tempo sobrepostos. Não significa necessariamente que executarão ao mesmo tempo (e.g., multitasking em processadores de núcleo único).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Problema: mover uma pilha de manuais de linguagens obsoletas
para uma fornalha.
• Apenas 1 roedor demora muito.
• http://concur.rspace.googlecode.com/hg/talk/concur.html
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Mais roedores.
• Não ajuda, precisamos de mais carrinhos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Mais roedores e mais carrinhos.
• Mais rápido, mas há gargalos na pilha e na fornalha.• Necessidade de sincronizar os roedores: uma mensagem
(comunicação entre roedores) pode resolver.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Dobrar tudo
• Remover gargalo, tornando-os independentes.• Consome entrada duas vezes mais rápido.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Projeto não é automaticamente paralelo.
• E se somente um roedor move-se em um dado instante de tempo?• Continua sendo concorrente (i.e., o projeto), mas não paralelo.
• Entretanto, é automaticamente paralelizável.
• Essa composição concorrente habilita outros modelos.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Outro projeto.
• Três roedores em ação, mas provavelmente com atrasos.• Cada roedores é um procedimento independente, mais a
coordenação (comunicação).
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência
• Adicionar novo roedor para carregar os carrinhos vazios.• Organizando tudo corretamente (não trivial), é quatro vezes
mais rápido que o projeto original de 1 roedor.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Quatro procedimentos distintos:• Carregar manuais no carrinho• Mover carrinho até a fornalha• Descarregar carrinho na fornalha• Retornar o carrinho vazio
• Diferentes projetos concorrentes permitem diferentes maneiras de paralelização.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Mais paralelização:
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Ou nenhuma paralelização (se cada um trabalha em determinado
intervalo de tempo diferente dos outros), mas continua sendo uma solução concorrente.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Outro projeto• Pilha adicional• 100 pilhas: melhora?
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Paralelizando da maneira usual• Executar mais procedimentos concorrentes para aumentar vazão
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Ou ainda...
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Usando todas as técnicas: 16 geomídeos trabalhando.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Paralelismovs.Concorrência• Existem muitas formas de quebrar um processo em pedaços
menores: projeto concorrente.• Paralelização pode ser implementada de forma que sua
corretude é “fácil”.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Granularidadedeumprograma• Razão entre quantidade de computação e quantidade de
comunicação do programa paralelo/concorrente.
• Granularidade alta (baixa): relativamente mais (menos) instruções produtivas de CPU comparadas ao número de vezes que os processadores comunicam-se.
• Baixa granularidade: se encaixa melhor em sistemas fortemente acoplados.
• Latência pode degradar vazão.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Sistemasdetrocademensagemversussistemasdememóriacompartilhada
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Trocademensagensememória compartilhada• Sistemas de memória compartilhada: espaço de endereço
comum compartilhado no sistema.• Comunicação se dá através de variáveis compartilhadas• Variáveis de controle para sincronização entre processadores
(semáforos, monitores).
• Sistemas de multicomputadores que não têm espaço de endereçamento comum fornecido pela arquitetura/hardware necessariamente comunicam-se por troca de mensagens.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Trocademensagensememória compartilhada• Conceitualmente mais fácil programar/depurar memória
compartilhada que troca de mensagens.• A abstração chamada “memória compartilhada” é algumas
vezes utilizada para simular um espaço de endereçamento comum.• Em sistema distribuído: memória compartilhada distribuída.• Implementá-la tem certo custo, mas simplifica tarefa de
programação.• Comunicação por troca de mensagem pode ser simulada por
comunicação via memória compartilhada (e vice-versa).• Os dois paradigmas são equivalentes.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
TMàMC• Emular troca de mensagem em sistema de memória
compartilhada (TM à MC).• Espaço de endereçamento compartilhado pode ser
particionado em conjuntos disjuntos, com uma parte para cada processador.• Operações send e receive podem ser implementadas pela
escrita e leitura do espaço de endereçamento do destinatário/remetente.• Especificamente, um espaço separado pode ser reservado
como “caixa de correio”.• Uma troca de mensagem Pi-Pj pode ser emulada por uma
escrita de Pi na caixa de correio, e então uma leitura de Pj.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
TMàMC• No caso mais simples, assume-se que essas caixas de
correio têm tamanho ilimitado.• As operação de escrita/leitura precisam ser controladas
utilizando primitivas de sincronização para informar destinatário/remetente após o envio/recebimento dos dados.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
MCàTM• Emular memória compartilhada em sistema de troca de
mensagem (MC à TM).• Envolve o uso de operações de send e receive para realizar
operações de escrita e leitura.• Cada local compartilhado pode ser modelado como um
processo separado.• A escrita em um local compartilhado é emulada pelo envio
de uma mensagem de atualização para o processo dono daquele espaço.• A leitura de um local compartilhado é emulada pelo envio
de uma mensagem de query para o dono do processo.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
MCàTM• Acessar memória de outro processador é caro (requer
send/receive).
• Emular memória compartilhada pode ser atraente do
ponto de vista do programador, mas deve ser considerado
que é apenas uma abstração em sistemas distribuídos.
• Latências envolvidas nas operações de leitura/escrita
podem ser altas mesmo usando emulação de memória
compartilhada, pois, por baixo dos panos, ocorre
comunicação através de uma rede.
Prof. Luiz Fernando Bittencourt IC - UNICAMP
Trocademensagensememóriacompartilhada• Aplicações podem combinar memória compartilhada e troca de
mensagens.• Em um multicomputador MIMD, cada “processador” pode ser
por si só um sistema multiprocessado fortemente acoplado com memória compartilhada.• No sistema multiprocessado, processadores comunicam-se via
memória compartilhada.• No sistema de multicomputadores, comunicam-se via troca de
mensagens.
• Sistemas de troca de mensagem são mais comuns e mais adequados para sistemas distribuídos amplos, e portanto mais extensivamente estudados em sistemas distribuídos.
Recommended