1 / 27 trabalho final de pdp – simgrid: apresentação e aplicação de exemplo carlos eduardo...

27
1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo rlos Eduardo Benevides Bezerra Programação distribuída e paral O Simulador SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Prof. Dr. Cláudio Fernando Resin Geyer CMP157 – Programação distribuída e paralela paralela e

Upload: teo-feliz

Post on 07-Apr-2016

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

1 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

O Simulador SimGrid:apresentação e aplicação de

exemploCarlos Eduardo Benevides Bezerra

Prof. Dr. Cláudio Fernando Resin GeyerCMP157 – Programação distribuída e paralela

paralela e

Page 2: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

2 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Agenda

Motivação Vantagens da simulação

SimGrid Especificação da plataforma Deployment Módulos

MSG GRAS SMPI SimDAG

Limitações Dificuldades para simular jogos MMG

Implementação dos escalonadores Resultados obtidos

Page 3: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

3 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Motivação

Desenvolver aplicações concorrentes de larga escala impõe uma série de desafios: Estimar o comportamento (tempo de

execução) do código não é trivial Experimentar aplicações de grid em ambientes

reais de larga escala não é prático Requer que a aplicação esteja completamente

funcional Limita o experimento ao cenário do grid em questão O tempo de experimentação pode ser muito grande É praticamente impossível repetir experimentos:

grandes flutuações dos recursos

Page 4: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

4 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Simulação

Para resolver estes problemas, pode ser feita simulação por software

Tempo de simulação << Tempo de execução real

Problema: tipicamente, cada pesquisador costuma criar seu próprio simulador de aplicação

Utilização de um padrão de simulador permite comparação de resultados de diferentes trabalhos

Page 5: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

5 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

SimGrid

1999: começou sendo desenvolvido por Henri Casanova, da UC at San Diego e Arnaud Legrand, da Escola de Lyon

Desenvolvimento do bloco mais básico: SG 2001: Arnaud construiu uma API sobre o SG, chamada de Meta-SG

Suporte a threads, comunicação assíncrona etc. 2003: Loris Marchal criou um modelo de rede adequado para

grids 2006: Martin Quinson adicionou um módulo (GRAS) ao SimGrid,

permitindo a implementação da aplicação real e uso do mesmo código para simulação

Atualmente: é mantido em conjunto pela University of Hawai at Manoa, LIG Laboratory (Grenoble, France) and University of Nancy (France)

Page 6: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

6 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

O SimGrid

Permite especificar uma plataforma (em XML) a ser simulada Nodos: CPU power Links: latency e bandwidth Rotas: entre dois nodos N1 e N2, uma seqüência

de links forma a rota (deve ser especificada para cada par)

Tarefas: Custo de CPU e custo de NET Podem ser utilizados traces: descrições de como um

recurso varia com o tempo Para retornar o resultado da simulação, não é

necessário decorrer-se o tempo da execução real Permite gerar uma vasta gama de cenários diferentes

Page 7: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

7 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Especificação da plataforma<cpu name="Tremblay" power="98095000"/>

<cpu name="Jupiter" power="76296000"/>

<network_link name="T_out" bandwidth="41279125" latency="5.9904e-05"/>

<network_link name="T_in" bandwidth="252750" latency="0.00570455"/>

<network_link name="J_out" bandwidth="34285625" latency="0.000514433"/>

<network_link name="J_in" bandwidth="11618875" latency="0.00018998"/>

<network_link name="loopback" bandwidth="498000000" latency="0.000015"/>

<route src="Tremblay" dst="Tremblay"><route_element name="loopback"/></route>

<route src="Jupiter" dst="Jupiter"><route_element name="loopback"/></route>

<route src="Tremblay" dst="Jupiter"><route_element name="T_out"/><route_element name="J_in"/></route>

<route src="Jupiter" dst="Tremblay"><route_element name="J_out"/><route_element name="T_in"/></route>

Page 8: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

8 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Deployment

Especificação do papel de cada processo, assim como seus argumentos

