MAC499 - Trabalho de formatura

Integração do módulo LUPA ao escalonador de aplicações no InteGrade

Aluno: Thiago Henrique Coraini
Orientador: Prof. Dr. Marcelo Finger



  1. Tema da monografia
  2. Resumo da monografia
  3. Objetivos do trabalho
  4. Atividades já realizadas
  5. Cronograma das atividades
  6. Estrutura esperada da monografia

Tema da monografia

Essa monografia trata do meu trabalho, numa Iniciação Científica, no projeto InteGrade [1], sob orientação do professor Marcelo Finger. O InteGrade [2] é um middleware que permite a construção de um sistema computacional distribuído utilizando-se de recursos não dedicados, e o que é mais interessante, aproveitando-se dos momentos de ociosidade desses recursos. Em outras palavras, a grade implantada com o InteGrade utiliza computadores comuns, como desktops, para compor sua capacidade computacional, porém somente utiliza os recursos desses computadores em momentos de ociosidade, de forma a preservar o privilégio do usuário dono da máquina (vale ressaltar, porém, que máquinas dedicadas inteiramente para a grade também podem ser utilizadas).

Meu trabalho no projeto, e o tema dessa monografia, envolvem uma característica particular do projeto InteGrade: um módulo, denominado LUPA (Local Usage Pattern Analyser), responsável por coletar e analisar dados sobre a utilização das máquinas não-dedicadas da grade, de forma a, com essa análise, ser capaz de realizar uma previsão sobre como será, num futuro próximo, a utilização desta mesma máquina. Fica fácil notar que, caso essa previsão seja bem-sucedida, a eficiência da grade cresce bastante: podemos evitar de executar aplicações em nós da grade que, ainda que estejam ociosos no momento, têm previsão de não manter essa ociosidade. Isso evita efeitos desagradáveis tanto para o usuário que submete a aplicação, já que caso a máquina fosse ocupada sua aplicação teria que ser migrada ou mesmo reiniciada, e também para o usuário dono da máquina, que se não perceber degradação na performance de seu computador, não terá porque impedir sua integração à grade.

Dada sua importância, o módulo LUPA já foi bastante pesquisado [3] e mesmo implementado [4], porém ao longo dos anos sua integração com o InteGrade não foi feita, ou foi feita de maneira extremamente simples, que não explorava toda sua capacidade de colaborar com a grade. Portanto, meu trabalho será permitir que o software tenha esse módulo funcionando bem e integrado de maneira eficiente, utilizando-se de um algoritmo de escalonamento que seja capaz de transformar as informações disponibilizadas pelo LUPA em ganhos perceptíveis aos usuários da grade. Outro foco do trabalho dessa monografia será expandir as funcionalidades da atual implementação do LUPA, conforme aparecerem a necessidade ou a oportunidade de melhorias durante o processo de integração.

Resumo da monografia

Como o trabalho que estou realizando neste projeto faz parte de um projeto maior, já em andamento há algum tempo, a monografia deverá certamente começar descrevendo sucintamente o que já existe no InteGrade, e principalmente o que já foi feito com relação ao LUPA, para situar os leitores no ambiente onde esta monografia se encaixa.

Já sobre meu trabalho propriamente dito, dado que este será bastante prático, a monografia em geral irá descrever as implementações realizadas, assim como os resultados de quaiquer testes que porventura forem realizados para validar o que foi feito. Minhas tarefas basicamente se dividem em duas partes, provavelmente com cargas de trabalho diferentes: primeiramente, estarei trabalhando em algumas melhorias no que já foi implementado no LUPA, porém de maneira a colaborar com minha tarefa principal, a de integrar o LUPA com o escalonador do InteGrade da maneira mais inteligente e eficiente possível.

Um dos problemas que a implementação do LUPA atual apresenta é, pela forma como realiza a previsão sobre os dados coletados, ser incapaz de prever um número razoável de horas quando a consulta é feita num horário próximo do fim do dia. Já discuti com o professor Marcelo um algoritmo para contornar esse problema, e a monografia irá conter dados que, espero, comprovem que esse algoritmo funciona bem, mantendo as previsões com um bom grau de acerto.

