• Nenhum resultado encontrado

Balanceamento de carga no modelo de programação charm++ fazendo a análise da aplicação de balanceadores de carga centralizados em aplicações paralelas

N/A
N/A
Protected

Academic year: 2021

Share "Balanceamento de carga no modelo de programação charm++ fazendo a análise da aplicação de balanceadores de carga centralizados em aplicações paralelas"

Copied!
79
0
0

Texto

(1)

DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS CURSO DE CIÊNCIA DA COMPUTAÇÃO

GIOVANE DA ROSA LIZOT

BALANCEAMENTO DE CARGA NO MODELO DE PROGRAMAÇÃO CHARM++ FAZENDO A ANÁLISE DA APLICAÇÃO DE BALANCEADORES DE CARGA

CENTRALIZADOS EM APLICAÇÕES PARALELAS

IJUÍ 2019

(2)

GIOVANE DA ROSA LIZOT

BALANCEAMENTO DE CARGA NO MODELO DE PROGRAMAÇÃO CHARM++ FAZENDO A ANÁLISE DA APLICAÇÃO DE BALANCEADORES DE CARGA

CENTRALIZADOS EM APLICAÇÕES PARALELAS

Trabalho apresentado a banca do curso de Ciência da Computação do Departamento de Ciências Exatas e Engenharias da Universidade Regional do Noroeste do Estado do Rio grande do Sul, como parte dos requisitos para obtenção do título de bacharel em Ciência da Computação.

Orientador: Prof. Me. Romário Lopes Alcântara

IJUÍ 2019

(3)

FICHA CATALOGRÁFICA

Lizot, da Rosa Giovane

Balanceamento de carga no modelo de programação charm++ fazendo a análise da aplicação de balanceadores de carga centralizados em aplicações paralelas – Ijuí, 2019.

Nº de páginas - 80

Área de concentração: Balanceamento de Carga, Escalonamento de Processos, Computação de Alto Desempenho, Otimização de Algoritmos. Orientador: Prof. Me. Romário Lopes Alcantara

Trabalho de Conclusão de Curso – Unijuí

1.Balanceamento de Carga; 2. Computação de Alto Desempenho; 3. Charm++

(4)

Dedico este trabalho a minha família, que sempre esteve ao meu lado, suprindo minhas necessidades e me apoiando, aos meus colegas, amigos e principalmente aos meus professores pelos ensinamentos e companheirismo ao longo de toda minha formação.

(5)

AGRADECIMENTOS

Agradeço a DEUS, pela força diária em que busquei através de minhas orações e meditação, por me capacitar a desenvolver este trabalho, também o apoio e a dedicação da minha família, pela convivência cotidiana, sem vocês eu não teria conseguido.

Agradeço os meus amigos, de perto e de longe, por entenderem este momento ao qual me dediquei a realizar este trabalho. Vocês me apoiam a cada dia e é uma troca de experiências incrível.

Agradeço a todos meus professores, porém principalmente ao meu orientador Romário, por todo apoio e dedicação, além da disponibilidade de sempre em ajudar no que for preciso, e também ao professor Padoin, coordenador do curso, pela parceria constante, seja neste trabalho ou em outros projetos.

(6)

“Conhecimento não é apenas aquilo que você sabe, mas o que você é capaz de fazer com aquilo que você sabe”. Aldous Huxley

(7)

RESUMO

Este trabalho apresenta uma análise das estratégias de Balanceamento de Carga do Estado da Arte comparadas a uma nova proposta de um Balanceador de carga centralizado visando analisar o comportamento das diferentes abordagens para o tempo de execução e a migração de tarefas de aplicações paralelas. O objetivo é analisar os ganhos de desempenho alcançado com a sua aplicação em aplicações de simulação e dados experimentais, como também aplicações reais, comparado a abordagem sem balanceador. O algoritmo do Balanceador coleta informações sobre a quantidade de objetos mapeados em cada processador e suas cargas para calcular a carga total de cada processador em tempo real e as utiliza na tomada de decisões de Balanceamento de Carga dinamicamente movendo os processos entre os grupos Small e Large para que a diferença entre os grupos diminua, buscando um equilíbrio mútuo. Assim, as cargas tendem a ser distribuídas entre os núcleos de acordo com a estratégia adotada, reduzindo o desequilíbrio. Portanto, migrações desnecessárias não são executadas reduzindo o tempo de execução do aplicativo, e a cada iteração fazendo uma varredura das cargas nos núcleos e migrando de acordo com a necessidade, mantendo o nível de desbalanceamento do processador o mais baixo o possível. Para implementação foi utilizado o modelo de programação paralela Charm++. Os resultados dos testes iniciais demonstram reduções no tempo total de execução em comparação com a abordagem sem balanceador de carga. Os resultados mensurados apresentaram diferenças significativas no nível de desbalanceamento final na execução das aplicações.

Palavras-Chaves: Computação de Alto Desempenho, Escalonamento de Processos,

(8)

ABSTRACT

This paper presents an analysis of state of the art load balancing strategies compared to a new proposal for a centralized load balancer, which analyzes the behavior of different approaches to the execution time and the execution of parallel application tasks. The objective is to analyze the results of the performance achieved with its application in simulation and experimental data applications, as well as real applications, compared to unbalanced approaches. The Balancer algorithm collects information about the number of objects mapped on each processor and their loads to calculate the total load of each processor in real time and how it uses load balancing decision making to dynamically move processes between Small and Large groups. So that the difference between the groups narrows, seeking a mutual balance. Thus, how the loads can be distributed among the cores according to the adopted strategy, the constraints or the imbalance. Therefore, unnecessary migrations are not performed during application runtime, and each iteration scans cores and migrates as needed, keeping the processor unbalance level as low as possible. To implement the Charm ++ parallel programming model was used. Initial test results demonstrate reductions in overall execution progress compared to a load-free approach. The measured results showed differences in the final imbalance level in the application execution.

Keywords: High Performance Computing, Process Scheduling, Load Balancing,

(9)

LISTA DE ILUSTRAÇÕES

FIGURA 1-MULTIPROGRAMAÇÃO:CPU CHAVEADA EM DIFERENTES PROCESSOS ... 22

FIGURA 2-MULTIPROGRAMAÇÃO:FLUXO DE PROCESSAMENTO ... 22

FIGURA 3-TROCA DE CONTEXTO ... 23

FIGURA 4-O ESCALONAMENTO SISTEMATIZADO ... 28

FIGURA 5-PARÂMETROS DO ALGORITMO DE ESCALONAMENTO ... 28

FIGURA 6 - O DESBALANCEAMENTO PRESENTE NOS PROCESSADORES ... 30

FIGURA 7 - HIERARQUIA DE BALANCEADORES DE CARGA CENTRALIZADOS ... 35

FIGURA 8 - SOFTWARES QUE SUPORTAM BALANCEAMENTO DE CARGA DINÂMICO ... 38

FIGURA 9 - COMUNICAÇÃO ENTRE OS CHARES POR MEIO DA TROCA DE MENSAGENS. ... 39

FIGURA 10 - ESTRATÉGIA INICIAL DO BALANCEADOR DE CARGA ... 43

FIGURA 11 - DIAGRAMA DE FLUXO INICIAL DO ALGORTIMO ... 44

FIGURA 12 - O FLUXO DE PROCESSAMENTO ... 45

FIGURA 13 - DIVISÃO DE PROCESSOS NO PROCESSADOR ... 46

FIGURA 14 - FIGURA ILUSTRATIVA DADOS DIDÁTICOS ... 48

FIGURA 15 - TEMPO TOTAL DE EXECUÇÃO COM 25 TAREFAS LB_TEST ... 58

FIGURA 16 - TEMPO TOTAL DE EXECUÇÃO COM 50 TAREFAS LB_TEST ... 59

FIGURA 17 - TEMPO TOTAL DE EXECUÇÃO COM 50 TAREFAS LB_TEST ... 60

FIGURA 18 - TEMPO TOTAL DE EXECUÇÃO COM 150 TAREFAS LB_TEST ... 61

FIGURA 19- TEMPO TOTAL DE EXECUÇÃO COM 300 TAREFAS LB_TEST ... 62

FIGURA 20 - TEMPO TOTAL DE EXECUÇÃO COM 600 TAREFAS LB_TEST ... 63

FIGURA 21- MIGRAÇÃO DE TAREFAS COM 600 ELEMENTOS LB_TEST ... 63

FIGURA 22- TEMPO TOTAL DE EXECUÇÃO COM 50 TAREFAS STENCIL4D ... 65

FIGURA 23- TEMPO TOTAL DE EXECUÇÃO COM 150 TAREFAS KNEIGHBOR ... 66

