Notícias, apontadores, pensamentos e pesquisas do Laboratório de Sistemas Distribuídos da UFCG
quarta-feira, 8 de junho de 2011
Conversa LSD: Eficiência de download em comunidades BitTorrent
sábado, 4 de junho de 2011
UFCG é "bi-campeã" no SBRC

O artigo intitulado "Sobre a Amplitude da Elasticidade dos Atuais Provedores de Computação na Nuvem", de Rostand Costa, Francisco Vilar Brasileiro, Guido Lemos de Souza Filho e Dênio Mariz Sousa, foi selecionado entre os 5 melhores artigos do XXIX Congresso Brasileiro de Redes de Computadores e Sistemas Distribuídos, realizado em Campo Grande entre 30 de maio e 3 de junho. Esses 5 artigos serão publicados em uma edição especial da Revista Brasileira de Redes de Computadores e Sistemas Distribuídos editada pela Sociedade Brasileira de Computação.
No ano passado um outro artigo descrevendo pesquisa desenvolvida na UFCG também havia recebido a mesma premiação neste conceituado evento. Trata-se do artigo intitulado "Análise de Estratégias de Green Computing em Grades Computacionais Oportunistas", cujos autores são Lesandro Ponciano, Jaindson Santana, Marcus Carvalho, Matheus Gaudencio e Francisco Brasileiro.
Parabéns à UFCG, "bi-campeã" no SBRC. E que venham mais!
terça-feira, 24 de maio de 2011
LSD no SBRC 2011

Esse ano o LSD participará com 7 artigos no Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos. Quatro destes artigos serão apresentados na trilha principal do evento, e os restantes em três workshops. Aliás, um dos workshops esse ano também está sendo organizado pelo LSD (Nazareno é o coordenador do WP2P).
Seguem abaixo os artigos, com links e os respectivos temas:
Sobre a Amplitude da Elasticidade dos Atuais Provedores de Computaçãoo na Nuvem - Rostand Costa, Giuliano Maia, Guido Lemos de Souza Filho, Dênio Mariz Sousa, Francisco Vilar Brasileiro
Os provedores atuais de computacão na nuvem impõem um limite estrito na quantidade de recursos que um usuário pode adquirir concomitantemente, o que prejudica uma série de aplicações que poderiam se beneficiar de mais elasticidade. Por que a elasticidade prometida pela nuvem não é atualmente fornecida?
Análise do impacto de detectores de falhas adaptativos no OurGrid - Abmar Barros e Francisco Brasileiro
Qual o efeito do uso de detectores de falha estado-da-arte nas métricas de aplicação de sistemas distribuídos complexos? Esse estudo usa o OurGrid como estudo de caso e explora essa pergunta usando três dos detectores adaptativos mais conhecidos na literatura.
Uma Nova Políıtica de Incentivos para Grades Computacionais
Entre-Pares - Matheus Gaudencio e Francisco Brasileiro
Estendendo a rede de favores do OurGrid para melhor acomodar participantes que doam recursos apenas esporadicamente.
Computação intensiva em dados com MapReduce em ambientes oportunistas - Jonhnny Weslley Silva, Thiago Emmanuel Pereira, Carla de Araujo Souza, Francisco Brasileiro
Como executar aplicações MapReduce em ambientes não-dedicados sem transtornar usuários ou comprometer o desempenho? Esse artigo apresenta heurísticas e sua aplicação numa modificação do BashReduce, uma implementacao leve do modelo MapReduce.
Construindo Infraestruturas Computacionais Distribuídas e Seguras Baseadas em Receptores de TV Digital - Rostand Costa, Giuliano Maia, Guido Lemos de Souza Filho, Dênio Mariz Sousa, Francisco Vilar Brasileiro
Usando dados de observações empíricas, que fatores afetam a eficiência da distribuição de conteúdo via BitTorrent e como podemos analisar isso?
Estimando o Valor de uma Grade Entre Pares para a Execucao de Aplicacoes do Tipo Saco de Tarefas - Edigley Fraga, Francisco Brasileiro e Dalton Serey
Um comparativo de custo e e desempenho entre o uso de grades entre-pares e Infraestrutura como Serviço para a execução de aplicações do tipo Saco de Tarefas.
domingo, 8 de maio de 2011
Ciberciência cidadã