Outro ponto que deverá ser expandido na implementação atual do LUPA será a maneira como ele provê respostas sobre como estará a utilização futura da máquina monitorada. Na implementação atual, já existem basicamente duas maneiras, descritas em [4]. Algumas conversas iniciais já indicaram que possivelmente implementaremos outras maneiras de interagir-se com o módulo LUPA, ampliando sua interface, sendo que experimentos sobre tais métodos deverão ser realizados e ter seus resultados expostos na monografia. Isso será de vital importância para um desenvolvimento de um escalonador eficiente e, mais importante, adaptável a mais de uma situação.

Por fim, além do módulo LUPA, há uma antiga intenção em desenvolver-se também um novo módulo, chamado GUPA (Global Usage Pattern Analyser), que executaria no servidor central, reunindo informações proveninentes dos vários LUPA's para realizar um escalonamento ainda melhor. Porém, recentes discussões acerca de questões de privacidade dos dados sobre uso das máquinas, que possivelmente não deveriam deixar a máquina local, podem acabar por deixar de lado o GUPA. De toda forma, no momento da finalização da monografia isso certamente já terá sido decidido e estará explicado, seja com uma descrição da implementação realizada, seja com as alternativas adotadas para buscar melhorias sem o uso de um centralizador de informações.

Para tentar dar uma visão geral do módulo que pretendo implementar para realizar o escalonamento, segue uma versão simplificada de um diagrama de classes dessa parte do programa:



Basicamente, o servidor central, ao receber a solicitação de execução de uma aplicação, envia os requisitos ao módulo. A classe AnalisadorDeRequisitos faz uma análise desses requisitos, juntando as informações relevantes ao escalonador. A classe ComunicadorLUPA executa então uma solicitação de disponibilidade para o LUPA de cada nó cadastrado em NósDisponíveis, atualizando então as informações desses s. A classe ComunicadorLUPA permitirá, como discutido anteriormente, conversar com o LUPA de diversas maneiras diferentes, requisitando as informações em formatos diferentes. Com base nessas informações coletadas, o AlgoritmoDeEscalonamento realiza então um processamento, devolvendo uma lista de nós disponíveis para executar tal aplicação, caso existam. Fica claro que, com esse esquema, vários algoritmos podem ser implementados, seguindo a mesma interface, para tentar diferentes alternativas. Por fim essa lista de nós é repassada ao servidor, que irá solicitar a execução da aplicação a cada um deles individualmente.

Vale ressaltar aqui que, caso o módulo GUPA venha a ser implementado, essa estrutura mudaria um pouco, sendo que a comunicação com o LUPA seria feita solicitando-se não uma resposta sobre disponibilidade, mas sim uma grande quantidade de dados que seriam tratados pelo escalonador.

Objetivos do trabalho

O principal objetivo desse trabalho, sem sombra de dúvida, é ter uma versão do InteGrade rodando com uma boa integração com o módulo LUPA. Muito já foi feito com relação à pesquisa nessa área de análise de recursos para o InteGrade [3], e uma implementação está pronta para uso [4], porém a integração com o InteGrade hoje é praticamente nula. Na verdade, meu trabalho atual tem se concentrado em melhorar um pouco essa integração, e algo já foi feito, porém muito mais deverá ser concretizado. Já há muito tempo, os envolvidos no projeto, como os professores Fabio Kon e Marcelo Finger, reclamam do fato de o LUPA não ser devidamente utilizado no InteGrade.

Devo ressaltar aqui que a idéia é justamente, partindo de uma integração básica, refiná-la continuamente. O tema de escalonamento é bem amplo, e há muito a ser estudado, ainda mais dadas as características particulares desse projeto em si, como o uso de informações futuras para auxiliar no escalonamento. Porém pretendemos, no momento da conclusão desta monografia, ter em mãos um sistema bastante robusto e capaz de tomar decisões bastante inteligentes no momento do escalonamento.

Atividades já realizadas

Como dito anteriormente, essa monografia advém de um trabalho de iniciação científica realizado sob a orientação do professor Marcelo Finger. Muitas atividades já foram realizadas, porém nem todas com ligação direta com este trabalho. Em maratonas de programação do InteGrade, já colaborei com a solução de bugs em outras partes do código. Além disso, já estive concentrado na realização de outras tarefas, que não se relacionam com meu trabalho atual. Porém, todas essas atividades me permitiram conquistar uma boa familiaridade com boa parte do código do InteGrade, ainda que este seja bastante extenso.