FIGURA 24- TEMPO TOTAL DE EXECUÇÃO COM 350 TAREFAS KNEIGHBOR ... 66

FIGURA 25 - MIGRAÇÃO DE TAREFAS COM 350 ELEMENTOS KNEIGHBOR ... 67

FIGURA 26 - TEMPO DE EXECUÇÃO LASSEN ... 68

(10)

LISTA DE TABELAS

TABELA 1-CONDIÇÃO GRUPO SMALL ... 48 TABELA 2-CONDIÇÃO GRUPO LARGE ... 49

(11)

LISTA DE ABREVIATURAS E SIGLAS

BC Balanceador de Carga E/S Entrada e Saída

HPC High Performance Computing

OOPP Object Orientation Parallel Programming OO Orientação a objeto

PE Processing Elements RTS Runtime System

(12)

SUMÁRIO

1 INTRODUÇÃO ... 12

1.1 PROBLEMA A SER DISCUTIDO ... 15

1.2 MOTIVAÇÃO ... 16

1.3 MÉTODO DE PESQUISA ... 17

1.4 OBJETIVO ... 18

1.5 ORGANIZAÇÃO DO TRABALHO ... 19

2 ESTADO DA ARTE ... ERRO! INDICADOR NÃO DEFINIDO. 2.1 ESCALONAMENTO DE PROCESSOS ... 20

2.1.1 O Escalonamento de tarefas em Sistemas Computacionais ... 20

2.1.2 O Modelo de Processos: MULTIPROGRAMAÇÃO ... 21

2.1.3 Troca de Contexto ... 23

2.1.4 O problema do Escalonamento de Processos ... 24

2.1.5 Escalonamento Estático e Dinâmico ... 26

2.1.6 Parâmetros de Escalonamento ... 27

2.2 BALANCEAMENTO DE CARGA ... ERRO! INDICADOR NÃO DEFINIDO. 2.2.1 Visão geral do Balanceamento de Carga ... 29

2.2.2 Fundamentos do Balanceamento de Carga ... 31

2.2.3 Balanceamento de Carga Estático ... 32

2.2.4 Balanceamento de Carga Dinâmico ... 33

2.2.5 Balanceamento de Carga DISTRIBUÍDO ... 33

2.2.6 Balanceamento de Carga CENTRALIZADO ... 34

2.2.7 Balanceamento de Carga: Trabalhos Relacionados ... 35

2.3 PROCESSAMENTO PARALELO ... 36

2.3.1 O modelo de Programação Charm++ ... 37

3 ESTUDO DE CASO: ALGORITMO GROUPLB ... 40

3.1 MOTIVAÇÃO ... 40

3.2 ESTUDO E PESQUISA ... 41

(13)

3.4 ALGORITMO E ESTRATÉGIA ADOTADA ... 45

4 METODOLOGIA ... 51

4.1 O HARDWARE: PLATAFORMA UTILIZADA ... 51

4.2 BALANCEADORES DO ESTADO DA ARTE ... 51

4.3 BENCHMARKS: TESTES DE DESEMPENHO ... 52

4.3.1 Benchmarks de Simulação de tarefas ... 53

4.3.2 Benchmarks de Aplicações Reais ... 54

4.4 PARAMETROS DE TESTES ... 54

4.4.1 Parâmetros nos Benchmarks ... 55

4.4.2 Considerações e Fechamento do Capítulo ... 55

4.4.3 Atualização do Ambiente Charm++ ... 56

5 RESULTADOS ... 57

5.1 BENCHMARKS DE SIMULAÇÃO DE TAREFAS ... 57

5.1.1 Benchmark LB_Test ... 57

5.1.2 Benchmark stencil4d ... 64

5.1.3 Benchmark kNeighbor ... 65

5.2 BENCHMARKS SIMULAÇÃO DE APLICAÇÕES REAIS... 68

5.2.1 APLICAÇÃO LASSEN ... 68

5.2.2 APLICAÇÃO LULESH ... 69

6 CONCLUSÕES ... 71

(14)

1 INTRODUÇÃO

Atualmente com o rápido crescimento da computação de alto desempenho, oriundo do avanço das inovações e descobertas tecnológicas, o desenvolvimento de sistemas agregando o uso de inteligência artificial, apresentam-se como assuntos amplamente discutidos em universidades e centros de tecnologia no país, tanto na academia, como na indústria, geram muita repercussão. Dessa maneira, podemos analisar que o crescimento e o progresso nos últimos séculos ocorreram de forma acelerada, desde a revolução industrial (G. D. R. Lizot, et al, 2018).

Nesse momento a busca por sistemas computacionais de alto desempenho se tornou fundamental a partir do crescimento proveniente de soluções de softwares mais complexas, de modo que necessitam precisão, e resultam numa gama de informações, sejam nas áreas de pesquisa e simulações, bem como, previsão do tempo, biotecnologia, nanotecnologia, dinâmicas na área da saúde, dentre outras, que por sua vez acabam exigindo consequentemente um maior poder de processamento de sistemas de computação de alto desempenho (LIZOT, Giovane; PADOIN, Edson. 2019, Pág. 263).

Portanto, a partir de todo o crescimento de sistemas paralelos, implementados para a busca de desempenho e suprir as necessidades tecnológicas do momento, um problema surge em virtude disso, o desBalanceamento de Carga, ou seja, conforme o crescimento contínuo pela necessidade de sistemas computacionais com maior poder de processamento e melhor eficiência aumentou, em contrapartida esses avanços acarretaram algumas desvantagens recorrentes, pois o desBalanceamento de Carga se mostra permanentemente presente no âmbito do software, de modo que o mesmo acaba afetando em totalidade todo o potencial existente nos processadores (Padoin et al; 2014, pág. 93).

De outra forma outro problema também afeta as grandes aplicações, isso em razão do elevado consumo de energia gerado por esses supercomputadores, de maneira que ocorre uma relação proporcional dos avanços com essas circunstâncias negativas.

Dessa maneira, diversos sistemas paralelos foram desenvolvidos para fornecer uma possível solução a essas desvantagens, pois necessita-se cada vez mais alternativas otimizadas, devido a esta demanda de uma grande quantidade de

(15)

processamento em um curto período de tempo, podendo-se exemplificar a previsão do tempo, que necessita estar finalizada imediatamente antecedendo as datas estipuladas para resultado, sendo assim, este tipo de estudo de caso, acaba que precisa ser acelerado para obter os resultados o mais breve possível.

Para (Zheng et al. 2011a) em nível de software estratégias são implementadas com o modelo de programação CHARM++, trabalhando em reduzir o tempo de execução, o número de estratégias estruturadas e planejadas para a abrangência em dados experimentais de tempo de execução e utilização de consumo de energia, visando trabalhar com lógicas de escalonamento e divisão de tarefas em grupos, se baseando nos mais diferentes Balanceadores do Estado da Arte analisados e comparados em distintos benchmarks, avaliando e alterando a potência, o número de chares, as execuções e demais parâmetros de métricas de análise nas estratégias de tomadas de decisão e migração de tarefas é um número pequeno, portanto essa pesquisa se baseia com essas métricas citadas para se obter um resultado de otimização no Balanceamento de Carga de processadores com o intuito de explorar essa área não tão abrangida atualmente.

Conforme explica (ZHENG et al., 2011b, p 23). O Balanceamento de Carga para aplicativos paralelos em execução em milhares de processadores é uma tarefa difícil. Há diferentes tomadas de decisões de Balanceamento de Carga, uns trabalham utilizando um modelo de caminho planejado para tomada de decisões, como também existem algoritmos que tem objetivo de migrar tarefas com uma enorme carga computacional para a unidade de processamento com menor carga, recomeçando até que a carga de todos os processadores atinja uma aproximação com a carga média. Para (ZHENG, Gengbin, 2005; p 16a). Máquinas especificamente no campo de cálculos científicos, com o grande uso de cálculos com ponto flutuante, que demandam grande capacidade de processamento, acabam por terem o desenvolvimento de aplicativos paralelos como sendo um desafio significativo. Tanto que, estas aplicações podem exigir mudanças qualitativas na maneira como são escritos programas paralelos, bem como mudanças na maneira como entendemos e analisamos o desempenho para explorar o enorme poder computacional.

Técnicas e diferentes estratégias de Balanceamento de Carga podem ser analisadas e separadas em diferentes classes, basicamente se divide em programas onde os chares (tarefas) são criados e processados durante o tempo de execução,

(16)

14

bem como também são presentes os que se apresentam de forma iterativa e dinâmica, trabalhando com diferentes modelos de cargas persistentes (ZHENG et al., 2010).

