BALANCEAMENTO DE CARGA EM SISTEMAS MULTIPROCESSADORES UTILIZANDO O MODELO DE PROGRAMAÇÃO CHARM++ 1

Documentos relacionados
ANÁLISE DE DESEMPENHO DA APLICAÇÃO DE BALANCEAMENTO DE CARGA EM BENCHMARK SINTÉTICOS 1. Bruna Schneider Padilha 2, Edson Luiz Padoin 3.

Aluno do curso de Ciência da Computação da Unijuí e Bolsista PIBIC/UNIJUÍ, 3. Professor Orientador do Departamento de Ciências Exatas e Engenharias 4

Evento: XXV SEMINÁRIO DE INICIAÇÃO CIENTÍFICA

Aluno do Curso de Ciência da Computação UNIJUÍ, 3

Aluno do curso de Ciência da Computação da Unijuí e Bolsista PIBIC/UNIJUÍ 3. Professor Orientador do Departamento de Ciências Exatas e Engenharias 4

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER

Monografia de Conclusão do Curso de Graduação em Ciência da Computação. 2

UNIJUÍ UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL DCEEng DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

Análise de Desempenho da Paralelização do Problema de Caixeiro Viajante

UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1

COMPUTAÇÃO PARALELA E DISTRIBUÍDA

ANÁLISE DE DESEMPENHO COM A PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PERFEITOS 1

Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

PROPOSTA DE UMA ESTRATÉGIA DE PROGRAMAÇÃO EXPLÍCITA COM ANOTAÇÃO EM CÓDIGO EM BUSCA DE EFICIÊNCIA ENERGÉTICA 1

ComprehensiveBench: Um Benchmark Flexível para Avaliação de Balanceadores de Carga no Ambiente de Programação Charm++

PARALELIZAÇÃO DE ALGORITMO DE INSPEÇÃO DE ROTAS UTILIZANDO PERMUTAÇÃO LEXICOGRÁFICA 1

OpenMP: Variáveis de Ambiente

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 04: PROCESSAMENTO PARALELO: MULTICOMPUTADOR

Curso: Redes de Computadores

Intel Thread Building Blocks (TBB)

Uma Proposta para Migração de Páginas Linux

COMPARAÇÃO DE DESEMPENHO E EFICIÊNCIA ENERGÉTICA ENTRE MPSOC DE BAIXO CONSUMO E UM COMPUTADOR PESSOAL 1

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela

Programação Concorrente e Paralela

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core

Implementação da Especificação de Tempo Real Java para o EPOS

Suporte à Execução Eficiente de Aplicações em Plataformas com Paralelismo Multi-Nível

de petróleo. Um novo domínio chamado computação de propósito geral em processadores gráficos (GPGPU) surgiu quando os pipelines de gráficos de

Introdução OpenMP. Nielsen Castelo Damasceno

SIST706 Sistemas Distribuídos

UNIVERSIDADE FEDERAL DO PARÁ PRÓ-REITORIA DE PESQUISA E PÓS-GRADUAÇÃO DIRETORIA DE PESQUISA PROGRAMA INSTITUCIONAL DE BOLSAS DE INICIAÇÃO CIENTÍFICA

Paradigmas de Computação

Computadores e Programação (DCC/UFRJ)

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Organização de Computadores Sistema de entrada e saída (I/O) e computação paralela. Professor: Francisco Ary

TÍTULO: PROGRAMAÇÃO PARALELA - UMA INTRODUÇÃO AO PARALELISMO COM A OPENMPI

ARQUITETURA DE COMPUTADORES

Charm++ na Paralelização de um Simulador de Irrigação de Solos

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador

Árvore Binária de Busca Ótima - Uma Implementação Distribuída

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

O estado de arte: a evolução de computação de alto desempenho

AEDI Introdução Revisão 2

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

SSC510 Arquitetura de Computadores. 6ª aula

Avaliação do Tempo de Processamento e Comunicação via Rotinas MPI Assíncronas no Modelo OLAM

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

Sistemas Operacionais Distribuídos

Aula 1: Introdução aos Sistemas Operacionais. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

AVALIAÇÃO DE DESEMPENHO DE PROCESSAMENTO DISTRIBUÍDO EM LARGA ESCALA COM HADOOP

