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
27
Embed
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.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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
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
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
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
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)
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
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"/>
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
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
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
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) {
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
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
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
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
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
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.