Conforme (Kale and Krishnan 1993, Pg 96). Grandes sistemas, planejados para uma escala superior, agregam estratégias que trabalham de forma distribuída visando processar o maior número de tarefas no menor tempo possível, buscando melhorar o desempenho nessa larga escala os supercomputadores trabalham com um imenso número de processos, a forma de trabalhar dessas estratégias se baseia em unidades de processamento trocar informações somente com seu vizinho mais próximo, essa medida busca descentralizar o processo de Balanceamento de Carga e ter como resultado uma menor sobrecarga no Balanceamento de Carga comparado a estratégias centralizadas.

O Gerenciador de tarefas executado por sistemas operacionais não se preocupa se uma unidade de processamento se esforça e/ou trabalhe mais do que a outra. Acontece isso porque a finalidade é distribuir os processos entre núcleos do processador, aprovando de acordo com sua política de escalonamento, garantindo que mais de uma aplicação seja usada no mesmo tempo pelo usuário, sem a eficiência do sistema ser afetada. Desta maneira, proporcionando o aspecto de multitarefa proposta aos sistemas operacionais.

Uma solução para os problemas de elevados gastos energéticos e desBalanceamento de Carga, é a implementação de Balanceadores de carga. Aplicações com estratégias especializadas, aonde cada qual opera de acordo com a tomada de decisão estudada e planejada, como a melhor alternativa para solucionar determinada situação, sendo assim, essas soluções acabam sendo implementadas com o objetivo de equilibrar as cargas nos diferentes núcleos dos processadores, permitindo que todas unidades de processamento trabalhem de forma mais equilibrada, eliminando ociosidade de determinadas unidades de processamento que acabaram não sendo igualmente selecionadas na política de escalonamento do sistema operacional, a partir dessas medidas, pretende-se acabar obtendo como resultado processadores com unidades de processamento o mais próximas possível de um estado mais balanceado.

(17)

1.1 Problema a ser discutido

Segundo (Kale 1993, Pg 91), os estudos científicos das mais diversas áreas do conhecimento, é o meio ao qual as aplicações científicas, como modelos experimentais de dados acabam sendo empregadas, ganham destaque e consequentemente podem avançar em trabalhos futuros, porém tudo isso ocorrerá dependendo quando o projeto e análise dos resultados a partir de testes e simulações satisfazerem o esperado a partir do problema proposto.

De alguma forma, analisando as aplicações, ao serem paralelizadas, as mesmas manifestam excessiva comunicação entre suas tarefas, o que causa um desequilíbrio no escalonamento de processos e consequentemente o problema do desBalanceamento de Carga. Portanto, de modo que o desBalanceamento de Carga aparece presente, surgem diversos problemas, como a impossibilidade do uso eficiente de todos os recursos dos sistemas paralelos. Por este motivo, alguns núcleos tem a possibilidade de receber tarefas com menores cargas do que os demais, ou permanecer inativos, enquanto outros executam as aplicações maiores, e todo esse problema acarreta causando uma ineficiência na utilização dos sistemas (Padoin et al. 2014)

Contudo, diversas soluções que atribuem as mais variadas estratégias de balanceadores de carga visando o aumento da eficiência na capacidade de processamento com recursos paralelos são implementadas, otimizando os recursos já desenvolvidos, melhorando a politica de processamento, seja com tomadas de decisão centralizadas, dinâmicas ou distribuídas, todas estas com o intuito de corrigir o problema do desBalanceamento de Carga gerado, o qual inviabiliza que os computadores paralelos extraiam toda sua capacidade de processamento (Padoin et al. 2017).

Dessa maneira, este trabalho apresenta uma análise do desempenho de um balanceador de carga desenvolvido no modelo de programação Charm++, comparado com outros balanceadores do Estado da Arte, salientando possíveis melhorias e adaptações que se fazerem necessárias, objetivando resultados para as métricas de análise qualitativa a serem feitas no trancorrer do processo. Portanto o escopo dessa pesquisa acaba a ser mais específíco dentro do intuíto de estar almejando uma redução do tempo de execução nos experimentos executados, dado um universo de

(18)

16

possibilidades, estas podendo abranger, balanceamento distribuído, utilização de DVFS (Dynamic Voltage Frquence Scaling) para trabalhar com a parte enérgética dos processadores em nível de hardware. De acordo com (Lara V. L 2013, Pg 26). A eficiência energética pode ser aperfeiçoada com estratégia e políticas de técnicas de Dynamic Voltage Frequence Scaling (DVFS) em nível de hardware. Em nível de software se utiliza técnicas de Balanceamento de Carga para evitar a migração de tarefas desnecessárias e consequentemente o desBalanceamento de Carga, com isso poderá de certa forma ser assegurado que todos os núcleos de processamento trabalhem de maneira aproximada, assim o tempo de execução em cada unidade irá diminuir, originando ganho de desempenho. Porém, nossa proposta busca trabalhar em cima das potencialidades dos balanceadores, otimizando suas técnicas e tomadas de decisão na migração de tarefas no escalonamento e divisão de processos.

1.2 MOTIVAÇÃO

A partir de pesquisas e estudo acerca do Estado da Arte de Balanceamento de Carga, bem como investigações mais aprofundadas com intuito de ter um maior entendimento a cerca destas linhas de pesquisa, como escalonamento de processos, computação de alto desempenho, processamento paralelo, otimização de aplicações, como também o ponto central que é o Balanceamento de Carga, utilizamos algumas lacunas não muito esclarecidas acerca do que pesquisamos para criar nossa abordagem, portanto nosso escopo de trabalho se deu a partir de pesquisas nessas áreas, com isso, acabamos remetendo a uma pergunta principal quais estratégias de Balanceamento de Carga deverão ser adotadas para atender a demanda computacional das aplicações, para ter seu desempenho aumentado, diminuindo o tempo de execução e o consumo de energia? Objetivando responder esta lacuna em questão, propomos desenvolver um novo Balanceador de carga para aplicações paralelas, almejando uma diminuição dos níveis de desbalanceamento, tempo total de execução, como também proporcionar que na estratégia tenha uma variável de controle que acabará buscando um equilíbrio mútuo nas unidades de processamento. Assim, as cargas tendem a ser distribuídas entre os núcleos de acordo com a estratégia adotada, reduzindo o desequilíbrio. Uma vez que estes parâmetros de

(19)

equilíbrio são adotados para a implementação da solução, tomamos como base satisfazer esses pontos analisados. Portanto, migrações desnecessárias não são executadas, buscando uma função que e a cada iteração se detêm em estar fazendo uma varredura das cargas nos núcleos e migrando de acordo com a necessidade.

A partir do amadurecimento nas nossas abordagens de pesquisas salientamos contribuir com uma análise aprofundada dos Balanceadores de carga centralizados oriundos do modelo de programação Charm++ comparados a nossa implementação de solução através de um algoritmo que visa contribuir no campo de balanceamento de aplicações paralelas, como uma ideia original e própria, com um conceito original e que se diferencie bem do Estado da Arte.

1.3 Método de pesquisa

O Balanceamento de Carga é uma técnica de distribuição de carga computacional e de comunicação uniformemente em todos os processadores de uma máquina paralela, para que nenhum processador seja sobrecarregado. As estratégias de Balanceamento de Carga podem ser divididas em duas categorias. Para aplicativos onde novas tarefas são criadas e programado durante a execução e aqueles para aplicações iterativas com padrões de carga persistentes (ZHENG et al., 2010).

O Balanceamento de Carga, este podendo ser descrito como técnica que trabalha com a distribuição de carga computacional, como também comunicação em processadores de uma máquina paralela, a fim de que todos processadores estejam trabalhando uniformemente, eliminando ociosidade e sobrecarga (ZHENG et al., 2010), tem sido amplamente discutido, portanto, entender de forma aprofundada e estender cada vez mais esta linha de pesquisa, analisando as estratégias do Estado da Arte já implementadas, com o intuito de potencializá-las em uma nova abordagem, levando-as como base, para novas estratégias de comunicação entre os processos e tomadas de decisão por parte do escalonamento, acabam por se apresentar alternativas para melhor dominar e entender esta área em expansão.

Conforme explica (ZHENG et al., 2011b), há diferentes tomadas de decisões de Balanceamento de Carga, uns trabalham utilizando um modelo de caminho planejado para tomada de decisões, como também existem algoritmos que tem objetivo de migrar tarefas com uma enorme carga computacional para a unidade de

(20)

18

processamento com menor carga, recomeçando até que a carga de todos os processadores atinja uma aproximação com a carga média.