Modelo de Programação Paralela

Algoritmos e Lógica de Programação Sistemas Operacionais

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Sistemas Distribuídos

Sistema Operacional. Etapa

SISTEMAS OPERACIONAIS DE REDE

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Informática Parte 10 Prof. Márcio Hunecke

AGT0001 Algoritmos Aula 01 O Computador

AGA 511. Métodos Computacionais em Astronomia. Segundo semestre de 2017

Arquitetura de Sistemas Operativos

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MINAS GERAIS IFMG

USO DE PARALELISMO DE DADOS PARA MAIOR EFICIÊNCIA DE ALGORITMOS DE PROCESSAMENTO DE IMAGENS

Programação Concorrente e Paralela. Noemi Rodriguez

FACULDADE PITÁGORAS PRONATEC

Monitorando o Consumo Energético de Aplicações Concorrentes com Arduino

Disciplina de Arquitetura de Computadores

Programação Distribuída e Paralela. Jorge Barbosa

Estrutura da Apresentação. Introdução ao Processamento Paralelo e Distribuído. Conceitos em PPD. Conceitos em PPD 4/26/09.

Vamos fazer um pequeno experimento

Arquitetura de Computadores

Alguns Aspectos de Desempenho e Utilização de Aglomerados de Computadores Heterogêneos 1

Algoritmos Computacionais

ORGANIZAÇÃO DE COMPUTADORES

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

Carlos Eduardo Batista Centro de Informática - UFPB

SSC510 Arquitetura de Computadores. 10ª aula

Sistemas Distribuídos

Os pontos mais fortes do MAS-School são: A técnica orientada a objetivos para a fase de requisitos utiliza o processo recursivo de decomposição de um

Processamento Paralelo Utilizando GPU

Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot

Apresentação. Informação geral + Conceitos iniciais

Definindo melhor alguns conceitos

Análise empírica de algoritmos de ordenação

Estrutura do SO. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

IMPLEMENTAÇÃO E AVALIAÇÃO DE UM MODELO DE MERCADO IMPERFEITO EM COMPUTAÇÃO PARALELA

Computação científica utilizando placas gráficas

SSC0112 Organização de Computadores Digitais I - Turma 2

Transcrição:

BALANCEAMENTO DE CARGA EM SISTEMAS MULTIPROCESSADORES UTILIZANDO O MODELO DE PROGRAMAÇÃO CHARM++ 1 Guilherme Henrique Schiefelbein Arruda 2, Edson Luiz Padoin 3. 1 Trabalho desenvolvido no contexto do projeto "Utilização de Balanceamento de Carga e DVFS na Paralelização de Aplicações Almejando Aumento da Eficiência Energética em Sistema Paralelos e Heterogêneos" 2 Aluno do curso de Ciência da Computação da Unijuí, guilherme.arruda@unijui.edu.br 3 Professor Orientador do Departamento de Ciências Exatas e Engenharias, padoin@unijui.edu.br Introdução À medida que a produção de software avança, ocorre um crescimento da demanda por processamento computacional. A necessidade de alto desempenho fez com que sistemas computacionais fossem desenvolvidos para suprir esta necessidade. Um dos componentes de hardware que apresentou uma grande evolução foi o processador. Este deixou de ser single core e passou a contar com vários núcleos, proporcionando a execução simultânea de diversas aplicações. Com isso, foi possível construir computadores pessoais, sistemas embarcados e até supercomputadores. Isso abriu as portas para a programação paralela, pois possibilitou que as aplicações fossem divididas em partes e inseridas nos núcleos das unidades de processamento (Pilla & Meneses, 2015). Desde então, diversos programas paralelos são construídos para que seja possível utilizar todo o potencial dos sistemas computacionais atuais. Infelizmente, a programação paralela ainda é difícil de aplicar em plataformas de desenvolvimento. É possível utilizar algumas interfaces de programação de aplicativos (APIs) específicos para desenvolver programas paralelos, facilitando esse trabalho para aplicações regulares e ambientes homogêneos. Como exemplo destas ferramentas pode-se citar o OpenMP (Chandra, 2001) e o MPI (Dongarra, 1996). Porém, utilizá-las em aplicações dinâmicas ou ambientes variáveis pode acarretar em perda de desempenho (Pilla & Meneses, 2015). Será utilizado o modelo de programação Charm++ pelo fato de ser a ferramenta mais indicada para trabalhar com ambientes multiprocessadores. Com este modelo, será criado um novo balanceador de carga (BC) que faz uso de uma estratégia, baseada em médias aritméticas, a qual permite equilibrar as cargas e o tempo de execução entre os processadores, impedindo que um deles fique ocioso ou sobrecarregado. Assim, o BC proposto foi denominado AverageLB. Metodologia

