Desempenho de um Servidor Web em Ambientes de Computação Isolados
Upcoming SlideShare
Loading in...5
×
 

Desempenho de um Servidor Web em Ambientes de Computação Isolados

on

  • 420 views

 

Statistics

Views

Total Views
420
Views on SlideShare
420
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Desempenho de um Servidor Web em Ambientes de Computação Isolados Desempenho de um Servidor Web em Ambientes de Computação Isolados Document Transcript

  • Engenharia e Administração de Sistemas de Banco de Dados Faculdade de Tecnologia / Universidade Estadual de Campinas Pg. 1 I. INTRODUÇÃO virtualização foi implementada há quase 50 anos pela IBM como forma de criar partições lógicas dos computadores mainframe em máquinas virtuais separadas que permitiam executar várias tarefas, ou seja, vários aplicativos e processos ao mesmo tempo. Como os mainframes eram recursos caros naquela época, eram projetados para o particionamento como forma de aproveitar totalmente o investimento. Com o passar do tempo, a virtualização evoluiu e chegou ao mercado com força total, representando inovação e proporcionando recursos altamente eficientes para as empresas e organizações. [5] A necessidade de virtualizar um sistema operacional surge quando se percebe que a aplicação que está em funcionamento no servidor consome apenas uma pequena parte dos recursos de hardware existentes, ou seja, haveria sobra e conseqüentemente, desperdício. Desta forma, um melhor aproveitamento seria utilizar a virtualização para compartilhar o hardware com diversas outras máquinas virtuais, e assim extrair um melhor proveito dos recursos do servidor. Na década de 90, 40 anos depois do surgimento da virtualização, uma nova infraestrutura de computação distribuída foi proposta para auxiliar o desenvolvimento científico e atividades de pesquisa. Vários modelos desta infraestrutura foram especificados, dentre elas, a Computação em Grade, em analogia às redes elétricas, em que se propõe a apresentar ao usuário como um computador virtual, mascarando toda a infraestrutura distribuída. Seu objetivo era unir tecnologias heterogêneas e geograficamente dispersas. [10] Pesquisadores da área acreditam que a tecnologia de grades computacionais seja a evolução dos sistemas computacionais atuais, não sendo apenas um fenômeno tecnológico, mas também social, pois num futuro próximo reuniria recursos e pessoas de várias localidades, com várias atividades diferentes numa mesma infraestrutura, possibilitando sua interação de uma forma antes impossível. [10] A tecnologia em grade vem sendo difundida e aperfeiçoada devido ao grande esforço do Global Grid Forum (GGF), uma comunidade formada por entidades do meio científico e corporativo que criam e padronizam tecnologias para ambientes em grade. A IBM também deu inicio aos primeiros clusters na década de 60, quando interligou seus mainframes em rede afim de que pudesse ter assim um processamento paralelo. Os clusters de computadores ganharam ainda mais força quando as três tendências convergiram nos anos 1980, microprocessadores de alta performance, redes de alta velocidade, e ferramentas padronizadas para computação distribuída de alto desempenho, juntamente com a crescente necessidade de alto poder de processamento para aplicações científicas e comerciais, unida ao alto custo e a baixa acessibilidade dos tradicionais supercomputadores. Assim como computação em grade, o termo nuvem vem da idéia de abstração. Neste sentido, a nuvem representa uma rede de algum tipo cuja estrutura não precisa ser conhecida para o usuário. No Brasil a tecnologia de computação em nuvem é muito recente, mas está se tornando madura muito rapidamente. Empresas de pequeno, médio e grande porte estão adotando a tecnologia gradativamente, sendo que o serviço que começou a ser oferecido comercialmente em 2008. Mas foi a partir de 2009 que a tecnologia evoluiu consideravelmente, incorporando funcionalidades e utilizando diversas novas tecnologias. A principal proposta do Cloud Computing - ou computação na nuvem - era a de que ninguém mais precisaria instalar programa algum em seu computador para realizar desde tarefas básicas, como mexer com editores de texto ou planilhas até trabalhos mais complexos, como edição de imagens e vídeos, pois tudo seria feito pela internet. II. OBJETIVO Verificar questões relacionadas ao desempenho de um servidor web quando executado em um ambiente de computação isolado, usando-se a rede para a comunicação cliente e servidor, usando-se um sistema de arquivo compartilhado para armazenamento das páginas e um cluster de computadores para prover o referido serviço. André Danelon e Rodrigo Figueiredo Desempenho de um Servidor Web em Ambientes de Computação Isolados A
  • Engenharia e Administração de Sistemas de Banco de Dados Faculdade de Tecnologia / Universidade Estadual de Campinas Pg. 2 III. VIRTUALIZAÇÃO A virtualização foi desenvolvida na década de 60 para utilizações em computadores de grande porte, visando obter uma melhor utilização através da criação de partições lógicas. Atualmente, os PC’s enfrentam os mesmos problemas de subutilização do hardware que os mainframes enfrentaram nos anos 60. Devido à isso, nos anos 90 foi criada a virtualização para arquitetura x86.[2] Uma definição simples seria que virtualização é o processo de executar vários sistemas operacionais em um único equipamento físico. Uma máquina virtual é um ambiente operacional completo que se comporta como se fosse um computador independente. Com a virtualização, um servidor pode manter vários sistemas operacionais em uso.[1] Uma máquina virtual se comporta exatamente como um computador físico, pois possui CPU, memória RAM, disco rígido e placa de interface de rede. Entretanto, a máquina virtual é composta inteiramente de software, ou seja, não contém componentes de hardware. As máquinas virtuais possuem algumas características e também vantagens em relação ao hardware físico. São elas: • Compatibilidade: são compatíveis com todos os computadores x86 padrão. • Isolamento: são isoladas umas das outras, como se estivessem fisicamente separadas. • Encapsulamento: encapsulam um ambiente de computação completo. • Independência de hardware: são executadas independentemente do hardware subjacente. A virtualização de computadores é amplamente utilizada para a consolidação de servidores em data centers, principalmente para reduzir custos. O principal elemento na virtualização de computadores é o hipervisor, conhecido como monitor de máquinas virtuais (VMM). O hipervisor aloca recursos do sistema para cada ambiente virtual, podendo ser instalado como uma aplicação, ou como parte do sistema operacional. A função do hipervisor é emular dispositivos, instruções, entre outros, fazendo o ambiente virtual acreditar que tem acesso exclusivo sem compartilhamento com outras maquinas virtuais.[4] A virtualização pode ser feita em quatro níveis: • Abstração da Instruction Set Architecture (ISA): Baseada em emulação, esse tipo de virtualização é implementada pela execução do sistema virtual, através de um mapeamento das instruções para o conjunto de instruções nativas. Uma consequência do uso desse tipo de virtualização é a perda de desempenho na execução das tarefas do sistema virtual. • Camada de abstração de hardware (Hardware Abstraction Layer - HAL): O hipervisor da máquina virtual simula a arquitetura completa da máquina para o sistema virtual. O sistema virtual acredita estar sendo executado diretamente sobre um hardware físico, sem perceber que é virtualizado. Esse nível de virtualização é o mais popular. Alguns sistemas desse nível são VMware, Virtual PC e VirtualBox. • Nível de sistema operacional: Nesse tipo de virtualização, conjuntos de processos são executados de forma isolada sobre o mesmo sistema operacional. A cada ambiente virtual é possível atribuir uma quantidade dos recursos físicos e programar qualquer tipo de aplicação ou serviço. A restrição principal desse tipo de virtualização é que todos os ambientes devem utilizar o mesmo sistema operacional. • Nível de Aplicação: A virtualização no nível de aplicação consiste na abstração da camada de execução. Essa solução é utilizada para fazer com que um determinado software funcione sobre qualquer sistema operacional. O principal exemplo desse tipo de virtualização é o Java Virtual Machine (JVM). Com a virtualização pode-se criar uma infraestrutura virtual, permitindo compartilhar os recursos físicos de várias máquinas entre ela. É possível criar uma infraestrutura virtual inteira dimensionando centenas de computadores físicos e dispositivos de armazenamento interconectados com um sistema de virtualização. [2] A infraestrutura virtual consiste nos seguintes componentes: Hipervisors para virtualização completa de cada computador x86; serviços de infraestrutura virtual, como gerenciamento de recursos para otimizar os recursos disponíveis entre as máquinas virtuais; soluções de automação que fornecem recursos especiais para otimizar um processo de TI específico, por exemplo recuperação de desastres. Segue uma representação gráfica de um ambiente utilizando uma infraestrutura virtual. Figura 1. Infraestrutura Virtual
  • Engenharia e Administração de Sistemas de Banco de Dados Faculdade de Tecnologia / Universidade Estadual de Campinas Pg. 3 IV. MODELOS DE COMPUTAÇÃO Grids Grids Computacionais surgiram na década de 90 da comunidade de processamento de alto desempenho (PDA), com a promessa de viabilizar a execução de aplicações paralelas em recursos geograficamente dispersos. A origem do termo Grid foi criada com base no sistema da rede elétrica (The Electric Grid), onde se usa a eletricidade sem se ter o conhecimento de onde ela foi gerada, e de forma transparente para os usuários. [8] A necessidade da criação de uma nova plataforma computacional era possibilitar através da aglomeração de recursos dispersos a execução de aplicações paralelas em uma escala simplesmente impossível em um único supercomputador. As grades computacionais podem ser definidas de dois modos. Primeiro como sendo um modo de compartilhamento de recursos e resolução de problemas em organizações virtuais dinâmicas, e o segundo como sistemas que dão suporte a criação de aplicações paralelas que agregam e fornecem recursos heterogêneos distribuídos geograficamente de forma econômica e consistente. O grid é uma forma de computação distribuída, mas ela possui características distinta sendo mais complexa do que as demais plataformas distribuídas. [8] Aspectos que evidenciam esta distribuição e complexidade são: • Heterogeneidade: Os componentes que formam a infraestrutura tendem ser extremamente heterogêneos, ou seja, deverá lidar com recursos de várias gerações, softwares de várias versões, instrumentos e serviços dos mais variados tipos. • Alta dispersão geográfica: Essa característica se refere a escala que um grid pode atingir. Grids podem ter escala global, agregando serviços localizados em várias partes do planeta. • Compartilhamento: Em contraste com soluções space-shared, um grid não pode ser dedicado a uma aplicação de forma exclusiva por um determinado período de tempo. Isso tem impacto no desenvolvimento de aplicações que executam sobre a infraestrutura de um grid Computacional. • Múltiplos domínios administrativos: Grids congregam recursos de varias instituições. Sendo assim, alem da heterogeneidade mencionada anteriormente, é possível também a existência de varias políticas de acesso e uso dos serviços, de acordo com as diretrizes de cada domínio que faz parte do grid. • Controle distribuído: Tipicamente não ha uma única aplicação/usuário que tenha poder sobre todo o grid. Isso é um reflexo da dispersão dos componentes do grid, pois cada instituição pode implementar sua política em seus recursos locais, mas não interfere diretamente na implementação de políticas no acesso aos serviços de outras instituições participantes. Um grid computer funciona como um grande computador virtual onde as aplicações são executadas. Esse computador virtual tem uma forte integração de servidores, discos e outros recursos capazes de compartilhar recursos de forma rápida e de fácil gerenciamento. Um exemplo de projeto que utiliza o processamento distribuído através de grid é o projeto SETI@home (http://setiathome.ssl.berkeley.edu), que é uma continuação do projeto da NASA em busca de inteligência extraterrestre. O Seti@home usa um software que pode ser baixado da Internet, em que um microcomputador pode analisar sinais de rádio telescópio. Atualmente, existem 1,6 milhões de microcomputadores espalhados em 224 países que contribuem com o processamento, criando um computador virtual com uma média de 10 trilhões de operações por segundo. Cluster Assim como um Grid, Cluster é um sistema distribuído de computadores independentes e interligados, cujo objetivo é suprir a necessidade de um grande poder computacional com um conjunto de computadores de forma transparente ao usuário.[10] Os clusters podem ser centralizados, quando estão em um mesmo local, com máquinas homogêneas montadas em racks, ou descentralizadas, em que os computadores estão espalhados conectados via LAN e são máquinas heterogêneas com um conjunto completo de periférico. Figura 2. Arquiteruta Generica de um Cluster Um cluster é composto por nós e cada nó possui uma função. O nó de controle, de usuário, de computação, o nó de armazenamento, o nó de instalação e o nó de gerenciamento. A figura 3 detalha a funcionalidade de cada um desses nós. View slide
  • Engenharia e Administração de Sistemas de Banco de Dados Faculdade de Tecnologia / Universidade Estadual de Campinas Pg. 4 Figura 3. Funções dos Nós em um Cluster Alguns modelos de cluster são:  Cluster de Alto Desempenho: Permite que ocorra uma grande carga de processamento com um volume alto de gigaflops em computadores comuns, utilizando sistema operacional gratuito, o que diminui seu custo.  Cluster de Alta Disponibilidade: Seus sistemas conseguem permanecer ativos por um longo período de tempo e em condição de uso. Sendo assim, podemos dizer que eles nunca param seu funcionamento, e além disso, conseguem detectar erros se protegendo de possíveis falhas.  Cluster para Balanceamento de Carga: Esse tipo de cluster tem como função controlar a distribuição equilibrada do processamento. Requer um monitoramento constante na sua comunicação e em seus mecanismos de redundância, pois se ocorrer alguma falha haverá uma interrupção no seu funcionamento. Uma das razões para se construir e utilizar um cluster ou uma combinação de cluster é quando o conteúdo armazenado é extremamente crítico e não pode ficar inacessível, ou quando os serviços precisam estar disponíveis/processados o mais rápido possível. Organizações e pesquisadores precisam incrementar sua escalabilidade, gerenciamento de recursos, disponibilidade ou processamento a um nível supercomputacional, com um baixo custo. Por exemplo, sites de comércio eletrônico freqüentemente necessitam de alta de disponibilidade e balanceamento de carga de forma escalável. Atualmente, o cluster com maior capacidade de processamento da historia foi desenvolvido pelos Cientistas da Universidade Nacional de Tecnologia e Defesa (UNTD) da China, este supercomputador duplica as capacidades do Titan, o supercomputador norte-americano, que possui 17,6 petaflops por segundo. O Tianhe-2 ou “Via- Láctea” é capaz de processar 30,7 petaflops por segundo, o equivalente a um quatrilhão de cálculos por segundo. Este será usado para processamento de dados de uma imensidade de informações, simulação de cataclismos e desastres naturais, no âmbito da segurança nacional. [11] Figura 4. Supercomputador Tianhe-2 Cloud Cloud computing - ou computação nas nuvens - é, essencialmente a ideia de utilizarmos, em qualquer lugar e independente da plataforma, as mais variadas aplicações por meio da Internet, com a mesma facilidade de tê-las instaladas em nossos próprios computadores. O termo nuvem vem da idéia de abstração, neste sentido, a nuvem representa uma rede de algum tipo cuja estrutura não precisa ser conhecida para o usuário. [12] Para computação na nuvem pode-se considerar três modelos:  Nuvem Pública: Pode-se dizer basicamente que a computação nas nuvens é um sistema composto de duas partes, o provedor da solução e o utilizador, que pode ser uma pessoa, uma empresa ou qualquer outra organização. Um exemplo desse esquema é o Google Docs, em que o usuário só precisa acessar o site para ter acesso a editor de textos, fazer planilhas e elaborar slides.  Nuvem Privada: Para o usuário uma nuvem privada se comporta da mesma maneira que uma nuvem pública, porém, os equipamentos e sistemas utilizados para constituir a nuvem estão dentro da infraestrutura da própria corporação, ou seja a organização faz uso de uma nuvem particular, construída e mantida dentro de seus estrutura. Essa nuvem pode seguir todas as regras da empresa respeitando as políticas, objetivos e outros aspectos referente a atividade da empresa. Nuvens privadas são mais comuns em grandes corporações como Microsoft, IBM e HP.  Nuvem Híbrida: Para ter um controle sobre os custos e maior flexibilização de operações as organizações podem optar também pelas nuvens híbridas. Nelas, determinadas aplicações são direcionadas às nuvens públicas, enquanto que outras, normalmente mais críticas, permanecem sob a responsabilidade de sua nuvem privada. Não é preciso utilizar apenas um tipo de nuvem quando se quer implementar um ambiente cloud. As nuvens públicas e privadas não são modelos incompatíveis entre si, ou seja, pode-se aproveitar o melhor dos dois. Cloud computing está intimamente ligada ao conceito de Software as a Service (SaaS), ou Software como Serviço. Quer dizer que, é uma forma de trabalho onde o software é oferecido como serviço. Assim, o usuário ou empresa não View slide
  • Engenharia e Administração de Sistemas de Banco de Dados Faculdade de Tecnologia / Universidade Estadual de Campinas Pg. 5 precisa adquirir licenças de uso ou mesmo comprar computadores ou servidores para executá-lo. Com este conceito, paga-se um valor periódico como se fosse uma assinatura somente pelos recursos utilizados, e/ou pelo tempo de uso. Além dessas vantagens, o hardware, instalação, atualização, manutenção, entre outros, são de responsabilidades do fornecedor do serviço. O usuário/empresa só precisa se preocupar com o acesso ao serviço, no caso, uma conexão com à Internet ou, se necessário, com a simples instalação de algum recurso mínimo, como um plugin no browser de suas máquinas. Atualmente têm-se os conceitos do SaaS utilizados por algumas companhias para diferenciar os seus serviços. São eles:  Platform as a Service (PaaS): É um tipo de solução mais amplo para determinadas aplicações, incluindo todos os recursos necessários à operação, como armazenamento, banco de dados, escalabilidade, suporte a linguagens de programação, segurança e etc.  Database as a Service (DaaS): Fornece serviços para armazenamento e acesso de volumes de dados. A vantagem é que o detentor da aplicação conta com maior flexibilidade para expandir o banco de dados, compartilhar as informações com outros sistemas, facilitar o acesso remoto por usuários autorizados, entre outros.  Infrastructure as a Service (IaaS): Similar ao PaaS, mas aqui o foco é a estrutura de hardware ou de máquinas virtuais, com o usuário tendo inclusive acesso a recursos do sistema operacional  Testing as a Service (TaaS): Oferece um ambiente apropriado para que o usuário possa testar aplicações e sistemas de maneira remota, simulando o comportamento destes em nível de execução. Os termos cloud computing e computação nas nuvens são relativamente recentes, mas já existem vários serviços oferecidos como por exemplo o Google Apps, Amazon, Panda Cloud Antivirus e iCloud. V. AMBIENTE DESENVOLVIDO Os testes foram realizados em ambientes virtualizados. O software de virtualização utilizado foi o VirtualBox, da empresa Oracle, o qual é Open Source. O VirtualBox permite a instalação e utilização de um sistema operacional dentro de outro. Para o sistema operacional, a escolha foi o Linux, com sua distribuição SLAX (Slackware). O SLAX é um Live CD, podendo ser executado sem instalação no disco rígido - ou mesmo em um computador sem disco rígido. A utilização do modo texto do SLAX implica num menor consumo de memória RAM, evitando assim interferências no resultado dos testes. Primeiro foi criada uma máquina base virtualizada, a qual serviu para a clonagem de outras cinco máquinas virtuais: - Máquina NP01: nó de processamento que irá receber uma requisição de um usuário, e irá se comunicar com o nó de armazenamento pelo balanceamento de um dos três nós de comunicação. - Máquina NC01: primeiro nó de comunicação que irá compor o cluster, para acesso balanceado ao nó de armazenamento. - Máquina NC02: segundo nó de comunicação que irá compor o cluster, para acesso balanceado ao nó de armazenamento. - Máquina NC03: terceiro nó de comunicação que irá compor o cluster, para acesso balanceado ao nó de armazenamento. - Máquina NA01: nó de armazenamento dos dados. O NIS (Network Information Service), o qual é um serviço desenvolvido pela SUN com a finalidade de disseminar informações de uma rede, foi utilizado para comunicação do cluster. Ele foi configurado na máquina NA01. Para a mudança do endereço de origem das conexões para outro destino, foi configurado o NAT Postrouting na máquina NP01. A máquina NP01, responsável pelo balanceamento, o faz através do IPVS. O IPVS ou Linux Virtual Server (LVS) é uma solução de balanceamento de carga avançada para sistemas Linux. É um projeto Open Source começado por Wensong Zhang em maio de 1998. A missão do projeto é construir um servidor de alto desempenho e altamente disponível para Linux usando a tecnologia de clustering, que fornece altos níveis de escalabilidade, confiabilidade e usabilidade. Em cada um dos 3 nós foram utilizadas 3 aplicações para os testes de desempenho do cluster: - MYSQL: sistema de gerenciamento de banco de dados (SGBD) Open Source, que utiliza a linguagem SQL (Linguagem de Consulta Estruturada, do inglês Structured Query Language) como interface. É atualmente um dos bancos de dados mais populares, com mais de 10 milhões de instalações pelo mundo. - SSH (Secure Shell): aplicação e protocolo de rede para conexão e execução remota de comandos. - Apache HTTP Server: servidor WEB compatível com o protocolo HTTP.
  • Engenharia e Administração de Sistemas de Banco de Dados Faculdade de Tecnologia / Universidade Estadual de Campinas Pg. 6 VI. TESTES Os testes foram realizados em maquinas virtualizadas em ambientes de computação isolados. Os cenários montados estão descritos abaixo: 1º Cenário: Definindo um padrão de comportamento para a interação entre o cliente e o SGBD. Execução de testes - Conexão Local com o SGDB. 2º. Cenário: Observando o impacto que a rede de comunicação proporciona no desempenho quando da interação cliente e SGBD, localizados em equipamentos distintos. Execução de testes - Conexão Remota com o SGDB (rede). 3º. Cenário: Observando o impacto causado no desempenho quando o SGBD deve manipular tabelas que estejam armazenadas em sistemas de arquivos compartilhados. Execução de testes - Conexão Remota com o SGDB (rede). 4º. Cenário: Observando o impacto causado no desempenho quando se utiliza um balanceador de carga atuando como intermediário entre o cliente e o SGBD. Execução de testes - Conexão Remota com o SGDB (cluster). 5º. Cenário: Observando o impacto causado no desempenho quando se utiliza um SGBD em um cluster de balanceamento de carga. Execução de testes - Conexão Remota com o SGDB (cluster).
  • Engenharia e Administração de Sistemas de Banco de Dados Faculdade de Tecnologia / Universidade Estadual de Campinas Pg. 7 VII. RESULTADOS Os resultados obtidos através dos testes foram bastante satisfatórios e significativos para definição de várias métricas. Abaixo seguem duas tabelas comparando os resultados encontrados. Tabela 1. Comparação entre usuário x quantidade de requisições É possível observar que em todos os cenários testados o tempo de resposta aumenta exponencialmente com o incremento da quantidade de requisições para todos os usuários. Para cada 100 incrementos nos melhores casos o aumento é em média 0,7 segundos, conforme os resultados para o usuário user, e nos piores casos o aumento chega a ser mais de 30 segundos, como mostrado no cenário 4, utilizando um balanceador de carga como intermediário entre o cliente e o SGBD, para o usuário real no incremento de 400 para 500 requisições. Os cenários 1, 2 e 3 possuem tempos muito parecidos, variando qual ambiente é o mais veloz de acordo com a quantidade de requisições e do usuário que está executando. Por exemplo, no cenário 1, que utiliza uma conexão local com o SGDB, para 100 requisições com usuário user obteve 0,616 segundos, já para 300 requisições no cenário 2, utilizando uma conexão remota com o SGDB onde o cliente fica em uma rede distinta do banco de dados, executando com usuário real obteve-se 26,127 segundos e para 500 requisições o cenário 3, que utiliza um armazenamento de tabelas compartilhado, com o cliente, SGDB e armazenamentos em redes distintas, mostrou-se mais eficiente ao executar em 6,008s com o usuário sys. Os cenários 4 e 5 utilizando o usuário real tiveram resultados extremamente lentos. Os testes com mais de 300 requisições o tempo passa de um minuto e para 500 requisições chega a demorar mais de dois minutos. Porém, nesses ambientes entre o usuário sys obtiveram-se os melhores tempos quando as quantidades de requisições são maiores do que 300, conforme exemplo no cenário 5, utilizando um cluster de balanceamento de carga para as requisições feitas no SGBD, com armazenamento em ambiente compartilhado e nós de cliente, balanceamento, computação e armazenamento em redes distintas, para 500 requisições o tempo de execução foi de 5,932 segundos e no cenário 4, em que os nós também estão em redes distintas com um balanceador de carga entre o cliente e o SGDB e armazenamento compartilhado, foi de 5,960s. Abaixo segue outra tabela fazendo uma comparação entre os usuários com os cenários testados pela quantidade de requisições. Cenários x Usuario 1 100 200 300 400 500 1 x Real 0.131s 9.497s 19.366s 19.366s 35.877s 44.359s 2 x Real 0.214s 8.669s 17.406s 17.406s 34.947s 43.760s 3 x Real 0.168s 9.124s 18.672s 18.672s 36.688s 45.921s 4 x Real 0.259s 24.150s 52.903s 52.903s 1m47.510s 2m22.131s 5 x Real 1.069s 23.822s 48.162s 48.162s 1m38.325s 2m8.951s 1 x user 0.000s 0.616s 1.260s 1.960s 2.536s 3.060s 2 x user 0.008s 0.644s 1.240s 1.884s 2.640s 3.156s 3 x user 0.008s 0.764s 1.500s 2.320s 2.952s 3.808s 4 x user 0.008s 0.812s 1.624s 2.296s 3.020s 3.996s 5 x user 0.008s 0.752s 1.500s 2.416s 3.312s 3.992s 1 x sys 0.040s 1.380s 2.936s 3.948s 5.020s 6.392s 2 x sys 0.076s 1.344s 3.080s 4.520s 5.684s 7.456s 3 x sys 0.052s 1.212s 2.808s 3.420s 5.024s 6.008s 4 x sys 0.024s 1.168s 2.248s 3.548s 4.748s 5.960s 5 x sys 0.024s 1.240s 2.424s 3.380s 4.736s 5.932s Tabela 2. Comparação entre cenários x usuários x quantidade de requisições Nesta tabela é possível analisar que o utilizando o usuário real os tempos de execuções foram mais lentos em todos os cenários, e que utilizando o user obtiveram-se os melhores resultados. Comparando os resultados para o mesmo usuário entre os ambientes têm-se entre os mais lentos, os cenários 4 e 5. Assim o cenário 5, utilizando um cluster de balanceamento de carga com os nós em redes distintas é o mais lento para poucas quantidades de requisições, já o cenário 4, com um Cenário 1 1 100 200 300 400 500 real 0.131s 9.497s 19.366s 27.420s 35.877s 44.359s user 0.000s 0.616s 1.260s 1.960s 2.536s 3.060s sys 0.040s 1.380s 2.936s 3.948s 5.020s 6.392s Cenário 2 1 100 200 300 400 500 real 0.214s 8.669s 17.406s 26.127s 34.947s 43.760s user 0.008s 0.644s 1.240s 1.884s 2.640s 3.156s sys 0.076s 1.344s 3.080s 4.520s 5.684s 7.456s Cenário 3 1 100 200 300 400 500 real 0.168s 9.124s 18.672s 27.388s 36.688s 45.921s user 0.008s 0.764s 1.500s 2.320s 2.952s 3.808s sys 0.052s 1.212s 2.808s 3.420s 5.024s 6.008s Cenário 4 1 100 200 300 400 500 real 0.259s 24.150s 52.903s 1m18.516s 1m47.510s 2m22.131s user 0.008s 0.812s 1.624s 2.296s 3.020s 3.996s sys 0.024s 1.168s 2.248s 3.548s 4.748s 5.960s Cenário 5 1 100 200 300 400 500 real 1.069s 23.822s 48.162s 1m12.238s 1m38.325s 2m8.951s user 0.008s 0.752s 1.500s 2.416s 3.312s 3.992s sys 0.024s 1.240s 2.424s 3.380s 4.736s 5.932s
  • Engenharia e Administração de Sistemas de Banco de Dados Faculdade de Tecnologia / Universidade Estadual de Campinas Pg. 8 balanceador de carga entre o cliente e o SGDB e armazenamento compartilhado para quantidades acima de 100 requisições é o que tem o pior desempenho utilizando o usuário real. Já entre os ambientes mais rápidos, o cenário 1, que utiliza cliente, SGDB e armazenamento local, para quantidade de 1 a 200 requisições é o mais eficiente, entre 300 a 400 requisições o cenário 2, utilizando cliente em rede diferente e o SGDB e armazenamento local é o mais veloz e o cenário 1 volta a ser o mais rápido para quantidades de requisições maiores do que 500 entre todos os ambientes com o usuário user. VIII. CONCLUSÃO Com a tendência das tecnologias de computação paralela, os pesquisadores e as organizações estão a todo tempo em busca de novas soluções para os problemas do dia a dia. Assim como as virtualizações que surgiram há mais de 50 anos, e ajudam intensamente nas soluções atuais com melhores funcionalidades e maior eficiência. As plataformas de computação distribuída possuem um custo relativamente baixo e performances extremamente altas, o que leva ao interesse de toda comunidade científica e pessoas do mundo de negócios a investirem bastante nessas tecnologias. Com os modelos de computação paralelos utilizados hoje em dia, os grids, cluster e o mais atual cloud estão surgindo vários programas mundiais de pesquisas, principalmente focado em cura de doenças, como HIV, e na busca de vida em outros planetas, utilizando computadores dispersos em todo o planeta através do processamento paralelo. Para analisar performances de processamento paralelos, especificamente da arquitetura de cluster de computadores, foi montando um ambiente isolado para realização de testes, de um servidor web. Foram montados 5 cenários, com conexão local entre cliente, SGDB e armazenamento; conexão remota do cliente com o SGDB; conexão remota com o SGDB e armazenamento compartilhado; outro ambiente utilizando um balanceador de carga entre o cliente e o SGDB; e por ultimo um ambiente com cluster de balanceamento de carga com três nós de computação. Com os testes foi possível observar que para a maioria das quantidades de requisições (poucas ou grandes) o ambiente com conexão e armazenamento local foram os mais eficientes, enquanto que para poucas requisições o cenário com o cluster foi o menos eficiente. Porém, ao utilizar grandes quantidades de requisições, o ambiente com cluster de balanceamento de carga obteve resultados bastante satisfatórios. Como o principal objetivo do processamento paralelo é receber e processar milhares de requisições por segundo, a diferença de performance entre computadores convencionais se torna cada vez maior com o aumento da requisições. REFERÊNCIAS BIBLIOGRÁFICAS [1] O que é virtualização e o que ela pode fazer pela minha empresa? http://www.hp.com/latam/br/pyme/solucoes/apr_solucoes_01.html acessado em junho de 2013. [2] VMware, Conceitos de virtualização. http://www.vmware.com/br/virtualization/virtualization- basics/history.html acessado em junho de 2013. [3] VirtualBox. Welcome to VirtualBox. http://www.virtualbox.org/, acessado em junho de 2013. [4] Tecnicas de Virtualização e Autoconfiguração para o Projetos de Redes. http://www.gta.ufrj.br/ftp/gta/TechReports/Natalia11/natalia11.pdf acessado em junho de 2013. [5] Introdução à Virtualização, http://ricardoconzatti.com/blog acessado em junho de 2013. [6] Grid Computing Info Centre, http://www.gridcomputing.com/ acessado em junho de 2013. [7] Grades Computcionais, http://www.gta.ufrj.br/grad/08_1/grades/definicao.html acessado em junho de 2013. [8] World Community Grid, http://www.worldcommunitygrid.org/ acessado em junho de 2013. [9] Grids Computacionais: da Computação de Alto a Serviços Sob Demanda, http://www.siban.com.br/destaque/16_carta.pdf acessado em junho de 2013. [10] Grid Computing, http://projetofirb.blogspot.com.br/ acessado em junho de 2013. [11] Cluster Computing , http://www.ccgrid.org/ acessado em junho de 2013 [12] Cluster: Computação de Alto Desempenho, http://www.ic.unicamp.br/~ducatte/mo401/1s2010/T2/107077-t2.pdf acessado em junho de 2013. [13] http://noticias.seuhistory.com/china-supera-estados-unidos-com-o- supercomputador-mais-potente-da-historia#sthash.sPT75Qke.dpuf acessado em junho de 2013. [14] O que é cloud computing (computação nas nuvens)? http://www.infowester.com/cloudcomputing.php acessado em junho de 2013. [15] Google Cloud Plataform, https://cloud.google.com/ acessado em junho de 2013.