Para (ZHENG et al., 2010). Técnicas e diferentes estratégias de Balanceamento de Carga podem ser analisadas e separadas em diferentes classes, basicamente se divide em programas onde os chares (tarefas) são criados e processados durante o tempo de execução, nas aplicações de testes experimentais, bem como também são presentes os que se apresentam de forma iterativa e dinâmica, trabalhando com diferentes modelos de cargas persistentes.

Dessa forma, segundo (De Oliveira Mattos, Giorgia; 2008, Pág. 33) o Balanceamento de Carga se caracteriza por ser abordado de duas maneiras, dentre estas a maneira estática, que é explorada antes da execução da aplicação, e a dinâmica, que por sua vez, trabalha aonde as tomadas de decisão do Balanceador acabam sendo feitas durante a execução da aplicação, esta que é abordada como escopo de pesquisa neste trabalho.

Portanto, este trabalho, propõem uma nova estratégia de Balanceamento de Carga centralizada, a qual leva como base as potencializadas dos Balanceadores do Estado da Arte, e tem como proposta ser desenvolvida no modelo de programação charm++, basicamente um framework para o desenvolvimento de algoritmos em c++, permitindo um ambiente para o desenvolvimento da aplicação, atribuído de testes com diferentes benchmarks.

1.4 Objetivo

Analisar os Balanceadores de carga do Estado da Arte, bem como utilizar o modelo de programação paralela charm++ para implementar um Balanceador de carga, almejando a diminuição do tempo total de execução, afim de se obter o máximo de desempenho, levando em consideração o desbalanceamento do processador, a quantidade de tarefas migradas e demais características a se considerar para a implementação, comparação e análise no Balanceamento de Cargas.

(21)

1.5 Organização do trabalho

O Capítulo 1, apresenta-se a Introdução do trabalho, que contempla uma breve contextualização ao assunto, descrevendo detalhadamente cada parte do trabalho e demonstrando o problema definido, os objetivos, a proposta da solução, bem como o escopo do trabalho na motivação, agregado do método de pesquisa, como também desta seção de organização do trabalho.

Já o Capítulo 2, aborda o Estado da Arte, se detêm na análise e descrição das ferramentas utilizadas, uma revisão bibliográfica dos estudos para desenvolvimento desta proposta, como também o ambiente de desenvolvimento da aplicação, Balanceadores do Estado da Arte, já implementados e discutidos, a computação de alto desempenho, sendo relacionados na abordagem a temas destes tópicos, porém mais especificamente sobre o Balanceamento de Carga, sendo os tópicos e textos descritos e analisados abordando uma visão de fundamentação das suas escolhas, objetivando os resultados esperados.

No Capítulo 3 Metodologia, são feitas as comparações entre as ferramentas utilizadas no desenvolvimento, o ambiente de testes, descrevendo as tecnologias utilizadas na realização e finalização dos testes, descrição dos Balanceadores de carga comparados com a solução proposta, e outras configurações demais.

A descrição do processo de desenvolvimento da aplicação é feita no Capítulo Estudo de Caso. Nele é descrito a contextualização referentes ao desenvolvimento, estratégia adotada, bem como a tomadas de decisão do Balanceador de carga, suas potencialidades, todo seu funcionamento e demais atributos a serem descritos.

Os resultados deste trabalho são descritos no Capítulo Resultados, analisando as ferramentas utilizadas no desenvolvimento, como também as diferenças observadas nas comparações com os dados experimentais nos testes, e O último capítulo trata das considerações finais do desenvolvimento deste trabalho, bem como os resultados alcançados, acompanhado dos pontos a serem melhorados em versões para trabalhos futuros.

(22)

2 ESTADO DA ARTE

Este capítulo está dividido em três Seções, o mesmo descreve o referencial teórico do presente trabalho. A Seção 2.1 apresenta um conceito básico sobre escalonamento de processos e suas características, para um embasamento e melhor entendimento do escopo do trabalho. A Seção 2.2 aborda o assunto principal deste trabalho, o Balanceamento de Carga, aonde é feita uma introdução acerca do assunto, é apresentado os diferentes conceitos e características, as estratégias de balanceamento, como também é abordado os problemas atrelados ao Balanceamento de Carga. A Seção 2.3 apresenta os conceitos básicos sobre processamento paralelo, os modelos de programação paralela, descreve o Charm++, modelo utilizado para o desenvolvimento do algoritmo de solução de Balanceamento de Carga, abordado neste trabalho.

2.1 ESCALONAMENTO DE PROCESSOS

Ao escalonamento de processos é uma das técnicas mais espetaculares nos sistemas multiprogramados, pois estratégias para articular as tomadas de decisão quanto a tarefas sendo processadas nos sistemas operacionais envolve muitos quesitos frente a uma boa política de escalonamento conseguindo fazer uso de toda capacidade computacional de um sistema.

2.1.1 O Escalonamento de tarefas em Sistemas Computacionais

Para (Pinedo, Michael L., 2005 pp. 3-4). O Escalonamento de Processos e/ou Agendamento de tarefas em uma unidade central de processamento (CPU), acaba sendo uma das funções primordiais em sistemas operacionais, tanto para computação paralela, de alto desempenho ou linear. O trabalho que a CPU detém sobre as tarefas é agendar o tempo que a mesma dedica aos diferentes programas que precisam ser executados, no entanto geralmente estas aplicações não são conhecidas antecipadamente, consequentemente sendo aleatórias, ou seguindo um fluxo de execução de acordo com uma política de escalonamento. Porém a distribuição desses

(23)

tempos de processamento aleatório pode ser conhecida antecipadamente, como também, suas variações.

Além disso, cada tarefa geralmente possui um determinado nível de prioridade. Nesse caso, o objetivo é minimizar a soma esperada dos tempos de conclusão ponderados de todas as tarefas. Para evitar a situação em que tarefas relativamente curtas permanecem no sistema por um longo tempo, aguardando tarefas muito mais longas e com maior prioridade, o sistema operacional “divide” cada tarefa em pequenos pedaços, em vista disso, o mesmo rotaciona essas fatias na CPU para que, em um determinado intervalo de tempo, a CPU gaste algum tempo em cada tarefa, não se preocupando se um núcleo está mais sobrecarregado que o outro, dessa forma, se por acaso o tempo de processamento de uma das tarefas for muito curto, a tarefa será capaz de deixar o sistema relativamente rápido.

Podemos descrever o escalonamento de processos como:

O escalonamento é estudado e praticado em áreas do conhecimento onde se deseja atribuir ou distribuir tarefas para recursos, os quais realizarão algum processamento sobre esses serviços. O escalonamento de processos pode ser considerado, de uma maneira bem simplificada, como a atividade responsável pela alocação dos processos aos processadores. (Branco, Kalinka Regina Lucas Jaquie Castelo, 2004, p. 4).

2.1.2 O Modelo de Processos: MULTIPROGRAMAÇÃO

Conforme explica (Luiz Lima Jr, 2019). Ao escolher o processo, que é executado quando acontece a mudança de contexto (troca de processo), o escalonador geralmente opta pelo processo que possuí uma maior prioridade, no fluxo de processamento o posiciona na memória principal, neste instante os demais estão alocados em disco.

Podemos entender o modelo de processamento como:

Todos os programas que rodam em um computador (o sistema operacional, inclusive) são compostos de um conjunto de processos. PROCESSO = instância de um programa em execução + seu contexto. Este contexto é formado por: valores de variáveis; valores dos registradores do processador (PC = Program Counter e SP = Stack Pointer); e recursos (lista de arquivos abertos, alarmes pendentes, listas de processos relacionados, etc.). (Luiz Lima Jr, 2019).

(24)

22

Segundo (Luiz Lima Jr, 2019) um processo, pode ser entendido como uma "cápsula", esta contém as informações precisas para a execução de um programa. Neste contexto, pode ser entendido que diversos processos tem toda a capacidade de executar o mesmo programa. Com esse entendimento, a Multiprogramação, também conhecida por seu termo em inglês “time-sharing”, pode ser entendida como o chaveamento instantâneo do processador entre os diversos processos.

FIGURA 1 - MULTIPROGRAMAÇÃO: CPU CHAVEADA EM DIFERENTES PROCESSOS

Fonte: (Luiz Lima Jr, 2019)

Na Figura 1, podemos analisar a divisão do escalonamento entre três diferentes processos, que na multiprogramação, ganharam um tempo e disputam para processarem na CPU.

FIGURA 2 - MULTIPROGRAMAÇÃO: FLUXO DE PROCESSAMENTO

Fonte: (Luiz Lima Jr, 2019)

No fluxo da multiprogramação, Figura 2 podemos entender como funciona a troca de contexto, e a divisão entre os processos pelo escalonador de processos em uma unidade central de processamento, vale destacar que a velocidade de tempo de

(25)

