sexta-feira, 29 de agosto de 2008

Escalabilidade

RESUMO: Escalabilidade é uma característica desejável em todo o sistema, em uma rede ou em um processo, que indica sua habilidade de manipular uma porção crescente de trabalho de forma uniforme, ou estar preparado para o crescimento do mesmo. Por exemplo, isto pode se referir à capacidade de um sistema em suportar um aumento de carga total quando os recursos (normalmente do hardware) são requeridos.
A Escalabilidade, como característica de um sistema, é normalmente difícil de se definir e de forma particular é necessário definir que requerimentos específicos de demanda deverão ser dimensionados para definir a importância da escalabilidade.A escalabilidade é um assunto extremamente importante em sistemas eletrônicos, bancos de dados, roteadore, redes de computadores , etc, e implica desempenho.
Um sistema cujo desempenho aumenta com o acréscimo de hardware, proporcionalmente à capacidade acrescida, é chamado "sistema escalável".

Uso de Virtualização de Recursos Computacionais na Administração de Redes

Resumo: Escalabilidade significa adicionar hardware para manter e melhorar a performance de uma solução. Entretanto, apenas adicionar mais hardware pode não representar ganho de performance por parte da aplicação. Neste artigo, apresentar – se técnicas como o “Xen” e o “VMware” para que Tal habilidade seja vantajosa para um aproveitamento eficiente do hardware disponível.

Introdução

A virtualização de recursos computacionais é um tema recorrente em trabalhos de pesquisa e desenvolvimento envolvendo diversas áreas da computação. A abstração oferecida pelas máquinas virtuais permite mapear recursos reais de uma mesma arquitetura às necessidades de diferentes sistemas e aplicações, contribuindo para a flexibilidade, a portabilidade, a interoperabilidade, a segurança e a gerenciabilidade de sistemas de software,
Em um ambiente virtualizado, as tarefas de gerenciamento, escalonamento e alocação dos recursos disponíveis são executadas por um Monitor de Máquinas Virtuais(MMV). Este monitor virtualiza o hardware existente, oferecendo uma interface individual para cada máquina virtual, permitindo desta forma uma execução transparente e independente de uma arquitetura específica, sendo muito útil para administradores que buscam a consolidação de seus sistemas, aproveitando ao máximo o hardware disponível; alem de proporcionar um sistema mais seguro que nos casos em que os serviços executam todos sobre o mesmo sistema físico.
Dentre as soluções de virtualização mais populares atualmente, destacam-se Xen e VMware, ambas voltados à arquitetura Intel IA32.

Monitores de Máquinas Virtuais

O conceito de virtualização foi amplamente pesquisado e utilizado no início da década de 70, permitindo o compartilhamento dos recursos computacionais dos grandes mainframes entre as máquinas virtuais existentes, hoje obtém um melhor aproveitamento do alto poder computacional dos computadores modernos sendo utilizada como uma forma de interligar tecnologias. Neste contexto, a
virtualização constitui uma solução capaz de garantir a interoperabilidade entre tecnologias, de forma que o hardware virtualizado, independente da forma de implementação, possa ser acessado através de uma camada de abstração oferecida por um monitor de máquinas virtuais.
Um monitor de máquinas virtuais (MMV) é um sistema responsável pelo gerenciamento e alocação dos recursos do sistema hospedeiro entre diversas máquinas virtuais, podendo ser implementados utilizando virtualização clássica ou virtualização hospedada:

v Na implementação virtualização clássica, o monitor de máquinas virtuais é executado diretamente sobre o hardware possuindo o nível mais alto de privilégio de execução de instruções. Neste modelo, todas as chamadas de sistema são interceptadas pelo MMV para posteriormente serem executadas.

v Na implementação hospedada o monitor de máquinas virtuais executa sobre um sistema operacional existente, utilizando o nível mais baixo de privilégios. Neste modelo de implementação, o MMV utiliza tradução binária em tempo de execução para adaptar as instruções que necessitam de um maior nível de privilégios.
Xen

