Faculdade de Informtica PUCRS Linux em Mquinas Paralelas

  • Slides: 35
Download presentation
Faculdade de Informática - PUCRS Linux em Máquinas Paralelas Prof. Avelino Francisco Zorzo zorzo@inf.

Faculdade de Informática - PUCRS Linux em Máquinas Paralelas Prof. Avelino Francisco Zorzo zorzo@inf. pucrs. br Sistemas Distribuídos

Conteúdo Avelino F. Zorzo Faculdade de Informática - PUCRS Hardware - SMP e NUMA

Conteúdo Avelino F. Zorzo Faculdade de Informática - PUCRS Hardware - SMP e NUMA Linux 2. 6 Escalonador O(1) Conclusão 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 2

Avelino F. Zorzo Faculdade de Informática - PUCRS SMP e NUMA 5 FISL –

Avelino F. Zorzo Faculdade de Informática - PUCRS SMP e NUMA 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 3

Hardware - SISD: single instruction single data - computadores com um processador - SIMD:

Hardware - 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 Faculdade de Informática - PUCRS - Taxonomia de hardware (Flynn 1972) 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 4

Classe SISD Avelino F. Zorzo Faculdade de Informática - PUCRS - Single Instruction Single

Classe SISD Avelino F. Zorzo Faculdade de Informática - PUCRS - Single Instruction Single Data - Um único fluxo de instruções - Um único fluxo de dados - Arquiteturas tradicionais 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 5

- Multiple Instruction SIngle Data - Múltiplos fluxos de instruções - Um único fluxo

- Multiple Instruction SIngle Data - Múltiplos fluxos de instruções - Um único fluxo de dados - Ainda sem implementação Avelino F. Zorzo Faculdade de Informática - PUCRS Classe MISD 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 6

- Single Instruction Multiple Data - Um único fluxo de instruções - Múltiplos fluxos

- Single Instruction Multiple Data - Um único fluxo de instruções - Múltiplos fluxos de dados - Execução síncrona - Arquiteturas Array Avelino F. Zorzo Faculdade de Informática - PUCRS Classe SIMD 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 7

- Multiple Instruction Multiple Data - Múltiplos fluxos de instruções - Múltiplos fluxos de

- 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 Faculdade de Informática - PUCRS Classe MIMD 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 8