<process host="Tremblay" function="master">

<argument value="RR"/>

<argument value="5000"/>

<argument value="500000"/>

<argument value="50"/>

<argument value="Tremblay"/>

<argument value="Jupiter"/>

</process>

<process host="Tremblay" function="slave"/>

<process host="Jupiter" function="slave"/>

Page 9: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

9 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Módulos do SimGrid

Page 10: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

10 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Módulo MSG

Meta-SimGrid Módulo mais simples do SimGrid Permite efetuar simulações, sem

necessariamente implementar a aplicação Tarefas são criadas e enviadas aos escravos, sem

maior detalhamento do quê fazem, especificamente Baseia-se no conceito de bag-of-tasks

Comunicação entre processos só pode ser feita através de envio de tarefas dummy com dados associados

Não podem ser utilizadas em ambientes reais

Page 11: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

11 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Módulo GRAS

Grid Reality And Simulation Framework completo para desenvolvimento de

aplicações para grid Contém o simulador, para testar as aplicações Contém funcionalidades que permitem a

execução da aplicação em ambientes reais, sem mudar o código

Permite que os processos se comuniquem GRAS lida com a heterogeneidade da plataforma,

convertendo os dados para o formato do destino Permite uso de mensagens/sockets

Page 12: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

12 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Módulo SMPI

Ainda não implementado no SimGrid

Permitirá o uso de códigos MPI prontos para efetuar simulações em grid

Será, em resumo, uma emulação de ambiente paralelo sobre o qual poderá ser executado código MPI

Page 13: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

13 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Módulo SimDAG

Permite simulação de conjuntos de tarefas A dependência entre tarefas é representada num DAG

Primeiras versões do SimGrid se baseavam em DAGs SG (antigo kernel) foi utilizado até o surgimento do

SURF

Há um vértice para cada tarefa, e um para cada comunicação, e as arestas apenas representam dependência

Page 14: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

14 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Limitações

É necessário work-around para simular sobrecarga de links Foi usada uma composição de link_up da origem

conectado a link_down do destino (e vice-versa) para que a banda de up ou down pudesse se esgotar

MSG não dá suporte a comunicação entre processos (necessita de tarefas dummy)

Exigência de se especificar a rota para cada par Uma plataforma full-connected de 4000 nodos

precisa de um XML de 2 GigaBytes Simulador é incapaz de processar um descritor de

plataforma deste tamanho...

Page 15: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

15 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Primeira tentativa

Desejava-se simular um ambiente de jogo P2P MMG, mas isso não foi possível: Não há suporte adequado para comunicação

inter-processos no MSG (módulo de simulação pura)

MSG é baseado no bag-of-tasks Jogos MMG tem até centenas de milhares de

jogadores O simulador foi incapaz de processar arquivos de

plataforma de 4000 nodos...

Segunda tentativa: escalonador bag-of-tasks

Page 16: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

16 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Implementação - Escalonador Problema:

Seja um vetor P de cpus e um vetor T de tarefas Deseja-se designar cada tarefa a um processador,

de forma a minimizar o tempo total de execução Utilizadas três abordagens:

Escalonador estático round-robin Escalonador dinâmico Escalonador com atribuição por ordem (com HEAP):

CPUs: ordem decrescente de poder de processamento

Tarefas: ordem decrescente de peso de cpu Módulo utilizado: MSG (simulação pura)

Page 17: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

17 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Escalonador estático

Percorre-se o vetor P, designando a cada cpu uma tarefa do vetor T

Chegando-se ao final do P, volta-se ao início e continua-se designando tarefas a cada cpu

Não é utilizado nenhum critério para decidir qual cpu deve receber qual tarefa Apenas distribuem-se as tarefas de T

ciclicamente entre os cpus em P

Page 18: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

18 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Código-fonte: Round-Robin