O monitor de máquinas virtuais Xen é baseado na abordagem clássica de
implementação de virtualização, onde o MMV possui o nível mais alto de privilégio;
o monitor Xen utiliza a técnica de paravirtualização para adaptar a execução dos sistemas operacionais virtualizados. Através da paravirtualização, Xen garante que os sistemas virtualizados não tenham acesso direto aos recursos disponíveis, permitindo desta forma uma virtualização eficiente sobre a arquitetura Intel x86.
A implementação do monitor Xen é dividida especificamente entre o monitor de máquinas virtuais (hypervisor) e os domínios Xen, que são a representação das máquinas virtuais existentes. Nesta abordagem, as máquinas virtuais são gerenciadas através de chamadas realizadas para um domínio especial, denominado Domain0, através do qual é possível inicializar e terminar máquinas virtuais. Internamente, o monitor Xen utiliza os recursos do Domain0 para ter acesso ao hardware e gerenciar a alocação de memória entre os demais domínios, a independência de hardware obtida pelo monitor Xen permite que máquinas virtuais sejam encapsuladas e migradas entre computadores com arquitetura virtualizada. Este processo de migração pode ser efetuado sem a interrupção dos serviços em execução sobre o sistema operacional virtualizado, tornando assim uma ferramenta auxiliar para administradores de redes e servidores permitindo a manutenção do hardware do computador hospedeiro quando necessário.

Vmware

O monitor de máquinas virtuais Vmware é utilizando a técnica de virtualização hospedada. O sistema é dividido em VMApp, que é a máquina virtual que executa no espaço de usuário do sistema operacional hospedeiro e VMDriver, que é um software que executa junto ao sistema operacional hospedeiro e processa as requisições feitas pelo VMApp.
A máquina virtual provida por VMware apresenta ao sistema operacional hospedado um conjunto fixo de dispositivos, como interfaces de vídeo, áudio e rede, o que anula a necessidade de desenvolvimento de novos controladores por parte do sistema operacional hospedado. Sempre que o sistema hospedado faz uma um acesso a algum dispositivo virtual, o MMV salva o contexto da máquina virtual e muda para o seu contexto (world switch), onde é feito o acesso ao dispositivo real e retornando ao contexto da máquina virtual assim que a requisição estiver completa. Utilizando essa arquitetura, VMware pode ser utilizado para executar a maioria dos sistemas operacionais disponíveis no mercado, sem necessitar de alteração do código dos mesmos.
A migração de uma máquina virtual para outro sistema hospedeiro é possível, porém com interrupção momentânea do sistema. É feita uma cópia da memória utilizada pela máquina virtual para o novo hospedeiro, bem como o estado atual da máquina virtual e o arquivo com as configurações do BIOS virtual. O sistema de arquivos da máquina virtual precisa estar armazenado em algum sistema de armazenamento compartilhado, como por exemplo um sistema de armazenamento conectado à rede - NAS.

Virtualização de Recursos e o Gerenciamento de Redes

Em ambientes distribuídos para a computação de alto desempenho, a virtualização surge como um mecanismo auxiliar na administração de clusters de computadores e grades computacionais. Em ambientes que necessitam
de gerenciamento eficiente de redes e servidores, uma arquitetura virtualizada
permite que diversas tecnologias sejam interligadas, auxiliando em diversas tarefas de administração dos recursos.
Servidores que utilizam virtualização oferecem vantagens em diversos aspectos como segurança e integridade dos processos em execução através da utilização de monitores de máquinas virtuais. Um exemplo de utilização de virtualização é encontrado nos servidores IBM Power5, onde a virtualização é explorada para garantir independência e integridade dos serviços em execução através da transparência obtida com a utilização de máquinas virtuais.
Um servidor que utilize virtualização de recursos permite que cada máquina virtual
hospede um serviço independente das demais, garantindo através do isolamento de hardware que as falhas ocorridas em um serviço não se propaguem para os demais.

Conclusão

Escalabilidade significa adicionar hardware para manter e melhorar a performance de uma solução.Entretanto, apenas adicionar mais hardware pode não representar ganho de performance por parte da aplicação, por isso o uso de ferramentas de virtualização vem se tornando popular em ambientes distribuídos. A virtualização permite executar múltiplos sistemas operacionais em um mesmo computador hospedeiro, cada qual com sua própria visão da arquitetura física subjacente. Tal habilidade é vantajosa para um aproveitamento eficiente do hardware disponível, além de trazer benefícios do ponto de vista da administração de sistemas. Alem de explorar as tecnologias de virtualização em sistemas em rede, com ênfase nas ferramentas Xen e Vmware.
Maicon Nascimento de Souza 104170132
Fonte:
http://www-usr.inf.ufsm.br/~boufleur/artigos/errc2006-xen.pdf