execução de um processo não se caracteriza constantemente, e sim variável, tendo em vista os diversos fatores, como o tamanho, a carca, os aspectos que o processo explora da CPU, levando em consideração todas estas variáveis, o Balanceamento de Carga se torna uma solução para trabalhar em conjunto ao Escalonamento de Processos, evitando acontecer ociosidade nos núcleos de processamento, sobrecarga, e corrigindo problemas oriundos do DesBalanceamento de Carga, tornado o processamento mais equilibrado e eficiente na medida do possível.

2.1.3 Troca de Contexto

De acordo com (Luiz Lima Jr, 2019). “A mudança do processo sendo executado para um outro processo é chamada de troca de contexto”.

Pode-se dizer que: “o processador é dividido em fatias de tempo (quantum) que são alocadas aos processos, e se o quantum é esgotado, um novo processo é selecionado para execução, provocando então uma troca de contexto”. (Teixeira Andrey, Márcio, 2019).

FIGURA 3 - TROCA DE CONTEXTO

Fonte: (Luiz Lima Jr, 2019)

Na Figura 3, podemos constatar que o objetivo da troca de contexto ficou claramente ilustrado, pois destaca-se os processos em decorrência do tempo de execução divido para cada um deles.

(26)

24

2.1.4 O problema do Escalonamento de Processos

O avanço da tecnologia, principalmente no âmbito dos processadores nas últimas décadas, proporcionara profundo progresso na área da computação paralela e distribuída. A comunicação cresceu bastante, desta forma, os computadores interconectados estabelecem sistemas que alcançam satisfatórios níveis de confiabilidade, escalabilidade e poder de processamento (YAMIN, Adenauer C, 2001, Pág. 10).

De acordo com (BESTAVROS, 1997) o escalonamento pode ser caracterizado em um sistema multiprocessador podendo ser ainda mais acentuado em um ambiente de sistemas distribuídos. O escalonamento de tarefas sugere determinadas decisões que possibilitam um aumento de desempenho nos processadores, tais delas pode ser caraterizada como o Balanceamento de Carga. Portanto, podemos descrever o escalonamento de processos como:

Após um programa ter sido projetado e construído como um conjunto de tarefas que interagem, uma alocação destas nos elementos processadores precisa ser determinada. Este problema é genericamente chamado de "escalonamento", e constituir e conhecidamente um dos mais desafiadores problemas em computação paralela e distribuída. A meta do escalonamento é determinar uma distribuição de tarefas aos elementos processadores e a sua respectiva ordem de execução, de modo a otimizar aspectos pertinentes à execução paralela e/ou distribuída como um todo. O escalonamento obtido é julgado com base nos critérios de desempenho a serem otimizados, enquanto o algoritmo de escalonamento empregado é avaliado pela complexidade computacional que lhe é inerente. (YAMIN, Adenauer C, 2001, p. 10).

“O problema do escalonamento de processos em sistemas computacionais distribuídos não é novo, mas é, ainda, amplamente investigado e discutido na literatura. ” (Branco, Kalinka Regina Lucas Jaquie Castelo, 2004).

De acordo com (ZHENG, Gengbin, 2005, p. 64b). Em um único processador, são frequentemente mapeados diversos objetos com características e peculiaridades diferentes, assim sendo o agendamento dentro de um processador é realizado por meio do escalonador de processos acionado por mensagens. O gerenciador seleciona uma chamada de método e/ou de mensagem da fila, após identifica o objeto a que se destina e chama o método. Quando a chamada do método retorna, o agendador escolhe a próxima mensagem.

(27)

Os objetos podem até migrar de processador para processador em tempo de execução, geralmente sob o controle de um balanceador de carga fornecido pelo sistema, nesta abordagem utiliza o método comum, um balanceador nativo do sistema operacional, mas que não se preocupa com a ociosidade ou sobrecarga dos núcleos da unidade central de processamento, cabem bem em outras palavras destacar que a técnica de uma estratégia otimizada, destacada como o Balanceamento de Carga, escopo abordado neste trabalho é a solução para o escalonamento de processos encontre uma maneira eficiente de agendar a execução dessas tarefas para obter melhor tempo de resposta de cada tarefa, sendo assim economizando custos de tempo de processamento, energia, troca de contexto.

O problema de Balanceamento de Carga também é conhecido como problema de agendamento de tarefas (L. V. Kale, 1988, p. 8) na literatura, podendo ser entendido da seguinte maneira, ficando claro que a partir de um conjunto de tarefas e vários processadores, podendo executar as tarefas simultaneamente, o desafio surge em encontrar uma maneira eficiente de agendar a execução dessas tarefas para obter melhor tempo de resposta da tarefa, taxa de transferência e utilização de recursos.

Fundamentalmente, as soluções de escalonamento podem ser classificadas em duas categorias principais. A primeira, o escalonamento estático, se detêm de técnicas que executam o agendamento das tarefas de comunicação antes do tempo de execução, essa estratégia de escalonamento, abrange modelos de grafos e heurística que são muito utilizados com o objetivo de fazer atribuição das tarefas, porém geralmente requer um conhecimento prévio das tarefas que estão sendo agendadas, que vamos abordar posteriormente, no ponto de vista de Balanceamento de Carga na sessão 2.6 Balanceamento de Carga estático. O segundo método de escalonamento não pressupõe um conhecimento prévio sobre as tarefas agendadas e toma a decisão de agendamento em tempo de execução. Esses esquemas de agendamento são conhecidos como estratégias de Balanceamento de Carga dinâmica, que vamos abordar posteriormente, com uma visão mais centrada em Balanceamento de Carga na sessão 2.7 Balanceamento de Carga dinâmico.

(28)

26

2.1.5 Escalonamento Estático e Dinâmico

Nesta seção iremos dar um esclarecimento geral acerca dos tipos de escalonamento, os escalonamentos estático e dinâmico, as suas características, bem como seus potenciais.

2.1.5.1 Escalonamento Estático

O escalonamento considerado estático, é quando o escalonador toma todas as decisões de escalonamento, antes da inicialização da execução da aplicação, dessa maneira acaba gerando de antemão uma tomada de decisão fixa, imutável, que por sua vez o mapeamento das tarefas já aconteceu. Portanto, com as tarefas fixas alocadas no processador não serão passíveis de migração e/ou interrupção até que o fluxo de execução acabe.

O algoritmo para este determinado tipo de escalonamento leva em consideração pontos importantes, veja bem, o mesmo executa uma espécie de planejamento anterior a tomada de decisão, neste sentido tendo uma clareza dos padrões de comunicação entre os processos, o tempo médio de execução da aplicação paralela, bem como toda a dependência entre as tarefas, tendo assim uma visão ampla do comportamento do sistema de uma forma previsível, tomando decisões não adaptadas e sim centralizadas. Esta abordagem apresenta algumas desvantagens como a falta flexibilidade e comunicação, sendo tudo fixo e nada dinâmico, apresentando a dificuldade de modificação para melhor adaptação da tarefa no processador.

Por outro lado, este aspecto de tomada de decisão leva algumas vantagens, estas podem ser descritas como resultar em uma sobrecarga mínima no tempo de execução, os custos pertinentes a comunicação entre os processadores, ou a contenções no acesso a memória são baixos, o custo de comunicação entre processadores é primordial na caracterização do sistema, portanto esta abordagem apresenta custos computacionais viáveis, porém soluções não muito aproximadas da expectativa de solução ótima.

(29)

2.1.5.2 Escalonamento Dinâmico

No processo de aplicação, o escalonamento considerado dinâmico, apresenta uma adaptação fácil a migração e comunicação de tarefas em tempo de execução, e aos requisitos variáveis das tarefas por suas tomadas de decisão acontecerem em tempo de processamento. Durante a execução é feito a alocação dos processos entre os núcleos das unidades de processamento, bem como apresenta eficiente dinamismo, por se caracterizar a soluções não determinísticas.

A ideia central de tomar as decisões em tempo de execução acarreta custos, o que apresenta um custo extra ao SO durante o processamento da aplicação, esse custo propriamente dito remete-se as operações do escalonador, as trocas de comunicações e mensagens entre as tarefas e demais processos pertinentes a esta característica de abordagem. Apresenta dificuldades como detecção de sobrecargas, sendo uma estratégia complexa, por não ter uma visão ampla dos objetos anterior ao processamento e decidir tudo em tempo de execução. Como vantagens esta caraterística apresenta a fácil dinamicidade comportamento relativo aos aspectos de processamento e troca de informações no tempo de execução, como suportando as diferentes variáveis das tarefas neste contexto de tempo de execução.

2.1.6 Parâmetros de Escalonamento