void scatter_tasks_rr (int number_of_tasks, m_task_t* todo, int slaves_count, m_host_t* slaves) {

for (int i = 0; i < number_of_tasks; i++) {

MSG_task_put (todo[i], slaves[i % slaves_count], PORT_22);

}

for (i = 0; i < slaves_count; i++) {

MSG_task_put (MSG_task_create("finalize", 0, 0, FINALIZE), slaves[i], PORT_22);

}

}

Page 19: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

19 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Escalonador dinâmico

Designe uma tarefa para cada cpu IDLE

Enquanto todas estiverem BUSY, espere alguma ficar disponível e lhe delegue a próxima tarefa CPUs mais rápidas receberão mais tarefas Melhoria considerável do tempo de execução

Page 20: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

20 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Código-fonte: Dinâmicofor (i = 0; i < number_of_tasks; i++) {

MSG_task_get(&request, TO_MASTER);

requester = MSG_task_get_source (request);

MSG_task_execute(request); //o processamento do pedido implica em um custo

MSG_task_destroy(request);

MSG_task_put(todo[i], requester, PORT_22);

}

for (i = 0 ; i < slaves_count; i++) {

MSG_task_get(&request, TO_MASTER);

MSG_task_execute(request); //o processamento do pedido implica em um certo custo de cpu/net

requester = MSG_task_get_source (request);

MSG_task_destroy(request);

MSG_task_put(MSG_task_create("finalize", 0, 0, FINALIZE), requester, PORT_22);

}

Page 21: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

21 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Escalonador com HEAP

Os vetores P e T são transformados em heaps, em que a raiz é o elemento com maior peso: Para P, a raiz é a cpu mais rápida Para T, a raiz é a tarefa mais pesada

Extraia a raiz de T, designando a tarefa à raiz de P, que também será extraída Continue extraindo Tarefas e CPUs, sempre dando

a maior tarefa para a cpu mais rápida disponível Quando uma cpu voltar a ser disponível, reinsira-a

no heap de P Por causa desta reinserção, é que se utiliza HEAP e não

simplesmente quicksort sobre o vetor

Page 22: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

22 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Código-fonte: HEAP

for (i = 0; i < number_of_tasks; i++) {

while (MSG_task_Iprobe (TO_MASTER) || slaves_heap->last == -1) {

MSG_task_get(&request, TO_MASTER);

requester = MSG_task_get_source (request);

heap_insert( (void*) requester, slaves_heap );

}

heaviest_task = (m_task_t) heap_extractMax(tasks_heap);

fastest_slave = (m_host_t) heap_extractMax(slaves_heap);

MSG_task_put(heaviest_task, fastest_slave, PORT_22);

}

while (slaves_heap->last < slaves_count - 1) {//espera todos ficarem IDLE

request = NULL;

MSG_task_get(&request, TO_MASTER);

requester = MSG_task_get_source (request);

heap_insert( (void*) requester, slaves_heap );

}

//manda FINALIZE para os escravos

Page 23: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

23 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Tempo x Peso da Tarefa

Page 24: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

24 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Tempo x Número de CPUs

Page 25: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

25 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Tempo x Volume de comunicação de cada tarefa

Page 26: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

26 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Conclusões

Designar a tarefa mais pesada para o processador mais rápido aumenta consideravelmente a velocidade

Ambos algoritmos dinâmicos foram muito melhores que o estático

O SimGrid é um ótimo simulador, mas possui algumas restrições

Page 27: 1 / 27 Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo Carlos Eduardo Benevides Bezerra Programação distribuída e paralela O Simulador

27 / 27

Trabalho Final de PDP – SimGrid: apresentação e aplicação de exemplo

Carlos Eduardo Benevides Bezerra Programação distribuída e paralela

Referências

Site do SimGridSimGrid: http://simgrid.gforge.inria.fr

CASANOVA, Henri. Simgrid: A Toolkit for the Simulation of Application Scheduling, Proc. of the 1st International Symposium on Cluster Computing and the Grid, 2001.

Legrand, A.   Marchal, L.   Casanova, H. Scheduling distributed applications: the SimGrid simulation framework,Proc. of the 3rd International Symposium on Cluster Computing and the Grid, 2003.