MIMD Computadores Paralelos e Distribuídos Multiprocessadores (memória compartilhada Avelino F. Zorzo Faculdade de Informática

MIMD Computadores Paralelos e Distribuídos Multiprocessadores (memória compartilhada Avelino F. Zorzo Faculdade de Informática - PUCRS Fortemente acoplado Barramento Sequent, Encore Fracamente acoplado Multicomputadores (memória privada) Switched Barramento Ultracomputer, RP 3 Estações de Trabalho 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. Switched Transputer, hypercube 9

MIMD CPU CPU cache Memória Avelino F. Zorzo Faculdade de Informática - PUCRS -

MIMD CPU CPU cache Memória Avelino F. Zorzo Faculdade de Informática - PUCRS - Multiprocessadores baseado em barramento 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 10

MIMD - Multiprocessadores baseado em switch Memórias M M M CPUs C C M

MIMD - Multiprocessadores baseado em switch Memórias M M M CPUs C C M C M C Avelino F. Zorzo Faculdade de Informática - PUCRS M crossbar switch 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. omega switching network 11

MIMD Memória Local CPU CPU Avelino F. Zorzo Faculdade de Informática - PUCRS -

MIMD Memória Local CPU CPU Avelino F. Zorzo Faculdade de Informática - PUCRS - Multicomputadores em barramento 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 12

MIMD hypercube Avelino F. Zorzo Faculdade de Informática - PUCRS - Multicomputadores com switch

MIMD hypercube Avelino F. Zorzo Faculdade de Informática - PUCRS - Multicomputadores com switch grid 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 13

Tipo de Acesso à Memória Avelino F. Zorzo Faculdade de Informática - PUCRS -

Tipo de Acesso à Memória Avelino F. Zorzo Faculdade de Informática - PUCRS - Multiprocessadores - SMP - NUMA 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 14

- SMP - Symetric Multi- Processing - Memória centralizada (mesma distância de todos os

- 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 Faculdade de Informática - PUCRS Tipo de Acesso à Memória 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 15

Tipo de Acesso à Memória Avelino F. Zorzo Faculdade de Informática - PUCRS -

Tipo de Acesso à Memória Avelino F. Zorzo Faculdade de Informática - PUCRS - 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 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 16

Tipo de Acesso à Memória Avelino F. Zorzo Faculdade de Informática - PUCRS -

Tipo de Acesso à Memória Avelino F. Zorzo Faculdade de Informática - PUCRS - NORMA - non-remote memory access - Apenas acesso local à memória - Clusters/Grids 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 17

Avelino F. Zorzo Faculdade de Informática - PUCRS Linux 2. 6 5 FISL –

Avelino F. Zorzo Faculdade de Informática - PUCRS Linux 2. 6 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 18

Linux 2. 6 - 1. 0 em 1994 suporte para máquinas com um só

Linux 2. 6 - 1. 0 em 1994 suporte para máquinas com um só processador - 1. 2 1995 com suporte para diferentes arquiteturas (Alpha, Sparc, . . . ) - 2. 0 1996 com suporte para máquinas SMP - 2. 5 escalonador O(1) e suporte para máquinas NUMA - 2. 6 2003 melhorias no suporte para máquinas NUMA - Direções Avelino F. Zorzo Faculdade de Informática - PUCRS - História - Em sistemas embarcados - Hyperthreading - Em máquinas SMP/NUMA 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 19

- Linux para equipamentos de redes - Linux para micro-controladores - Diversas limitações de

- 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 Faculdade de Informática - PUCRS Linux para sistemas embarcados 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 20

- Hyperthreading - possibilidade de mascarar um processador como sendo dois ou mais processadores

- 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 Faculdade de Informática - PUCRS Linux com hyperthreading 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 21

- Linux para máquinas SMP tem um conjunto de processadores acessando um único banco

- 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 Faculdade de Informática - PUCRS Linux para máquinas SMP ou NUMA 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 22

Linux com NUMA Memória Local Memória Local CPU CPU CPU Memória Local Avelino F.

Linux com NUMA Memória Local Memória Local CPU CPU CPU Memória Local Avelino F. Zorzo Faculdade de Informática - PUCRS - Uma API foi desenvolvida para indicar a topologia da máquina que está sendo utilizada CPU Memória Local CPU 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. Memória Local CPU CPU 23

Linux com NUMA . . . 0 -100 500 -1000 3000 -1000 Memória Local

Linux com NUMA . . . 0 -100 500 -1000 3000 -1000 Memória Local Memória Local CPU CPU CPU Avelino F. Zorzo Faculdade de Informática - PUCRS - Espaços entre os blocos de memórias - Kernel tem que ser capaz de lidar com memória nãocontígua 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 24

- Com diversos processadores, o escalonador do Linux pode escolher diversos processos para executar

- 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 Faculdade de Informática - PUCRS Linux para SMP ou NUMA 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 25

Avelino F. Zorzo Faculdade de Informática - PUCRS Escalonador O(1) 5 FISL – Porto

Avelino F. Zorzo Faculdade de Informática - PUCRS Escalonador O(1) 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 26

Avelino F. Zorzo Faculdade de Informática - PUCRS Escalonador O(1) - Escalonamento: - Um

Avelino F. Zorzo Faculdade de Informática - PUCRS 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) 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 27

Escalonador O(1) Avelino F. Zorzo Faculdade de Informática - PUCRS - Algoritmo de escalonamento

Escalonador O(1) Avelino F. Zorzo Faculdade de Informática - PUCRS - 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 5 FISL Porto Alegre, RS, Brasilrodam) – 04 de junho de 2004. 28

Escalonador O(1) Avelino F. Zorzo Faculdade de Informática - PUCRS - Fila de processos

Escalonador O(1) Avelino F. Zorzo Faculdade de Informática - PUCRS - 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; . . . } 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 29

Avelino F. Zorzo Faculdade de Informática - PUCRS Escalonador O(1) - O(1) é atingido

Avelino F. Zorzo Faculdade de Informática - PUCRS 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 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 30

- Balanceamento de carga - quando fila vazia - a cada milisegundo (sistema ocioso)

- 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 Avelino F. Zorzo Faculdade de Informática - PUCRS Escalonador O(1) - 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– 04 com asde filas 5 FISL Porto Alegre, RS, Brasil de junho 2004. balanceadas 31

- Preempção de processos (TASK_RUNNING) - Fatia de tempo dinâmica (recalcular) - Recalcular prioridade

- 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 Faculdade de Informática - PUCRS Escalonador O(1) 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 32

- Escalonador para SMP - executar processo no mesmo processador - Escalonador 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 Azus. A Itanium) Avelino F. Zorzo Faculdade de Informática - PUCRS Escalonador O(1) para NUMA 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 33

Avelino F. Zorzo Faculdade de Informática - PUCRS Conclusão 5 FISL – Porto Alegre,

Avelino F. Zorzo Faculdade de Informática - PUCRS Conclusão 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 34

Avelino F. Zorzo Faculdade de Informática - PUCRS Conclusão - Quantos processadores na máquina?

Avelino F. Zorzo Faculdade de Informática - PUCRS 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: www. gelato. org - Cooperação com HP Brasil - Clusters: www. cpad. pucrs. br - Escalabilidade do sistema Linux: www. inf. pucrs. br/~peso 5 FISL – Porto Alegre, RS, Brasil – 04 de junho de 2004. 35