Qualquer Algoritmo de Escalonamento de Processos visa um equilíbrio mútuo entre as unidades de processamento, mantendo ocupados todos os núcleos, se esforçando para manter um nível de desBalanceamento de Carga o mínimo possível, evitando assim, cores ociosos e/ou sobrecarregados, aplicando a política e estratégia estabelecida. Os algoritmos definem como será feito o escalonamento, manipulando as tarefas se objetos nos processadores (Song et al, 1997 p. 9).

Para o gerenciamento de recursos, o escalonamento é definido com um recurso segundo Casavant; Kuhl 1988. Essa gerência dos recursos é feita mediante uma politíca permitindo o acesso dos consumidores. “ Esses recursos mencionados são: processadores, memórias, rede de comunicação, os consumidores representam os usuários que utilizam as aplicações ” (Souza, 2000, p. 14).

(30)

28

FIGURA 4 - O ESCALONAMENTO SISTEMATIZADO

Fonte: O escalonamento segundo (Casavant; Kuhl, 1988). Extraída (Souza, 2000, p. 15).

Nesta Figura, podemos analisar as variáveis e aspectos levados em consideração no algoritmo de escalonamento, dividindo-se em dois grupos de parâmetros, os de política, os quais levam em consideração a tomada de decisão da solução, se a mesma é centralizada, distribuída, híbrida, entre outras abordagens da literatura, em outras palavras define as procedências para ocorrer o escalonamento, por outro lado temos os aspectos do mecanismo que pode ser dito procedimentos necessários, ao qual podemos chamar de Balanceador de carga propriamente dito, o qual leva em consideração as cargas dos processos, a migração de tarefas, a comunicação entre os núcleos, as métricas adotadas de tomadas de decisão como média, soma, dentre outras e a comunicação das tarefas nos processadores.

FIGURA 5 - PARÂMETROS DO ALGORITMO DE ESCALONAMENTO

(31)

2.2 Balanceamento de Carga

Nesta Sessão vamos apresentar todos os conceitos importantes de conhecimento sobre o Balanceamento de Carga, que é o assunto principal de abordagem deste trabalho. Diferentes abordagens têm sido desenvolvidas para realizar o Balanceamento de Carga e reduzir o tempo de execução das aplicações. Entre elas destacam-se as centralizadas (A. Bhatele, 2018) e as Distribuídas (J. M. Bahi, 2005).

Por outro lado, abordagens hierárquicas vêm sendo propostas almejando reduzir a sobrecarga das demais abordagens (G. Zheng, 2011).

2.2.1 Visão geral do Balanceamento de Carga

Pelo fato de várias aplicações distribuídas em diferentes campos no âmbito científico estarem sofrendo devido ao desequilíbrio de carga, diferentes estratégias de Balanceamento de Carga vem sendo estudadas e implementadas, estas apresentam um potencial otimista por serem técnicas amplamente usadas para obter uma melhor distribuição de tarefas nos processadores, pois bem, de fato estas almejam reduzir de maneira significativa o desequilíbrio da carga, se detendo em impedir a sobrecarga em cima dos processadores, evitando a excessiva migração de tarefas, quando são paralelizadas (citar Vinicuis, Eu e Padoin Salao 2018), controlando estes impasses através de um comportamento adaptativo e específico, implementado com base a ter uma atenção nos recursos de comunicação, migração e escalonamento de tarefas.

Estas mudanças em nível de software desempenham seus recursos em cima dos sistemas desbalanceados, estes podendo ser contextualizados como simulações, predições, porém com características de técnicas de pesquisa para levantamento de dados, colhidos e analisados com um intuito específico de aumentar o aproveitamento do potencial dos sistemas computacionais nos níveis de tempo de execução e processamento (Citar Pilla 2015), desta maneira os mesmos acabam sendo extraídos a fim de se tomar uma decisão uniformemente, por conta disso o problema anteriormente mencionado que acaba afetando o desempenho da aplicação, como também influência sobre a sua escalabilidade, impacta na eficiência e potencial de todo um sistema paralelo.

(32)

30

Conforme (Kale and Krishnan 1993, Pg 96). Grandes sistemas, planejados para uma escala superior, agregam estratégias que trabalham de forma distribuída visando processar o maior número de tarefas no menor tempo possível, buscando melhorar o desempenho nessa larga escala, logo, os supercomputadores trabalham com um imenso número de processos, decorrente disso, a forma de trabalhar dessas estratégias se basea em unidades de processamento, ou seja, os núcleos do processador, como resultado essas técnicas se baseam em trocar informações somente com seu vizinho mais próximo, essa medida busca descentralizar o processo de Balanceamento de Carga e ter como resultado uma menor sobrecarga no Balanceamento de Carga comparado a estratégias centralizadas.

FIGURA 6 - O DESBALANCEAMENTO PRESENTE NOS PROCESSADORES

Fonte: (Shivaratri et al., 1992)

Na Figura podemos perceber o desequilíbrio indicado como problema central na capacidade de extrair todo potencial de processamento dos sistemas de computação de alto desempenho pode significar em uma redução no desempenho dos processadores devido a se tornarem ociosos enquanto outros permanecem sobrecarregados, e esta conduta acaba causando um gargalo no fluxo de execução da aplicação, este acaba acontecendo por que um determinado processo tem mais instruções que o outro e a política de escalonamento dividiu as tarefas de forma equivocada entre as unidades de processamento, definindo faixa etárias de tempos de processamento erroneamente.

Com o objetivo de reduzir este problema o Balanceamento de Carga surge como uma solução viável, evitando que a utilização dos recursos computacionais fique

(33)

de forma desproporcional, garantindo um melhor aproveitamento do potencial dos supercomputadores (WILKINSON; MICHAEL, 2005).

2.2.2 Fundamentos do Balanceamento de Carga

O termo Balanceamento de Carga (BC), pode ser descrito como o equilíbrio na distribuição de cargas no processamento e comunicação de tarefas em um sistema paralelo, com o objetivo de diminuir a sobrecarga e a ociosidade no processador (Gomes, Roberto de Quadros; 2014 Pág. 39). Decorrente dos avanços tecnológicos, de fato grande parte das aplicações paralelas envolvem comportamentos dinâmicos, através de simulações, cálculos complexos que exigem grande poder de processamento. Enfim, estes fatores influenciam a aplicação a apresentar um nível de desBalanceamento de Carga significativo, pois a quantidade de tarefas e variáveis acarretam a este estado.

Desta forma, algoritmos de Balanceamento de Carga, tornam-se essenciais para corrigir os problemas apresentados por estas máquinas paralelas, pois pretende-se igualizar a quantidade de comunicação e migração de tarefas consciente e pretende-se necessário, controlando a comunicação de tarefas a medida que a simulação e executada (Kale and Zheng 2009).

Eventualmente as estratégias de Balanceamento de Carga vem integradas nativamente aos sistemas operacionais, os quais possuem inclusive mecanismos nas políticas de escalonamento de processos não muito apurados no intuito de otimização, sobretudo gerenciam de uma certa maneira eficiente as tarefas, porém não resolvem o problema de desequilíbrio de tarefas no processador, tanto quanto, muitas vezes acabam fazendo suposições errôneas sobre as divisões de cargas, em virtude disso, frequentemente se equivocando e precipitando na migração de tarefas nas unidades de processamento (Olga Pearce et al.; 2012 p. 185a).

Nesse sentido, na maioria das vezes a tomada de decisões das estratégias nativas dos sistemas operacionais tem o compromisso de fornecer informações precisas ao gerenciador de tarefas e a unidade central de processamento, sobretudo, tem de informar detalhadamente, quando e de que forma equilibrar e dividir as cargas

(34)

32

dos processos das aplicações. Por outro lado, mecanismos independentes de aplicação medem a carga da aplicação sem nenhum conhecimento prévio dos elementos da aplicação (Olga Pearce et al.; 2012 p. 185b), o que acaba por ser um fator limitante quanto a poder identificar e agir no desequilíbrio de carga com o objetivo de corrigi-lo.

Primordialmente é fundamental existir em computação de alto desempenho, uma política que trabalhe com o equilíbrio de carga para o melhor e mais otimizado desempenho em grandes sistemas paralelos. Um desequilíbrio nos supercomputadores mais rápidos da atualidade pode forçar centenas de milhares de núcleos a ficarem totalmente inativos, portanto, com esses núcleos ociosos acaba que força aos demais núcleos processarem toda a informação passada, assim é bem provável que estes simultaneamente apresentarão uma sobrecarga no seu processamento (G. Zheng et al; 2010 p. 436).