Alguns ambientes de programação adotam uma metodologia baseada na medição das cargas dos objetos que executam em cada processador. Para isso, o BC coleta automaticamente estatísticas da carga computacional e da comunicação destes objetos e armazena estas informações em um banco de dados. Este banco de dados vai ajudar o BC a decedir quando e onde migrar os objetos (Jyothi et al, 2004). Um exemplo deste tipo de ambiente é o Charm++ (Kale & Krishnan, 1993), que é uma extensão da linguagem C++, no qual proporciona um ambiente para programação paralela orientada a objetos. Seu desenvolvimento foi feito pelo Laboratório de Programação Paralela da Universidade de Illinois, em 1993. Oferece suporte a diversas plataformas e permite que os programas desenvolvidos neste modelo executem tanto em ambientes com memória compartilhada quanto com distribuída. Esta ferramenta utiliza uma técnica que consiste em dividir um problema em diversos componentes migráveis, que são executados em vários processadores. Estes componentes migráveis são chamados de chares. Chares são uma das entidades de Charm++ e referem-se aos objetos do C++ com seus atributos e dados privados, sendo instanciados através de uma classe chare. Isso significa que um chare não pode acessar as informações de outro diretamente. Para isso, a comunicação entre eles é feita através da troca de mensagens. O BC proposto foi desenvolvido utilizando o framework de balanceamento de cargas disponibilizado pelo Charm++. Possui uma abordagem centralizada, o que significa que a estrutura de cargas e de comunicação da máquina, além de um processo de tomada de decisão, ficam armazenadas em um único ponto. A escolha de uma abordagem centralizada se deu pelo fato desta realizar um balanceamento mais preciso em relação às outras abordagens. A ideia deste BC é utilizar as informações coletadas em tempo de execução para criar duas variáveis que vão conter médias aritméticas. Estas serão usadas para controlar quais chares devem ser migrados e qual valor cada processador deve ter para estar em equilíbrio. Devido à esta técnica de equilíbrio de cargas através de médias, o BC proposto foi chamado de AverageLB. Foi criado para se adaptar melhor com a tarefa de equilibrar cargas de processadores sem precisar utilizar dois ou mais BCs diferentes para isso. Para que o tempo de execução dos processadores fossem equilibrados, foi utilizada uma estratégia baseada na média aritmética de suas cargas. Primeiramente, o algoritmo extrai a quantidade de objetos e o total de carga de cada processador. Neste ponto, já é possível perceber que estas duas variáveis são desproporcionais devido ao modo como os objetos são distribuídos pelas aplicações. O próximo passo é calcular a carga média por processador (CMP), que é feito dividindo o somatório das cargas de cada objeto pelo número total de objetos de cada processador. Esta variável é usada para fazer o controle de quais objetos devem ser migrados de um processador para outro, onde os objetos que possuem uma carga maior que a média são migrados, enquanto que os demais permanecem executando em seu processador de origem. Em seguida, é calculada a média aritmética geral (MAG), que servirá como limitante para equilibrar as cargas dos processadores. Para efetuar este cálculo, é feito a soma da carga de cada processador e o resultado é dividido pelo número de processadores. Com estas duas variáveis definidas o BC começa o processo de equilíbrio