Talvez o exemplo mais conhecido desse tipo de atividade são os projetos de computação voluntária, como SETI@home e folding@home, onde os cidadãos doam o tempo ocioso de seus computadores ou consoles de videogame para executar aplicações científicas. O software usado no projeto SETI@home foi generalizado dando origem ao middleware BOINC que no momento é usado por cerca de 40 projetos de computação voluntária, entre eles os projetos World Community Grid, financiado pela IBM, e o Ibercivis, financiado por várias entidades na Espanha e em Portugal. Esses dois projetos têm a particularidade de serem projetos "guarda-chuva", abrigando diversas aplicações de vários domínios científicos. De 23 a 27 de maio estaremos recebendo no LSD dois membros do projeto Ibercivis que irão nos ajudar a implantar um serviço de computação voluntária no Brasil, parte da federação do projeto Ibercivis. Nesse período tentaremos também portar duas aplicações científicas para serem executadas no novo serviço: uma aplicação de bioinformática da Fundação Oswaldo Cruz e outra de gestão de recursos hídricos de nossos parceiros da UFCG.
Mais recentemente a ciberciência cidadã tem buscado um maior envolvimento dos cidadãos que vai além da simples utilização do tempo ocioso de seus computadores. A idéia é usar a capacidade cognitiva dessa grande rede de recursos para avançar a ciência. Esse tipo de atividade ganhou o nome de volunteer thinking e vai desde a ajuda para coletar dados, passando por atividades de classificação, até verdadeiras descobertas científicas. O projeto oldWeather.org, por exemplo, usa o trabalho voluntário de centenas de pessoas para armazenar em bancos de dados as informações sobre o tempo nos últimos 200 anos registradas nos diários de navios da marinha Britânica. Esses dados são muito importantes para uma avaliação consistente dos impactos que as mudanças climáticas podem trazer para o planeta. Outro projeto de volunteer thinking é o GalaxyZoo, que usa voluntários para classificar galáxias. Esses e outros projetos semelhantes estão organizados no portal Zooniverse. Finalmente, aplicações bem mais elaboradas podem tirar ainda mais proveito do trabalho de voluntários. A aplicação Foldit é um jogo que busca encontrar alvos de drogas para doenças através de uma abordagem lúdica, onde o jogador é levado a avaliar a melhor forma de acoplar proteínas.
Como resultado do evento Brasil@home, está se tentando formar uma comunidade no Brasil para fomentar iniciativas de ciberciência cidadã. Em breve essas iniciativas serão agrupadas no portal Ciência Cidadã. O serviço de computação voluntária que o LSD irá prover, deverá ser uma das primeiras ações concretas desta comunidade. Várias idéias de projetos de volunteer thinking também estão sendo discutidas. Se você tiver uma idéia de um projeto interessante, nós teremos o maior prazer de poder lhe ajudar a desenvolvê-lo.
Mais sobre a repercussão do evento pode ser visto/ouvido no video abaixo e neste programa da voz do Brasil.
segunda-feira, 7 de fevereiro de 2011
Processamento de fluxo de eventos
Eventos são mensagens que não são explicitamente endereçadas e que sinalizam a ocorrência de alguma mudança de estado em um sistema. Os eventos propriamente ditos podem de uma simples lista de nomes de atributos e valores associados até mesmo um objeto serializado de uma linguagem tipo Java.
Quando os componentes de um sistema se comunicam apenas através da geração e recebimento de eventos, diz-se que o sistema possui uma arquitetura orientada a eventos (EDA – Event Driven Architecture). Como os eventos não são explicitamente endereçados, um sistema orientado a eventos requer um canal de comunicação de eventos. Esse canal funciona da seguinte forma: (a) os componentes geradores de eventos registram no sistema de comunicação os tipos de eventos que serão gerados; (b) por sua vez, os componentes interessados em monitorar eventos de certo tipo, registram o seu interesse em receber eventos daquele tipo; (c) finalmente, quando um evento é de fato gerado, o sistema de comunicação entrega o evento a todos os componentes interessados naquele tipo de evento. Observe que o componente gerador dos eventos não conhece os componentes que receberão o evento. Esse isolamento faz com que sistemas orientados a eventos sejam fracamente acoplados.
Arquitetura orientada a eventos é muito comum em sistemas de monitoramento, pois a adição de mais monitores não influencia o sistema monitorado. Em um sistema de monitoramento, um sistema monitor observa o comportamento de outro sistema, o monitorado. O monitor precisa então observar os eventos gerados pelo sistema monitorado e interpretá-los, de forma a detectar se algo relevante aconteceu no sistema monitorado. Desta forma, é preciso primeiro coletar os eventos que este sistema observado produz e depois processar esses eventos de forma a determinar se eles sinalizam situações de interesse. Um exemplo de situação de interesse é uma queda brusca de preço em uma ação no mercado de ações. Neste caso, o sistema monitorado é o mercado de ações e o sistema monitor pode ser uma aplicação que detecta oportunidades de negócios no mercado de ações. Quando uma situação de interesse é detectada, neste caso, uma oportunidade de negócio, o sistema de monitoramento pode acionar uma atividade de resposta, por exemplo, uma compra de ações cujos preços estão atraentes.
O exemplo acima é conhecido como negociação de alta frequência (High Frequency Trading). Observe que em uma aplicação como o mercado de ações, eventos de compra ou venda acontecem constantemente, milhares de vezes por segundo. O sistema de monitoramento recebe então eventos continuamente. Por essa razão, sistemas de monitoramento baseados em eventos são também conhecidos como sistemas de processamento de fluxos de eventos. Sistemas de processamento de fluxos de eventos (no inglês, ESP – Event Stream Processing) são tipicamente compostos por um grafo de operadores. Cada operador executada parte da tarefa de processar os eventos. Exemplos de operadores são os seguintes:
- Filtros (descartam ou repassam eventos de acordo com atributos do mesmo);
- Conversores (aplicam uma função a um evento, gerando um evento de saída que possui, por exemplo, um formato diferente);
- Agregadores (combinam vários eventos, gerando um evento de saída que agrega informações de todos eles como, por exemplo, a média aritmética).
Observe que alguns dos tipos de operações acima requerem que o operador mantenha algum estado local. Por exemplo, para calcular uma média, é preciso considerar não somente o último evento, mas também os eventos anteriores (normalmente, operações de agregação são feitas considerando uma janela de eventos, por exemplo, os eventos dos últimos 10 minutos). Quando operações não tem estado, é fácil paralelizá-las, basta criar várias cópias do mesmo operador e dividir o fluxo de eventos entre eles. No entanto, quando o operador mantem um estado (no caso da média, uma janela com um determinado número de eventos), as várias cópias do operador precisam coordenar de que forma elas acessam o estado do mesmo.
Infelizmente, coordenar o acesso de várias cópias do operador a um só estado não é fácil. Se travas forem utilizadas, ou a área de código coberta por uma trava é minimizada ou pouco paralelismo será alcançado. No entanto, minimizar a área de cobertura de uma trava é difícil e é uma causa frequente para bugs não determinísticos no código. Além do problema da paralelização correta, aplicações de processamento de eventos têm frequentemente outro requisito, a ordem de processamento dos eventos é importante. Quando um operador é paralelizado com travas, a ordem de processamento dos eventos não é necessariamente a mesma de uma execução sequencial.
Durante meu trabalho de doutorado, investiguei formas de prover paralelização automática que preservam a ordem do fluxo de eventos. O resultado foi um sistema de paralelização especulativa baseado em memórias transacionais em software (STM – Software Transactional Memory). Este sistema processa eventos em paralelo de forma especulativa e monitora os acessos ao estado do operador. Quando o processamento de dois eventos não acessa posições de memória em comum, a execução paralela especulativa funcionou e a ordem foi garantida. Caso contrário, quando há interferências, o processamento do evento que deveria ser processado primeiro é confirmado e o processamento do segundo evento é repetido para considerar as modificações no estado causadas pelo processamento do primeiro. Um exemplo de interferência é quando o processamento dos dois eventos exige o incremento de um mesmo contador, neste caso, se nenhuma abordagem especial (específica para o incremento de variáveis) for utilizada, os eventos precisam ser processados sequencialmente para que o segundo considere o incremento feito durante o processamento do primeiro.
Por fim, investiguei formas de tolerância a falhas em sistemas de processamento de eventos. Como resultado, propus abordagens para a implantação de replicação ativa e passiva que aproveita os mecanismos de especulação providos pelo esquema de paralelização especulativa para reduzir o custo em desempenho da replicação.
Slides: http://www.lsd.ufcg.edu.br/~andrey/ConversaLSD_IntroESP.pdf
sexta-feira, 26 de novembro de 2010
A possibilidade de, dinamicamente, alterar a capacidade de máquinas virtuais e migrá-las de forma transparente entre servidores físicos resultou em uma maior flexibilidade computacional, minimizando a quantidade de recursos físicos necessários. Entretanto, o processo de migração e reconfiguração de máquinas virtuais tem impacto direto no desempenho das aplicações. Os algoritmos mais utilizados, heurísticas para o problema de bin-packing, levam em consideração a minimização do número de migrações e servidores físicos utilizados. A solução DSCCRD (proposta por Tiago Ferreto(2010) - PUCRS) realiza a consolidação dinâmica de servidores considerando o impacto decorrente do atraso de reconfiguração. Mas o que realmente é impactante para um data center no ponto de vista financeiro: minizar o número de servidores físicos utilizados ou reduzir os atrasos de reconfiguração decorrentes da consolidação dinâmica?O trabalho que fora apresentado na Conversa LSD de 07 de outubro de 2010 apresentou, em linhas gerais, um estudo comparativo entre o DSCCRD e um algoritmo que implementa a heurística AWF, analisando a perda financeira decorrente da implantação de cada solução num cenário de um data center.
quarta-feira, 17 de novembro de 2010
Conversa LSD - Estimando o Valor de uma Grade P2P usando Provedores de IaaS como Parâmetro de Comparação
Comparação entre duas opções para acelerar a execução de aplicações bag-of-tasks: uso de recursos remotos em grades oportunistas e a realização de cloudburst com Spot Instances (um dos modelos de negócio empregados pela Amazon).