Diante disso, melhorar o equilíbrio de carga requer um entendimento detalhado da quantidade de carga computacional por processo e da simulação de um domínio da aplicação, embora nenhuma métrica existente é responsável por ambos os fatores (Olga Pearce et al.; 2012 p. 185c). Por esta causa este trabalho vem a proporcionar através de otimização de diferentes estratégias demais métricas e maneiras de resolver o desequilibro das cargas nos processadores, comprovando com dados experimentais em aplicações de simulação e reais resultados para o estudo.

2.2.3 Balanceamento de Carga Estático

Em um sistema paralelo os algoritmos de Balanceamento de Carga com característica estática, no processo de fluxo de execução da aplicação alocam as tarefas se baseando na carga neste momento atual das tarefas.

Neste método, o desempenho dos processadores é definido no início da execução. O objetivo do método de Balanceamento de Carga estático é reduzir o tempo de execução total de um programa atual, enquanto minimiza o atraso de comunicação. A desvantagem geral de todo o esquema estático é que a alocação de um processo é feita, enquanto o processo é criado e não pode ser mudada durante a execução do mesmo.

(35)

Como desvantagens, esses mecanismos não são adequados para um ambiente onde as cargas podem variar significativamente em determinados momentos do dia, algoritmos estáticos só funcionam bem quando não há muita variação na carga nas estações de trabalho (Lee, B.; 1995).

A simplicidade acaba que se destacando, neste tipo de estratégia, pois desta maneira, em termos de implementação, considerando a migração de tarefas e toda a sobrecarga gerada no escalonamento de processos em determinados núcleos de processamento, não há necessidade de monitorar constantemente as estações de trabalho para obter estatísticas de desempenho (Malik, S., 2000; p. 4)

2.2.4 Balanceamento de Carga Dinâmico

As estratégias de Balanceamento de Carga dinâmico, tem por característica manipular alterações na distribuição do trabalho, fazendo uso das informações de carga atuais nos supercomputadores em tempo de execução para tomar as determinadas decisões na distribuição e migração de processos (Dandamudi, S.; 1997). As vantagens em comparação as estratégias estáticas, apontam uma melhoria bastante significativa no desempenho, mesmo tendo uma sobrecarga em coletar e manter informações de cargas atuais.

2.2.5 Balanceamento de Carga DISTRIBUÍDO

No Balanceamento de Carga distribuído a troca é entre processadores próximos, como comunicação de nós ou vizinhos próximos, tornando a abordagem totalmente escalavel. As estratégias de Balanceamento de Carga distribuídas são baseadas em componentes de decisão replicados, cada um com o mesmo comportamento de amostra e capaz de atividade autônoma e síncrona. A meta de Balanceamento de Carga é perseguida localmente: o escopo das ações para cada decisão é vinculado a uma área local do sistema. (ZHENG, Gengbin 2005)

(36)

34

2.2.6 Balanceamento de Carga CENTRALIZADO

Existem diversas formas de se realizar Balanceamento de Carga. O Balanceamento de Carga global, ou centralizado, é o que faz uso de toda a informação disponível no sistema para executar suas estratégias.

Estratégias de Balanceamento de Carga centralizadas têm a vantagem de normalmente terem acesso a informações globais de carga e comunicação de todo o sistema, o que lhes permite gerar melhores decisões de Balanceamento de Carga. No entanto, estratégias centralizadas são inerentemente não escalonáveis. Eles têm as seguintes limitações quando aplicadas a sistemas muito grandes.

Esse tipo de implementação tem a vantagem de poder garantir maior precisão de balanceamento, sem criar nós mal balanceados devido à falta de informação. No entanto, nem sempre essa é a forma mais recomendada, uma vez que em sistemas muito grandes agregar toda a informação e enviá-la a um único ponto cria um gargalo, que pode tornar a estratégia muito lenta e, portanto, diminuindo sua eficiência.

Para sistemas de média e pequena escala, essa ainda é a forma mais recomendada de se realizar Balanceamento de Carga dinâmico, já que o sobre custo de agregação é mais baixo. Algoritmos centralizados podem também criar um gargalo de processamento.

Em muitos casos eles não são paralelizáveis e, quando tem que lidar com uma quantidade massiva de dados e processamento, para máquinas de petascale ou exascale, por exemplo (ZHENG et al., 2010), acabam levando mais tempo do que seria tolerável. Estratégias hierárquicas buscam solucionar parte deste problema, fazendo com que o sistema se balanceie em diferentes níveis.

(37)

FIGURA 7 - HIERARQUIA DE BALANCEADORES DE CARGA CENTRALIZADOS

Fonte: (ZHENG, Gengbin, 2005; p. 16).

2.2.7 Balanceamento de Carga: Trabalhos Relacionados

A computação paralela tem ganhado espaço tanto em plataformas com memória compartilhada quanto em memória distribuída. No entanto, muitas aplicações paralelas apresentam tarefas com diferentes demandas de processamento em suas tarefas gerando desequilíbrio de carga. Para isto, diferente abordagem de Balanceamento de Carga tem sido desenvolvida. Dentre elas destacam-se as centralizadas e as distribuídas.

Nas estratégias centralizadas a tomada de decisões de Balanceamento de Carga ocorre em um único nodo. Para isso, os dados de carga e comunicação de todas as tarefas são acumulados em um nodo específico, que executa um processo de decisão. Os balanceadores de carga Greedylb e Refinelb são os mais utilizados nesse tipo de estratégia. Greedylb usa um algoritmo de abordagem gulosa que implementa práticas de otimização combinatória. Seu algoritmo, migra objetos pesados para o processador com menos carga. Isso é repetido até que a carga de todos os nodos alcance uma carga média. Diferentemente, RefineLB usa uma abordagem baseada no refinamento de carga. Esse balanceador de carga move as tarefas dos nodos mais sobrecarregados para os menos carregados até atingir uma média utilizando um limite no número de objetos que podem ser migrados (Freitag,

(38)

36

2015). Os balanceadores AverageLB (ARRUDA, G. H. S, 2015) e SmartLB (Dos Santos, V. R. S, 2018) também adotam abordagem centralizada em suas estratégias de tomada de decisões.

2.3 PROCESSAMENTO PARALELO

De acordo com (Pinho 2012, p. 16), a computação paralela cresceu advinda dos sistemas com múltiplas unidades de processamento, aliado a tudo isso a capacidade de processamento e desempenho dos supercomputadores teve crescimento proporcional, pode ser analisado como a paralelização de tarefas ajuda no desempenho dos processadores, com migração de tarefas e paralelizando as aplicações explorou-se a concorrência com o objetivo de melhorar a eficiência no processamento paralelo.

Mediante a troca de mensagens a iteração entre tarefas pode ser feita, através da paralelização, ou até mesmo da troca de informações entre núcleos de uma mesma unidade de processamento, as unidades, portanto conversam entre si e as tarefas enviam seu estado atual e objetos são passados por parâmetro, exemplo prático dessa forma e abordagem de processamento é a linguagem de programação paralela orientada a objeto (PPOO), que usa o recurso de passagem de mensagem e utilizasse também das políticas de escalonamento do paralelismo das aplicações.

O processamento paralelo compõem-se pela atividade dos algoritmos paralelos, os compiladores que trabalham de forma paralela a interpretar os comandos advindos dos modelos de programação e traduzir para o sistema operacional de maneira que o mesmo entenda e processa o comando da forma precisa, as linguagens paralelas, bem como as arquiteturas paralelas e o mapeamento de algoritmos, com toda a junção desses itens o processamento paralelo ganha desempenho por que trabalha de maneira que se tenha resultados de forma mais rápida e eficiente possível, melhorando o tempo de execução das diversa aplicações que demandam de um poder de processamento grande por serem atividades bastante complexas como simulações matemáticas, previsão do tempo, procura de petróleo.

(39)

2.3.1 O modelo de Programação Charm++

Para (Kale, 1993, p. 4). O Charm++ se caracteriza como um ambiente para programação paralela orientada a objetos, que utiliza extensão da linguagem C++, e teve seu desenvolvimento feito pelo Laboratório de Programação Paralela da Universidade de Illinois, em 1993, este modelo tem diversas funcionalidades, comandos e módulos específicos para se trabalhar com computação paralela, além de oferecer suporte a diversas plataformas, tendo como principal característica permitir que os programas desenvolvidos neste ambiente executem tanto em ambientes com memória compartilhada quanto com distribuída(Pinho, 2012, pp 23).

De acordo com (KALE; KRISHNAN, 1993, p. 94) o Charm++ é composto basicamente por C++ sem a utilização de variáveis globais. Para (KUNZMAN et al., 2006) o Charm++ permite passagem de mensagens assíncronas, ou seja, em outras palavras as mensagens são enviadas e recebidas em intervalos de tempo não regulares, também podemos analisar a parte em que o programa se divide em chares.