das cargas. A imagem apresenta dois processadores, X e Y, que foram selecionados pelo BC através de um método. Este método é responsável por mapear as unidades de processamento e selecionar a primeira que se encontra abaixo da MAG, que neste caso é representado por Y. Já o X representa o primeiro processador que está acima da MAG. Após esta seleção, o BC mapeia os chares do processador X a fim de identificar aqueles que se encontram acima do seu CMP. Uma vez identificados, inicia-se um processo de migração que moverá os chares do processador X para o Y até que a carga de Y possua um valor próximo à MAG. Quando isso acontecer, o BC busca o próximo processador Y abaixo da média geral. O mesmo vale para o processador X. O processo de balanceamento é encerrado quando não existe mais processadores a serem mapeados e as cargas de todas as unidades de processamento possuem um valor próximo à MAG, como mostra a Figura 2. Mesmo que o número de chares entre X e Y seja diferente, o que realmente importa é o valor total da carga destes objetos. Resultados e Discussão A plataforma em que o balanceador proposto foi executado consiste de um notebook que contém um processador octa-core Intel Core i7 3830QM e um total de 8 GB de memória RAM. Nesta máquina, foram instalados o sistema operacional Fedora 21 Linux cuja versão do kernel é 4.0.4-202.fc21.x86_64, a versão 6.5.1 do modelo de programação paralela Charm++, a versão 4.9.2 do compilador gcc para a linguagem C++ e um editor de código para realizar a implementação do algorimto. Nesta plataforma, foi utilizado o benchmark lb_test por se tratar de uma ferramenta bastante utilizada para avaliar balanceadores de carga. Com ela, foi realizado um teste com o algoritmo do AverageLB e o resultado disso foi comparado com dois BCs disponibilizados pelo Charm++, que são o GreedyLB e o RefineLB. A Figura 1 mostra o gráfico resultante da avaliação do benchmark que compara os tempos de execução dos três balanceadores.

Figura 1. Comparação de diferentes balanceadores de carga para o benchmark lb_test Conclusões A maioria das aplicações paralelas envolve comportamentos dinâmicos ou cálculos baseados em diversas fórmulas complexas. Por conta disso, empresas e instituições buscam adquirir uma infraestrutura suficiente para suportar tais aplicações. A presente situação do ambiente paralelo mostra uma grande preocupação com os sistemas computacionais de alto desempenho (CAD). Este fator é consequência do objetivo destes sistemas de atingir a escala do hexaflop. Por conta disso, existe um grande investimento em máquinas que possuem centenas de milhares de processadores, pois necessitam obter resultados precisos no menor tempo possível. O grande problema por trás disso é que muitas vezes não há uma preocupação com o desbalanceamento de carga gerado por estas aplicações, ou até mesmo pelas próprias máquinas, que tendem a sofrer com problemas de temperatura e consumo de energia. O desbalanceamento das cargas computacionais é o grande responsável por impedir que as máquinas paralelas aproveitem todo o seu desempenho. Diante deste grande problema, foi construído um balanceador de carga baseado em uma estratégia que utiliza médias aritméticas para equilibrar as cargas em cada processador. Por conta disso, este balanceador recebe o nome de AverangeLB. As médias são limitantes para controlar a taxa de migração de objetos, pois é uma tarefa muito custosa e que muitas vezes é ignorada por algoritmos de balanceamento de carga. Testes com este balanceador mostra que seu tempo de execução é adequado comparado aos outros balanceadores com os quais este foi

comparado. Diante disso, os próximos passsos deste trabalho estão voltados para a comunicação entre os objetos, onde pretende-se considerar esta variável. Também objetiva-se realizar testes nas grandes máquinas paralelas a fim de resolver problemas reais. Palavras-chave Balanceamento de Carga; Multiprocessadores; Modelo de Programação Referências Bibliográficas Pilla, L. L. and Meneses, E. (2015). Programação paralela em Charm++. Jyothi, R., Lawlor, O. S., and Kale, L. V. (2004). Debugging support for Charm++. In Parallel and Distributed Processing Symposium, 2004. Proceedings. 18th International, page 264. IEEE. Chandra, R. (2001). Parallel programming in OpenMP. Morgan Kaufmann. Dongarra, J. J., Otto, S. W., Snir, M., and Walker, D. (1996). A message passing standard for mpp and workstations. Communications of the ACM, 39(7):84 90. Kale, L. V. and Krishnan, S. (1993). Charm++: a portable concurrent object oriented system based on C++, volume 28. ACM.