A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Linux em Máquinas Paralelas

Apresentações semelhantes


Apresentação em tema: "Linux em Máquinas Paralelas"— Transcrição da apresentação:

1 Linux em Máquinas Paralelas
Prof. Avelino Francisco Zorzo

2 Conteúdo Hardware - SMP e NUMA Linux 2.6 Escalonador O(1) Conclusão
Avelino F. Zorzo

3 SMP e NUMA Avelino F. Zorzo

4 Hardware - Taxonomia de hardware (Flynn 1972)
- SISD: single instruction single data - computadores com um processador - SIMD: single instruction multiple data - array de processadores (alguns supercomputadores) - MISD: multiple instruction single data - não existe (?) - MIMD: multiple instruction multiple data - um conjunto de processadores independentes, cada um com seu contador de programa, conjunto de instruções e dados Avelino F. Zorzo

5 Classe SISD - Single Instruction Single Data
- Um único fluxo de instruções - Um único fluxo de dados - Arquiteturas tradicionais Avelino F. Zorzo

6 Classe MISD - Multiple Instruction SIngle Data
- Múltiplos fluxos de instruções - Um único fluxo de dados - Ainda sem implementação Avelino F. Zorzo

7 Classe SIMD - Single Instruction Multiple Data
- Um único fluxo de instruções - Múltiplos fluxos de dados - Execução síncrona - Arquiteturas Array Avelino F. Zorzo

8 Classe MIMD - Multiple Instruction Multiple Data
- Múltiplos fluxos de instruções - Múltiplos fluxos de dados - Vários programas sobre vários dados - Arquiteturas Paralelas Modernas Avelino F. Zorzo