Escalabilidade e eficiência em descoberta do conhecimento em grandes volumes de dados

Escalabilidade e eficiência em descoberta do conhecimento em grandes volumes de dados

A troca de informação e a informação propriamente dita se mostra bastante importante nos dias de hoje. Ela deve ser bem organizada e manuzeada por poderosas máquinas inteligentes. Vivemos hoje uma grande dificuldade de sobrecarga de informação, ou seja, temos muitas informações que podem ser significantes, e pouco tempo, ou capacidade computacional insuficiente para avaliá-la adequadamente. Descobrir novos e poderosos mecanismos para organizar, encontrar e analisar essa informação é essencial para encarar esse problema.
Porém, observamos também uma tendência de evolução dos mecanismos computacionais para os grandes sistemas distribuídos. Pois temos uma tendência forte para processamento paralelo. Os padrões de programação paralela e os respectivos ambientes de programação se expõem bastante inadequados para assegurar a escalabilidade e a eficiência de implementações paralelas de muitas aplicações atuais. Aplicações essas que chamamos de irregulares, já que a demanda computacional é fortemente dependente dos dados de entrada, podendo variar significamente em funções deles.
Desta forma consideramos que a extração automatizada de informações se mostra como um desafio para uma significativa parcela da comunidade de ciência da computação, abrangendo desde as arquiteturas dos computadores e das redes que os conectam até a sua aplicação a um contexto específico, passando por novos algorítimos e a sua paralelização.

FONTE: http://www.ic.unicamp.br/~cmbm/desafios_SBC/wagnermeira.pdf
Ivonei Silva Nunes/ 106040332

Escalabilidade



A escalabilidade pode ser medida em três dimensões:
1. Relação ao tamanho --> Podem-se acrescentar mais usuários e recursos ao sistema;
2. Relação à distância geográfica --> Acesso a distâncias maiores.
3. Relação à facilidade de administração --> Mesmo com inclusão muitas organizações independentes ainda continua fácil a administração.

Problemas de escalabilidade

1. Relação ao tamanho
--> Servidores centralizados
--> Dados centralizados
--> Algoritmos centralizados

Uma máquina tem informação completa sobre o estado do sistema, ou as máquinas tomam decisões baseadas em informações de outros nós, ou uma falha de um nó pode arruinar o algoritmo, ou assume-se que existe um relógio global.

Mas por vezes é inevitável ter centralização (dados confidenciais de bancos, etc.).

2. Relação à distância geográfica
Em LANs é comum usar comunicação síncrona --> o cliente envia o pedido e fica bloqueado à espera de uma resposta.
Numa WAN a comunicação pode durar três ordens de grandeza mais (centenas de milisegundos);
Se uma aplicação tem componentes centralizados fica também limitada em termos geográficos.

3. Relação à facilidade de administração
São necessários dois tipos de medidas de segurança quando o sistema distribuído se expande para um novo domínio:
--> O sistema tem de se proteger de ataques vindos do novo domínio;
--> O domínio tem de se proteger de ataques vindos do sistema distribuído.

Técnicas de escalabilidade
Três técnicas principais:
1. Esconder latência na comunicação
2. Distribuição
3. Replicação.

1. Esconder latência na comunicação
Usar comunicação assíncrona para evitar bloquear processos à espera de receber respostas.
--> Tratamento de respostas como eventos;
--> Usar várias tarefas em paralelo para continuar processamento. Na figura acima: Passar parte do processamento do servidor para o cliente melhora a escalabilidade geográfica.

2. Distribuição
Distribuir entre vários computadores os serviços e dados. Decompondo os componentes em partes menores, que são distribuídas por todo o sistema distribuído. Exemplos: DNS e Web
Nenhum servidor prestará todos os serviços nem possuirá todos os dados.
Se um servidor falhar, nem tudo está perdido.

3. Replicação
Aumenta a disponibilidade dos serviços e melhora o balanceamento de carga no sistema.
Aumenta a disponibilidade do serviço nas zonas da rede onde há réplicas.
Caching é uma forma de replicação controlada pelo cliente. A existência de várias cópias pode levar a problemas de consistência.
Se for necessário ter garantias fortes de consistência tem de se atualizar as cópias imediatamente (ex: Internet banking).



Francino Neto \ 103041061
Sistemas Distribuídos