Conforme descreve (PILLA; MENESES, 2015b, Pág. 26) os chares são objetos especiais semelhantes a tarefas, podendo ser executados de forma concorrente ou paralela em uma plataforma computacional, portanto, basicamente cada chare tem o trabalho de forma individual, computar um pedaço da tarefa em questão, podemos observar que se emprega o método de “dividir para conquistar”, onde as tarefas são divididas, assim a carga de trabalho é equilibrada entre os núcleos de processamento, com o intuito de processar mais rapidamente, garantindo uma melhor eficiência e desempenho no Balanceamento de Cargas.

Portanto, basicamente cada chare tem de um a vários métodos de entrada, passando mensagens entre si para gerenciar a computação de forma geral. Todas as unidades de processamento possuem um sistema de gerenciamento de tempo de execução Charm++, que funciona com o objetivo de controlar a execução, o envio e recebimento de mensagens, Balanceamento de Carga, trabalhando para todos os chares localizados em um determinado Processador.

Para (KALE et al., 1995, Pág. 4) a criação dos chares é feita de forma dinâmica, e aonde sua criação é necessária, qualquer chare está sempre disponível a processar o que for enviado no fluxo de execução para esta estrutura, portanto

(40)

38

tarefas são agendadas automaticamente e processam quando são enviadas mensagens para os chares.

O Charm++ possuí como abordagem a metodologia que tem por objetivo deter-se na medição das cargas das tarefas que estão processando nos respectivos núcleos, este processo funciona aonde o mecanismo extrai de forma automática determinadas análises e comparação de dados, ditas estatísticas referentes a cada uma das cargas computacionais, como também comunicação dos objetos, que por fim faz o armazenamento dos dados com um fluxo de persistência de informações em uma base de dados, que posteriormente pode ser acessada pelos Balanceadores para suas tomadas de decisão. (JYOTHI; LAWLOR; KALÉ, 2004)

FIGURA 8 - SOFTWARES QUE SUPORTAM BALANCEAMENTO DE CARGA DINÂMICO

Fonte: (ZHENG, Gengbin, 2005; p. 72).

Conforme (PILLA; MENESES, 2015b, p.28). No Charm++, um determinado chare que por ventura envia qualquer mensagem, após todo o processo, o mesmo não para a sua execução, como também fica despreocupado de esperar por uma resposta, em outras palavras como descrito anteriormente, a troca de mensagens entre chares e no modelo de programação Charm++ é feita de forma assíncrona, ou seja, conforme a Figura, a troca de mensagens e objetos com parâmetros é feita entre os chares 1, 2 e 3, de forma que seus métodos e chamadas acontecem de maneira imediata com retorno preciso.

(41)

FIGURA 9 - COMUNICAÇÃO ENTRE OS CHARES POR MEIO DA TROCA DE MENSAGENS.

Fonte – Adaptado (Pilla e Menezes, 2015 pp. 4)

De acordo com (KALE, 1993). Uma determinada mensagem é um conjunto de diversos campos de dados, informações e objetos, quem define o envio, retorno e chamadas das mensagens é a estratégia de agendamento, as estratégias se baseiam em prioridade, com níveis ilimitados de prioridades, com diferentes dinamismos de Balanceamento de Carga. Todas as mensagens enviadas em um núcleo por chares são alocadas em uma determinada fila de mensagens, que contém informações como

(42)

3 ESTUDO DE CASO: ALGORITMO GROUPLB

O presente capítulo, de estudo de caso, apresenta a pesquisa e implementação que ocorreu neste presente trabalho. A pesquisa se sucedeu a partir do Estado da Arte dos Balanceadores de carga centralizados. Nossa estratégia é bem diferenciada das demais, com um conceito que tem uma tomada de decisão estruturada e original. Toda a parte de validação da ideia, os protótipos e versões, bem como a forma que foi estruturado o desenvolvimento está descrita neste capítulo.

Este capítulo está divido da seguinte forma. A Seção 3.1 apresenta a motivação para o desenvolvimento deste algoritmo de Balanceamento de Carga denominado GroupLB. A seção 3.2 aborda o estudo e pesquisa utilizado para resolver o problema do Balanceamento de Carga. A Seção 3.3 apresenta a metodologia de implementação utilizada na modelagem e desenvolvimento do algoritmo. Encerrando o capítulo a Seção 3.4 demostra a explicação do algoritmo e estratégia utilizada.

3.1 MOTIVAÇÃO

Para o desenvolvimento, pensamos em uma estratégia de um balanceador de carga que se diferenciasse do Estado da Arte, muitas estratégias levam em consideração a média aritmética das cargas nos processadores, ou definem um

threshold como um limite aceitável de desbalanceamento, a ideia que almejamos teve

como base a estratégia de um balanceador de carga que tenha como característica uma abordagem de equilíbrio, dividindo os processos em grupos de acordo com as suas cargas computacionais, esta foi a base inicial, neste momento não foi pensado como seria a tomada de decisão, os desvios condicionais para que toda lógica sucedesse, apenas a ideia geral para que motiva-se a uma pesquisa mais aprofundada na literatura buscando algo original.

Portanto com a necessidade de uma nova abordagem de balanceador centralizado almejamos ganhar maior desempenho levando em consideração uma migração adaptativa entre os núcleos, migrando somente se necessário, usando uma heurística nada gulosa. De imediato almejamos executar testes iniciais buscando ganho de desempenho nos dados experimentais comparando os demais Balanceadores nativos com diferentes estratégias de tomada de decisão em relação

(43)

a este modelado e específico. Por dividir as tarefas em grupos de acordo com suas cargas computacionais denominamos o balanceador com o nome de GroupLB.

3.2 ESTUDO E PESQUISA

O estudo e pesquisa se deu a partir do Balanceamento de Carga para redução do tempo de execução e controle de migração de tarefas para aplicações paralelas, este tema tem sido objeto de muitas pesquisas atualmente e tem alcançado resultados positivos quando aplicado em aplicações que apresentam comportamento dinâmico das cargas de processamento e excessiva comunicação de tarefas. Dentre os algoritmos de Balanceamento de Carga destacam-se o aprofundamento nas estratégias centralizadas que adotam abordagens para dividir os processos entre os núcleos de processamento (Zheng et al. 2010).

As estratégias centralizadas efetuam decisões de Balanceamento de Carga em um único processador. Para tanto, os dados de carga e comunicação de todas as tarefas são acumulados sem um processador especıfico, o qual executa um processo de decisão com base nessas informações. Neste tipo de estratégia os balanceadores GREEDYLB e REFINELB são os mais citados e utilizados, os quais adotamos para comparação de desempenho com a nossa abordagem (ZHENG, Gengbin, 2005c).

No capítulo 5 que demonstrará posteriormente os resultados de comparação da nossa abordagem com as demais, destacamos o que objetivamos na nossa pesquisa, a execução do algoritmo em benchmarks que simulam dados experimentais, bem como aplicações reais.

3.3 Implementação do Balanceador

O balanceador de carga GroupLB que utiliza uma abordagem centralizada em sua estratégia, coleta informações de carga e toma suas decisões em um único processador, o mesmo amplia os mecanismos de tomada decisões dos balanceadores AverageLB e SmartLB, outras abordagens centralizadas, descritas na seção 2.2.7 sobre os Trabalhos Relacionados do Estado da Arte referentes a Balanceamento de Carga.

Referências

Documentos relacionados

Este estudo tem como objetivos identificar os níveis de trauma manifestados e de estratégias de coping utilizadas pelos TEPH; caracterizar os incidentes mais

45 Figure 18 - Study of the extract concentration in the phycobiliproteins extraction and purification using the mixture point composed of 10 wt% Tergitol 15-S-7 + 0.3

• The definition of the concept of the project’s area of indirect influence should consider the area affected by changes in economic, social and environmental dynamics induced

Por sua vez, a complementação da geração utilizando madeira, apesar de requerer pequenas adaptações do sistema, baseia-se em um combustível cujas origens são mais diversifi

Assim, cumpre referir que variáveis, como qualidade das reviews, confiança nos reviewers, facilidade de uso percebido das reviews, atitude em relação às reviews, utilidade

Desde então, vários autores deram o seu contributo, uns convergindo outros divergindo, contudo, apesar de mais de 20 anos de discurso académico e de gestão sobre o

Discussion The present results show that, like other conditions that change brain excitability, early environmental heat exposure also enhanced CSD propagation in adult rats.. The

Dessa maneira, os resultados desta tese são uma síntese que propõe o uso de índices não convencionais de conforto térmico, utilizando o Índice de Temperatura de Globo Negro e