9 (memória compartilhada
MIMD MIMD Computadores Paralelos e Distribuídos Fortemente acoplado Fracamente acoplado Multiprocessadores (memória compartilhada Multicomputadores (memória privada) Barramento Switched Avelino F. Zorzo Barramento Switched Estações de Trabalho Transputer, hypercube Sequent, Encore Ultracomputer, RP3

10 MIMD - Multiprocessadores baseado em barramento cache CPU cache CPU
Memória Avelino F. Zorzo

11 omega switching network
MIMD - Multiprocessadores baseado em switch C M Memórias CPUs M C omega switching network Avelino F. Zorzo crossbar switch

12 MIMD - Multicomputadores em barramento Memória Local CPU
Avelino F. Zorzo

13 MIMD - Multicomputadores com switch hypercube Avelino F. Zorzo grid

14 Tipo de Acesso à Memória
- Multiprocessadores - SMP - NUMA Avelino F. Zorzo

15 Tipo de Acesso à Memória
- SMP - Symetric Multi- Processing - Memória centralizada (mesma distância de todos os processadores) - Custo único de acesso - Preciso tratar coerência das caches Avelino F. Zorzo

16 Tipo de Acesso à Memória
- NUMA - Non Uniform Memory Access - Único espaço de endereçamento - Memória distribuída (distâncias diferentes) - Custo não uniforme de acesso à memória Avelino F. Zorzo

17 Tipo de Acesso à Memória
- NORMA - non-remote memory access - Apenas acesso local à memória - Clusters/Grids Avelino F. Zorzo

18 Linux 2.6 Avelino F. Zorzo

19 Linux 2.6 - História - Direções
- 1.0 em 1994 suporte para máquinas com um só processador com suporte para diferentes arquiteturas (Alpha, Sparc, ...) com suporte para máquinas SMP - 2.5 escalonador O(1) e suporte para máquinas NUMA melhorias no suporte para máquinas NUMA - Direções - Em sistemas embarcados - Hyperthreading - Em máquinas SMP/NUMA Avelino F. Zorzo

20 Linux para sistemas embarcados
- Linux para equipamentos de redes - Linux para micro-controladores - Diversas limitações de hardware - Exemplo, sem MMU (memory management unit) - Pode ser um problema para sistemas multi-usuários, mas não para PDAs ou dispositivos dedicados Avelino F. Zorzo

21 Linux com hyperthreading
- possibilidade de mascarar um processador como sendo dois ou mais processadores (Pentium IV) - Melhora performance - Complica o escalonamento de processos - Linux passa a ter a noção de processador virtual Avelino F. Zorzo

22 Linux para máquinas SMP ou NUMA
- Linux para máquinas SMP tem um conjunto de processadores acessando um único banco de memória - Aumento no número de processadores causa contenção no acesso à memória - Em máquinas NUMA este problema é resolvido, pois para alguns processadores a memória está mais perto do que para outros - Linux foi modificado para suportar este tipo de arquitetura Avelino F. Zorzo

23 Linux com NUMA - Uma API foi desenvolvida para indicar a topologia da máquina que está sendo utilizada CPU Memória Local CPU Memória Local CPU Memória Local Memória Local CPU Memória Local CPU Memória Local CPU Avelino F. Zorzo CPU Memória Local CPU Memória Local

24 Linux com NUMA - Espaços entre os blocos de memórias
- Kernel tem que ser capaz de lidar com memória não-contígua ... 0-100 CPU Memória Local Avelino F. Zorzo

25 Linux para SMP ou NUMA - Com diversos processadores, o escalonador do Linux pode escolher diversos processos para executar ao mesmo tempo - Até a versão 2.4 o escalonador colocava todos os processos em uma única fila de processos - A partir da versão 2.5 foi incluído um novo escalonador no kernel do Linux: O(1) Avelino F. Zorzo

26 Escalonador O(1) Avelino F. Zorzo

27 Escalonador O(1) - Escalonamento:
- Um único processador: o escalonador é responsável por dar a impressão que diversos processos executam ao mesmo tempo - Processos executando ou esperando para executar - Escolher o próximo processo que irá executar é fundamental - Linux possui escalonamento preemptivo (fatia de tempo) - Termos comuns: - IO-bound vs. CPU-bound - Prioridade de processo (>IO-bound) (<CPU-bound) - Fatia de tempo (<IO-bound) (>CPU-bound) Avelino F. Zorzo

28 Escalonador O(1) - Algoritmo de escalonamento encontra-se em kernel/sched.c - Nova versão a partir da versão 2.5 - Objetivos: - implementar um algoritmo O(1): terminar em tempo constante independente do número de processos - escalabilidade em máquinas SMP: filas individuais - melhorar afinidade de CPU - migrar processos de uma fila para outra: balanceamento - escalonar tarefas interativas imediatamente - justo (todos rodam) Avelino F. Zorzo

29 Escalonador O(1) - Fila de processos (uma para cada processador - locking) struct runqueue { spinlock_t lock; unsigned long nr_running; unsigned long nr_switches; unsigned long expired_timestamp; ... struct task_struct *curr; struct prio_array *active; struct prio_array *expired; } Avelino F. Zorzo

30 Escalonador O(1) - O(1) é atingido através dos arrays de prioridade
- lista de processos aptos a serem executados por nível de prioridade - bitmap de prioridade - expired vs. active - bitmap é utilizado para descobrir qual processo de mais alta prioridade deve ser executado - bitmap é de tamanho fixo - busca de qual fila se encontra o processo é constante Avelino F. Zorzo

31 Escalonador O(1) - Balanceamento de carga - quando fila vazia
- a cada milisegundo (sistema ocioso) - a cada 200 milisegundos - Sistemas com um único processador, balanceamento não usado - Como funciona: - encontra a fila mais carregada - de qual array retira um processo (expired array) - procura o processo de mais alta prioridade - verifica se processo não está executando, não tem afinidade de CPU (sched_setaffinity()), não está cache hot - repete até ficar com as filas balanceadas Avelino F. Zorzo

32 Escalonador O(1) - Preempção de processos (TASK_RUNNING)
- Fatia de tempo dinâmica (recalcular) - Recalcular prioridade dependendo do uso do processador ou de IO - Chamadas de sistema (exemplos): - nice()- prioridade - sched_rr_get_interval() - sched_setaffinity() Avelino F. Zorzo

33 Escalonador O(1) para NUMA
- Escalonador para SMP - executar processo no mesmo processador - Escalonador para NUMA - executar no mesmo nó - exemplo, executar um programa em um processador longe do nó onde ele se encontra pode aumentar cerca de 30% no tempo de execução (NEC AzusA Itanium) Avelino F. Zorzo

34 Conclusão Avelino F. Zorzo

35 Conclusão - Quantos processadores na máquina? - SMP ou NUMA?
- Quais as vantagens de usar NUMA? - Alternativas a NUMA? Clusters? - Fabricantes de máquinas NUMA: HP, IBM, Compaq, SGI - Escalabilidade do Linux nestas máquinas? - Mais informações: - Cooperação com HP Brasil - Clusters: - Escalabilidade do sistema Linux: Avelino F. Zorzo


Carregar ppt "Linux em Máquinas Paralelas"

Apresentações semelhantes


Anúncios Google