Já no que diz respeito ao trabalho diretamente realizado para essa monografia, a primeira atividade que realizei foi a leitura da monografia de Germano Bezerra [3], que traz toda a teoria de análise de conglomerados por trás da implementação do LUPA. Cheguei a trabalhar algumas alterações na versão do LUPA então disponível ao InteGrade. Algum tempo depois, porém, uma nova versão [4] substituiu a anterior, sendo mais robusta e completa. Concentrei-me então em entender o código, realizando pequenas alterações e alguns testes. Posso dizer que adquiri bastante familiaridade com o código atual do LUPA, sendo que hoje tenho uma boa idéia de basicamente tudo o que está implementado. Posteriormente, comecei a realizar algumas alterações mais importantes, como a solução de alguns bugs e uma mudança na interface do módulo. Hoje, tenho trabalhado no algoritmo mencionado na seção Resumo da Monografia, para permitir consultas mesmo na proximidade do fim do dia.

Cronograma das atividades

Segue abaixo um cronograma inicial para as atividades durante o ano. Claro que ele poderá ser modificado durante a execução do projeto, porém ele me ajudará a manter o foco nas principais atividades do momento e lembrar-me do que ainda precisa ser feito. Em particular a realização dos experimentos está marcada para levar 3 meses porque imagino, a princípio, que serão experimentos que levariam pelo menos um mês para juntar dados relevantes. Logo, após um mês começaria a fazer a análise de seus resultados paralelamente à sua execução. Dependendo da automatização que eu conseguir nesses experimentos e da dificuldade ou não de sua análise, pode ser que eu prolongue a implementação do escalonador por mais algum tempo, já que esta é uma tarefa que certamente poderá ser sempre melhorada. Por fim, apesar de descrever a elaboração da monografia para os últimos dois meses, pretendo, seguindo orientação do professor Marcelo Finger, ir documentando meus passos ao longo de todo o trabalho, para que, no final, já tenha algum material a ser adicionado ao texto definitivo.

Junho Julho Agosto Setembro Outubro Novembro
Melhorias no LUPA / Escalonador básico
X
         
Implementação do escalonador mais robusto  
X
X
X
   
Realização de testes do módulo e de integração      
X
   
Projeto e realização de experimentos    
X
X
X
 
Análise dos resultados dos experimentos      
X
X
 
Elaboração da monografia        
X
X
Elaboração do poster          
X


Estrutura esperada da monografia

A estrutura da monografia será basicamente aquela descrita no roteiro para preparação da mesma. Como dito anteriomente, dada a característica desse trabalho, uma introdução sobre o projeto InteGrade em si e o que já havia sido realizado com relação ao LUPA deverá ser feita com certeza.

Depois, caso seja pertinente, irei descrever o que estudei para a realização do trabalho. Porém, como o trabalho pode tomar um rumo mais prático do que teórico, talvez essa seção seja mais resumida. Pretendo descrever então todas as implementações realizadas, assim como uma explicação mais detalhada dos possíveis algoritmos utilizados. Se tudo der certo, e eu conseguir concluir a realização de experimentos em cima do que foi feito, haverá também uma seção para apresentar e discutir os resultados.

Na parte subjetiva da monografia irei me ater à estrutura descrita no roteiro disponibilizado.

Referências

[1] InteGrade Home - http://www.integrade.org.br/portal

[2] GOLDCHLEGER, Andrei. InteGrade: Um Sistema de Middleware para Computação em Grade Oportunista. Tese (Mestrado) - Departamento de Ciência da Computação - Universidade de São Paulo. Dezembro de 2004  (link)

[3] BEZERRA, Germano Capistrano. Análise de Conglomerados Aplicada ao Reconhecimento de Padrões de Uso de Recursos Computacionais. Tese (Mestrado) - Departamento de Ciência da Computação - Universidade de São Paulo. Janeiro de 2006  (link)

[4] CONDE, Danilo. Análise de Padrões de Uso em Grades Computacionais. Tese (Mestrado) - Departamento de Ciência da Computação - Universidade de São Paulo. Janeiro de 2008  (link)