8

Click here to load reader

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

Embed Size (px)

Citation preview

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

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

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

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

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

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.

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

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

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

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.

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

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).

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

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

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

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.