STACKPAR: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha Hugo Henrique Cassettari Edson Toshimi Midorikawa EPUSP - Escola Politécnica da Universidade de São Paulo PCS - Departamento de Engenharia de Computação e Sistemas Digitais Objetivo • Viabilizar a execução paralela de simulações de sistemas de memória, reduzindo assim o alto tempo despendido com essa tarefa IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Escopo • Algoritmos de Substituição de Páginas – Gerenciamento de Memória – Paginação • Algoritmos de Pilha – LRU Stack – ÓTIMO Stack • Programação Paralela – Multiprocessamento – Memória Compartilhada IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Algoritmos de Substituição de Páginas • Estratégia utilizada pelo Sistema Operacional para retirar uma página da memória, quando necessário; • Procura estimar, com base em algum critério, que página levará mais tempo para ser novamente acessada; • Exemplos: Ótimo, LRU, FIFO, NRU, MRU, WS, PFF, ... IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Algoritmo Ótimo • Algoritmo teórico, impossível de ser implementado na prática; • “Lê” o futuro e sabe que página deve ser retirada da memória principal em caso de necessidade (falta de página); • Exemplo: A B D C C (memória) (memória) IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Algoritmo LRU • Algoritmo geralmente bastante eficiente; • Least Recently Used: retira, quando necessário, a página acessada há mais tempo; • Exemplo: D A B C (memória) IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Simulações Programa executável resultados Gerador de traces Simulador arquivo de traces desempenho dos algoritmos • Simulação e avaliação de sistemas de memória; • Exemplo simplificado de arquivo de traces: IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Simulação Simples Memória npf ExT tamanho disponível • Cálculo do número de faltas de páginas (page faults): - Lê um acesso - Se a memória está cheia e não contém a página acessada npf = npf + 1 • Cálculo do produto Espaço x Tempo: - Lê um acesso - ExT = ExT + tamanho_memória_utilizada IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Algoritmos de Pilha • Há uma classe de algoritmos de substituição de páginas que possuem a seguinte propriedade: M(m,r) M(m+1,r) Onde: M - Conjunto de páginas na memória principal m - tamanho da memória r - instante (medido em número de referências acessadas) • Os algoritmos de pilha exploram essa propriedade • A classe de algoritmos inclui o Ótimo e o LRU IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Simulação com Pilha Memória em forma de pilha tamanho máximo Histograma (h) npf ExT • Cálculo do número de faltas de páginas (page faults): - Lê um acesso - p = posição da página lida na pilha - h[p].npf = h[p].npf + 1 • Cálculo do produto Espaço x Tempo: - Lê um acesso - para m = 1 até tamanho_máximo_memória h[m].ExT = h[m].ExT+(m<tam_mem_utilizada?m:tam_mem_utilizada) IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP StackPar • Versão paralela do simulador baseado em pilha; • Necessidade de tratar dependência de dados; • Desenvolvido em linguagem C, utilizando pthreads; • Trabalha com os mesmos formatos de arquivos de trace que o simulador original. IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Simulação Paralela Por processador Memória em forma de pilha tamanho máximo Histograma (h) npf ExT IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Simulação Paralela Memória Entre dois processadores Transição Memória IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Simulação Paralela Memória Transição A cada trinca de processadores Dupla transição Memória Transição Memória IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Simulação Paralela • Primeiro Estágio: Pilha 0 Dupla-transição 1 Transição 1 ? Pilha 1 Dupla-transição 2 Transição 2 ? Pilha 2 Transição 3 ? Pilha 3 IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Simulação Paralela • Segundo e Terceiro Estágios: Segundo estágio: tratamento de dependências Pilha 0 ? Dupla-transição 1 Transição 1 ? Pilha 1 ? Dupla-transição 2 Transição 2 ? Pilha 2 Transição 3 ? Pilha 3 Terceiro estágio: cálculo do produto espaçoXtempo IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP LRU Stack Paralelo • Calcula o número de faltas de página e o produto espaço X tempo paralelamente. Tempos de Execução Obtidos (em segundos) LRU 1 Proc. 212 346 350 559 22 29 LRU, rodando GZIP 400 350 LRU Stack 300 LRU StackPar (2 proc.) 250 LRU StackPar (3 proc.) 200 LRU StackPar (4 proc.) 150 100 50 0 Tempo de Execução Tem po de Execução (segundos) GZIP SEQ LU Stack (*) Testes executados em uma máquina SMP com 4 processadores Pentium II Xeon de 400 MHz e 256 MB de memória principal, sistema operacional Linux. StackPar 2 Proc. 3 Proc. 4 Proc. 174 115 88 281 188 144 15 10 7 400 350 300 250 200 150 100 50 0 Stack StackPar 1 GZIP SEQ LU 2 3 4 Número de Processadores IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP ÓTIMO Stack Paralelo • Calcula o número de faltas de página da forma tradicional; • Calcula o produto espaço X tempo paralelamente. Tempos de Execução Obtidos (em segundos) Ótimo Stack ÓTIMO, rodando GZIP 1000 900 800 700 600 500 400 300 200 100 0 Ótimo Stack Ótimo StackPar (2 proc.) Ótimo StackPar (3 proc.) Ótimo StackPar (4 proc.) Tempo de Execução Tem po de Execução (segundos) GZIP SEQ LU 1 Proc. 247 353 884 1115 32 44 (*) Testes executados em uma máquina SMP com 4 processadores Pentium II Xeon de 400 MHz e 256 MB de memória principal, sistema operacional Linux. StackPar 2 Proc. 3 Proc. 4 Proc. 188 147 118 692 574 499 25 18 15 400 350 300 250 200 150 100 50 0 Stack StackPar 1 GZIP SEQ LU 2 3 4 Número de Processadores IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Trabalhos Futuros • Verificar a viabilidade de paralelização do WS Stack; • Desenvolver uma versão do simulador para trabalhar com memória distribuída em clusters (MPI); • Procurar meios mais eficientes de paralelizar o Ótimo Stack. IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP Contato • Hugo Henrique Cassettari: [email protected] • Edson Toshimi Midorikawa: [email protected] • ESCOLA POLITÉCNICA DA USP Departamento de Engenharia de Computação e Sistemas Digitais Laboratório de Arquitetura e Software Básico Av. Prof. Luciano Gualberto, travessa 3, 158, Cidade Universitária CEP: 05508-900, São Paulo-SP IV FITEM / 2002 - StackPar: Um Simulador Paralelo de Sistemas de Memória baseado em Algoritmos de Pilha - EPUSP