Anda di halaman 1dari 45

Universidade Estadual de Montes Claros

Departamento de Cincias da Computao Especializao em Engenharia de Sistemas

Desenvolvimento de um Sistema de +=?DA Adaptativo Para o 5GKE@ Utilizando Algoritmos Gentico

Monograa submetida banca examinadora designada pelo Coordenador da Especializao em Engenharia de Sistemas da Universidade Estadual de Montes Claros, como parte dos requisitos exigidos para a obteno do ttulo de Especialista em Engenharia de Sistemas. por

Josu Batista Antunes

Orientador:

Prof. Ms Allysson Steve Mota Lacerda

Junho  2012

Universidade Estadual de Montes Claros Departamento de Cincias da Computao Especializao em Engenharia de Sistemas de Informao

Desenvolvimento de um Sistema de +=?DA Adaptativo Para o 5GKE@ Utilizando Algoritmos Gentico


Autor: Josu Batista Antunes Orientador: Prof. Ms Allysson Steve Mota Lacerda

Monograa

submetida

banca

examinadora

designada

pelo Coordenador da Especializao em Engenharia de Sistemas da Universidade Estadual de Montes Claros, como parte dos requisitos exigidos para a obteno do ttulo de Especialista em Engenharia de Sistemas.

Banca Examinadora
Allysson Steve Mota Lacerda, Ms. - Orientador . . . . DCC/UNIMONTES Luciana Balieiro Cosme, Ms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IFNMG Rafael Moreno Ribeiro do Nascimento, Esp. . . . . . . . DCC/UNIMONTES
Montes Claros, MG

Junho/2012

Resumo
Servios de infraestrutura de Tecnologia da Informao (TI) so cada vez mais importantes dentro das organizaes. Dentre eles, destaca-se a comunicao entre o ambiente interno e externo. Devido a restries na velocidade de acesso Internet, comum a implantao de servios de cache nas empresas, com o intuito de otimizar a utilizao do link. Um dos servios de cache mais populares o Squid que, dentre outras coisas armazena os contedos acessados no ambiente externo. No entanto, a ecincia do Squid varia de acordo com o padro de trfego, o que exige a ao peridica de um especialista para ajustar os parmetros de congurao. Este trabalho prope implementar um sistema de cache adaptativo para o Squid utilizando algoritmos gentico. Os resultados obtidos foram satisfatrios para os diversos padres de trfego utilizados.

Palavras-chave: Algoritmo Gentico Simples, Squid, Simuladores, Proxy Cache.

Abstract
Infrastructure Services Information Technology (IT) are increasingly important within organizations. Among them, there is communication between the internal and external environment. Due to restrictions in speed Internet access, it is common to implement caching services in businesses, in order to optimize link utilization. One of the most popular services is the cache squid which, among other things stores the content accessed in the external environment. However, the eciency of the Squid varies according to trac patterns, which requires periodic action of an expert to adjust the conguration parameters. This paper proposes to implement a caching system for Squid using adaptive genetic algorithms. The results were satisfactory for the various trac patterns used.

Keywords: Simple Genetic Algorithm, Squid, Simulators, Proxy Cache.

ii

Agradecimentos
Agradeo aos meus pais, Elza e Batista, aos meus irmos, a minha namorada Gislane Cerqueira, pelos incentivos. Ao meu orientador Prof. Ms Allysson Steve pela dedicao e comprometimento durante o trabalho. E a todos os amigos e conhecidos que me deram fora em todos os momentos.

iii

Sumrio
Lista de Figuras Lista de Tabelas 1 Introduo
1.1 1.2 1.3 1.4 Caracterizao do Problema Objetivos . . . . . . . . . . 1.2.1 Objetivo Geral . . . 1.2.2 Objetivos Especcos Metodologia . . . . . . . . . Organizao do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

vi vii 1
2 2 2 2 3 3

2 Cache e Squid
2.1 2.2

Cache . . . . . . . . . . . . . . Squid . . . . . . . . . . . . . . . 2.2.1 Histrico . . . . . . . . . 2.2.2 Caractersticas . . . . . 2.2.3 O Arquivo Squid.conf . . 2.2.4 Arquivo de Log do Squid

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. 5 . 6 . 6 . 7 . 9 . 11

3 Algoritmos Evolutivos
3.1 3.2 3.3

Introduo . . . . . . Base Biolgica . . . . 3.2.1 Gentica . . . Algoritmos Genticos

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

14

14 15 15 16

4 Desenvolvimento
4.1 4.2 4.3 4.4

Dados Utilizados . . . . . Ferramentas . . . . . . . . Algoritmo de Simulao do Algoritmo Evolutivo . . .

. . . . . . . . . . . . . . . . . . proxy squid . . . . . . . . . . . iv

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

21

21 23 23 25

SUMRIO

v Representao dos Cromossomos . . Avaliao e Seleo dos Pais . . . . . Operador de Cruzamento e Mutao Populao e Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 26 27 27

4.4.1 4.4.2 4.4.3 4.4.4

5 Testes e Resultados
5.1 5.2

Descrio dos Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Resultados e Anlise das Simulaes . . . . . . . . . . . . . . . . . . . . . . . . 30

28

6 Concluses
6.1 6.2

Concluses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

35

Referncias Bibliogrcas

37

Lista de Figuras
2.1 3.1 3.2 4.1 4.2 5.1 Modelo de um proxy cache, Aguiar (2010) . . . . . . . . . . . . . . . . . . . . . 8 Algoritmos Genticos no contexto da Computao Natural (adaptado), Araki (2009) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Esquema de um Algoritmo Gentico Simples (Adaptado), Linden (2006) . . . . 19 Trecho de um arquivo de log do squid . . . . . . . . . . . . . . . . . . . . . . . . 22 Fluxograma do simulador Squid . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Evoluo dos ttnes para objetos maiores que 5 KB . . . . . . . . . . . . . . . . 32

vi

Lista de Tabelas
5.1 5.2 5.3 Etapas das simulaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Amostra dos resultados obtidos na Anlise Bruta do primeiro padro . . . . . . 33 Amostra dos resultados obtidos na Anlise Bruta do segundo padro . . . . . . 34

vii

Captulo 1 Introduo
Servios de infraestrutura de - Tecnologia da Informao (TI) so cada vez mais importantes dentro de qualquer organizao. Dentre eles, destaca-se a comunicao entre o ambiente interno da organizao e os servios disponveis fora dela. A Internet umas das grandes fontes para busca dessas informaes. Assim as empresas e organizaes necessitam de uma estrutura que busque prover este acesso com qualidade e convenincia. A Web, rede de grande popularidade, quase foi arruinada devido a grande sobrecarga em servidores, roteadores e linhas, gerando retardos no acesso as pginas. Como consequncia desses retardos, os pesquisadores desenvolveram vrias tcnicas para melhorar o desempenho. Um modo simples de melhorar o desempenho gravar pginas que foram solicitadas, caso elas tenham de ser usadas novamente. Essa tcnica especialmente efetiva com pginas muito visitadas. O procedimento habitual algum processo, chamado proxy, conter o cache. Para usar o armazenamento em cache, um navegador pode ser congurado para fazer todas as solicitaes de pginas a um proxy, em vez de solicit-las ao servidor real das pginas. Se o proxy tiver a pgina, ele a retornar imediatamente. Se no tiver, ele buscar a pgina no servidor, guardando-a no cache para uso futuro e retornando a pgina para o cliente que a solicitou. O cache web tem sido utilizado amplamente na Internet por duas razes. Em primeiro lugar, um cache web pode reduzir substancialmente o tempo de resposta para a requisio de um cliente, em particular se o gargalo da largura de banda entre o cliente e o servidor de origem for muito menor do que aquele entre o cliente e o cache. Se houver uma conexo de alta velocidade entre o cliente e o cache, como em geral o caso, e se este tiver o objeto requisitado, ento ele poder entregar rapidamente o objeto ao cliente. Caches web podem reduzir substancialmente o trafego no enlace de acesso de uma instituio qualquer Internet. Com a reduo do trafego, a instituio no precisa ampliar sua largura de banda to rapidamente, o que acaba diminuindo 1

CAPTULO 1.

INTRODUO

os custos. Alm disso, caches web podem reduzir substancialmente o trfego na internet como um todo, melhorando, assim o desempenho para todas as aplicaes. De acordo com Bastos (2004), a utilizao de um servidor proxy com textitcache pode gerar uma economia entre 30 e 50% nos horrios de pico. Isso signica que para um link de 2 Mbps que est operando a plena carga e considerando uma reduo de 30%, o mesmo produziria um ganho na banda agregada de aproximadamente 600 Kbps. Uma forma de gerenciar o acesso Internet para prover um melhor uso deste recurso se d atravs dos Servidores proxy - proxies so mquinas que se apresentam como uma interface para o acesso a Internet dentro de uma organizao. Um dos servios mais populares que prov cache web denominado squid. No squid existem alguns parmetros que podem ser congurados, personalizados, com objetivo de melhorar seu desempenho - taxa de acesso ao cache web. As conguraes podem ser denidas de acordo com o trafego de cada organizao.

1.1

Caracterizao do Problema

Os recursos como largura de banda e memria disponvel para realizar cache so escassos e a otimizao destes poder trazer benefcios organizao. O que se procura oferecer uma maior largura de banda aos usurios, mas sem esgotar os recursos de memria e processamento dos servidores proxy. Uma das possibilidades escolher os parmetros corretos que devem ser alterados e seus respectivos valores, atravs de simulaes com dados dos logs de acesso no prprio squid.

1.2

Ob jetivos

1.2.1 Objetivo Geral


O objetivo geral implementar um sistema de cache que seja adaptativo a diversos ambientes com padres de acessos diferenciados, utilizando tcnicas de inteligncia computacional.

1.2.2 Objetivos Especcos


Os objetivos especcos so:

Estudar os servios de um Servidor proxy.

CAPTULO 1.

INTRODUO

Simular as funes de armazenamento em cache, troca de objetos do cache e estatsticas de (hit rate 1 ) e byte hit do Cache squid. Implementar dois algoritmos de remoo de pginas do squid cache para simulaes. Implementar tcnica de inteligncia computacional e test-la com padres de acessos diferenciados. Comparar os resultados das anlises com os resultados apresentados pelo sistema proposto. Analisar se o sistema proposto pode ser utilizado para otimizar a utilizao do cache independentemente do padro de acesso.

1.3

Metodologia

Para realizar os objetivos propostos a primeira tarefa ser analisar o funcionamento do squid e vericar a possibilidade de otimizar o seu cache atravs da alterao de alguns parmetros. Essa anlise ser feita com simulaes utilizando logs do squid e a ferramenta MatLab R2010 . Antes das simulaes dever ser realizada uma extrao dos dados teis para o escopo do estudo. Aps montar o ambiente de testes ser implementado o Algoritmo Gentico Simples para buscar os valores que proporcione o melhor desempenho do squid em determinados padres. Aps a implementao, dever ser realizada uma Anlise Bruta com simulaes am de servir de base para validar os resultados do Algoritmo Gentico Simples. Ao nal devero ser realizados os testes com Algoritmo Gentico Simples e Analise Bruta, comparando o resultados apresentados.

1.4

Organizao do Trabalho

O trabalho ter a uma organizao conforme descrito a seguir.

Captulo 2: Cache e Squid Apresenta a denio geral de Cache voltando para Web ; a ferramenta Squid com nfase na funo de cache e faz uma reviso mais detalhada em algumas caractersticas do cache do Squid. Captulo 3: Algoritmo Evolutivos. Apresenta os conceitos que envolvem os algoritmos evolutivos e os algoritmo genticos.


DEJ H=JA

- a taxa percentual de acertos ao

?=?DA, ou seja, a percentagem de acessos vlidos ao cache com MA> ?=?DA

retorno ao cliente dos dados solicitados a partir dos dados armazenados dentro do servidor

CAPTULO 1.

INTRODUO

Captulo 4: Desenvolvimento. Descreve como foi concebido e desenvolvido os algoritmos, desde os dados utilizados, ferramentas at a codicao do Algoritmo Gentico Simples e Simulador squid. Captulo 5: Testes e Resultados. Mostra como foram realizados os testes e apresentam os seus respectivos resultados. Captulo 6: Concluses e Trabalhos Futuros. Descreve as diculdades, apresenta as possveis reas para trabalhos futuros e a concluso do trabalho.

Captulo 2 Cache e Squid


2.1 Cache

Segundo Tanenbaum (2010), a popularidade da Web quase a arruinou. Servidores, roteadores e linhas freqentemente esto sobrecarregadas. Muitas pessoas comearam a chamar a WWW a World Wide Wait (grande espera mundial). Como consequncia desses inndveis retardos, os pesquisadores desenvolveram vrias tcnicas para melhorar o desempenho. Ainda segundo Tanenbaum (2010), um modo simples de melhorar o desempenho gravar pginas que foram solicitadas, caso elas tenham de ser usadas novamente. Essa tcnica especialmente efetiva com pginas muito visitadas. O procedimento habitual algum processo, chamado Proxy, conter o Cache. Para usar o armazenamento em cache, um navegador pode ser congurado para fazer todas as solicitaes de pginas a um Proxy, em vez de solicit-las ao servidor real das pginas. Se o Proxy tiver a pgina, ele a retornar imediatamente. Se no tiver, ele buscar a pgina no servidor, guardando-a no cache para uso futuro e retornando a pgina para o cliente que a solicitou. Segundo Kurose and Ross (2010) um Cache Web uma entidade que atende requisies HTTP em nome de um servidor Web de origem. Para ilustrar o procedimento, suponha que um browser esteja requisitando o objeto http://www.someschool.edu/campus.gif. Eis o que acontece: 1. O browser estabelece uma conexo TCP com o cache Web e envia a ele uma requisio HTTP para um objeto. 2. O cache Web verica se tem um cpia do objeto armazenada localmente. Se tiver, envia o objeto ao browser do cliente, dentro de uma mensagem de resposta HTTP. 5

CAPTULO 2.

CACHE E SQUID

3. Se no tiver o objeto, o cache Web abre uma conexo TCP como servidor de origem, isto , com www.someschool.edu. Ento, envia uma requisio HTTP do objeto para conexo TCP. Aps receber essa requisio, o servidor de origem envia o objeto ao cache Web, dentro de uma resposta HTTP. 4. Quando recebe o objeto, o cache Web guarda uma cpia em seu armazenamento local e envia outra, dentro de uma mensagem de resposta, ao browser do cliente (pela conexo TCP existente entre o browser do cliente e o cache Web).O servidor que realiza cache desempenha dois papeis; um de cliente e outro de servidor ao mesmo tempo. Quando recebe requisies de um browser e lhe envia resposta, um servidor. Quando envia requisies para um servidor de origem e recebe resposta dele, um cliente. De acordo com Kurose and Ross (2010), o cache Web tem sido utilizado amplamente na Internet por duas razes. Em primeiro lugar, um cache web pode reduzir substancialmente o tempo de resposta para a requisio de um cliente, em particular se o gargalo da largura de banda entre o cliente e o servidor de origem for muito menor do que aquele entre o cliente e o cache. Se houver uma conexo de alta velocidade entre o cliente e o cache, como em geral o caso, e se este tiver o objeto requisitado, ento ele poder entregar rapidamente o objeto ao cliente. Caches Webs podem reduzir substancialmente o trafego no enlace de acesso de uma instituio qualquer Internet. Com a reduo do trafego, a instituio no precisa ampliar sua largura de banda to rapidamente, o que acaba diminuindo os custos. Alm disso, caches web podem reduzir substancialmente o trfego na internet como um todo, melhorando, assim o desempenho para todas as aplicaes. De acordo com Bastos (2004), a utilizao de um servidor Proxy com Cache pode gerar uma economia entre 30 e 50% nos horrios de pico. Isso signica que para um link de 2 Mbps que est operando a plena carga e considerando uma reduo de 30%, o mesmo produziria um ganho na banda agregada de aproximadamente 600 Kbps.

2.2

Squid

De acordo com Geib (2008) o Squid um software popular, de cdigo fonte aberto e gratuito para utilizao em qualquer ambiente, comercial ou no. Roda sobre os sistemas operacionais Linux, FreeBSD, OpenBSD, NetBSD e Windows.

2.2.1 Histrico
Segundo Geib (2008) o servidor HTTP CERN foi o primeiro proxy e cache. O modulo cache foi escrito por Ari Luotonen em 1994. No mesmo ano, o IRT-FD (Internet Research Task

CAPTULO 2.

CACHE E SQUID

Force Group on Resource Discovery ) iniciou o projeto Harvest. Ele era um conjunto integrado de ferramentas para coletar, extrair, organizar, localizar, fazer cache e replicar informaes da Internet. Duane Wessels juntou-se ao projeto Harvest no nal de 1994. O cache Harvest forneceu trs melhorias importantes em relao ao cache CERN: maior velocidade no uso do sistema de arquivos, design de processo nico, e hierarquia de cache atravs do Internet Cache Protocol. Em 1995 diversos membros da equipe do Harvest abandonaram o projeto

para dedicarem-se empresas relacionadas a Internet. Os autores originais do cdigo do Cache do Harvest, Peter Danzing e Anawat Chankhunthod, tornaram-no em um produto comercial. Sua empresa foi posteriormente adquirida pela Network Appliance. No inicio de 1996, Duane Wessels integra-se ao NLANR (National Laboratory for Applied ) para trabalhar no projeto IRCache (Infornation Resource Cache ), nanciado pela National Science Foundation. Neste projeto, o cdigo do cache do Harvest foi renomeado para squid e liberado sob licena GNU GPL.

2.2.2 Caractersticas
O squid um software livre, o que implica dizer que ele est licenciado nos termos da General Public License (GPL). Seu objetivo principal agilizar o acesso um contedo web qualquer atravs do armazenamento em cache local. O squid funciona como um intermedirio

no contato entre os computadores em uma rede local com outras mquinas fora dela, como, por exemplo, na Internet. O squid recebe as requisies do navegador. Esta requisio mantida pelo squid. Possuindo o contedo requisitado em seu repositrio, o squid ele verica se est atualizado com o da Internet. Isso mantm o cache atualizado, e evita que o cliente receba arquivos obsoletos. Se o contedo no est no repositrio, o squid pega o contedo do servidor de rede e ento o serve para o cliente. A gura 2.1 mostra um diagrama resumido dos componentes deste processo. As vantagens segundo Silva (2010) e Geib (2008), so:

Possibilita impor restries de acesso com base no horrio, login, endereo IP da mquina. Realiza a coleta de dados estatsticos sobre o trfego Web na sua rede interna. Otimiza o acesso a paginas dinmicas. Os sites costumam usar pginas dinmicas onde o contedo muda a cada visita, mas, mesmo nestes casos, o proxy d uma ajuda, pois embora o contedo HTML da pgina seja diferente a cada visita e realmente precisa ser baixado novamente, muitos componentes da pgina, como ilustraes e animaes em Flash, podem ser aproveitados do cache diminuindo o tempo total de carregamento. Registra os acessos dos usurios em arquivos. O Administrador de rede poder visualizar os acessos posteriormente, usando os relatrios do Squid Analysis Report Generator, assim

CAPTULO 2.

CACHE E SQUID

Figura 2.1: Modelo de um proxy cache, Aguiar (2010) . ele saber quem acessou quais pginas e em que horrios, que auxilia a incrementar as listas de bloqueios.

Permite denir polticas de controle denominadas ACL (Access Control List ). Como as requisies so feitas para ele, torna bastante til do ponto de vista da empresa que quer ter controle sobre o que os empregados esto acessando, podendo denir o que eles podem o no acessar durante o expediente. Se por exemplo, existirem regras que impeam a passagem de qualquer endereo WEB que contenha a palavra "sexo", esse pedido ser descartado. Realiza cache de pginas e arquivos armazenando informaes j acessadas. Quando algum acessa uma pgina que j foi carregada, o proxy envia os dados que guardou no cache sem precisar acessar a mesma pgina repetidamente. Isso pode gerar uma economia de banda tornando o acesso mais rpido sem precisar investir em uma conexo mais rpida. Acelera o acesso s pginas ou servir como um cache de arquivos, armazenando atualizaes do Windows Update, downloads diversos e pacotes instalados. Ao invs de ter que baixar o Service Pack XYZ do Windows XP ou o OpenOce nos 40 micros da rede, o usurio vai precisar baixar apenas no primeiro, pois os outros 39 podero baixar a partir do cache do squid. As duas ultimas funes citadas sero focos deste trabalho.
Conforme Geib (2008), o squid no realiza o servio de Firewall, sua funo ser proxy HTTP

CAPTULO 2.

CACHE E SQUID

e Cache. As conguraes cujo o objetivo personalizar o squid para adapt-lo de acordo com cada organizao devem ser feitas no arquivo Squid.conf

2.2.3 O Arquivo Squid.conf


O arquivo de congurao do squid o squid.conf. Normalmente este arquivo se encontra em /etc/squid.conf ou em /usr/local/squid/etc/squid.conf e possui certa de 4350 linhas. Esse nmero elevado de linhas ocorre pleo fato deste arquivo possuir para cada opo um breve resumo e a sintaxe da opo. Ele est organizado em tags que tratam de todas as conguraes, tais como porta de acesso ao servidor, programa utilizado para manipulao de senhas, tamanho e estrutura do cache, denies e manipulao das ACLs, que vo estipular quais so os grupos de usurios a serem utilizados, quais os so os arquivos com sites proibidos e/ou liberados, quais so as extenses dos download proibidas, entre outras tags [Siewert (2007)]. O Squid.conf lido de forma seqencial quando o servio do Squid iniciado. Alguns dos principais parmetros de conguraes do Squid.conf segundo Silva (2010) so:

http_port : especica em qual porta o deamon deve aguardar por conexes, dentre os valores
mais utilizados esto as portas 3128 e a 8080.

cache_mem : diretiva que especica a quantidade de memria em MegaBytes a ser disponibilizada para o Squid. cache_dir : composta por quatro valores. O primeiro especica o tipo de armazenamento padro a ser utilizado. O segundo indica a pasta onde o squid armazena os arquivos do cache. O terceiro especica a quantidade de espao em disco, em MB, que deve ser alocado para cache. O quarto indica quantos diretrios de primeiro nvel deve ser criados.
E o quinto e ltimo determina quantos diretrios de segundo nvel devem ser criados.

cache_access_log : especica a localizao do arquivo que deve fazer os registros de acessos,

muito utilizado pelo Squid Analysis Report Generator para gerar as pginas com as estatsticas de acesso.

cache_log : especica o arquivo para registros das informaes relativas ao cache de arquivos. cache_store_log : registro detalhado de todo objeto armazenado detalhando quais objetos
saram, entraram e quanto tempo estes objetos estiveram armazena-dos.

cache_eective_user : especica o usurio dono dos processos criados pelo Squid. cache_eective_group : especica o grupo dono dos processos criados pelo Squid.

CAPTULO 2.

CACHE E SQUID

10

Existem diversos outros parmetros que podem ser congurados. Para este trabalho os principais parmetros a serem congurados sero o tamanho mnimo e mximo dos objetos em cache, o tamanho total da memria cache e o algoritmo utilizado para troca de pginas.

Tamanhos dos Objetos e Tamanho do Cache


As pginas da web gravadas na memria cache do squid so chamadas de objetos. Em uma pgina podem haver diversos arquivos, como, imagens, videos e animaes. No squid.conf existem um parmetros para denir o tamanho mximo e outro para o tamanho mnimo dos objetos em cache. O parmetro o: maximim_object_size bytes. A denio do valor deve ser analisada com critrio, pois objetos maiores que esse limite, em Kilo Bytes, no so salvos em disco. De acordo com Bastos (2004), para denir como congurar o tamanho mximo nessa opo, deve-se levar em considerao que o nmero grande implica em maior economia de banda e perda de performance no cache local, enquanto um nmero menor no ajuda muito em ganho de banda, mas melhora a velocidade em tempo de resposta. O valor recomendado, segundo Bastos (2004), ca em torno de 4 a 16 MB. No padro o valor utilizado 4096 KB. Exemplo de uma congurao: O valor mnimo do tamanho dos objetos armazenadas em cache podem ser denidos pelo parmetro: minimum_object_size. O valor padro o 0, o que signica que todos os objetos sero armazenados. Delimitar o limite mnimo dos objetos pode ser interessante devido o custo de processamento de vericar se o objeto esta em cache. Exemplo de uma congurao: O tamanho da memria cache denido pelo parmetro parmetro, segundo Bastos (2004), :
tipo minimum_object_size 1000 KB cache_dir maximum_object_size 16000 KB

. A sintaxe completa do

onde; : especica o tipo de arquivo que ser criado. Ufs o tipo padro. tamanho_mx_obj: refere-se ao tamanho mximo do objeto que ser armazenado nesse diretrio. nome_diretrio: o diretrio raiz do cache. Caso o administrador de rede esteja utilizando um disco separado para o cache, ser o ponto de montagem. O diretrio j deve existir previamente e o usurio do squid deve ter direito de escrita nele. Mbytes: a quantidade de espao em disco ocupado por esse diretrio. Denido em MB. nivel-1: nmero de subdiretrios de primeiro nvel criados sob o diretrio principal. nivel-2: nmero de subdiretrios de segundo nvel que ser criado abaixo de cada subdiretrio
cache_dir tipo tamanho_mx_obj nome_diretrio Mbytes nivel-1 nvel-2 [..]

CAPTULO 2.

CACHE E SQUID

11

de primeiro nvel. Os valores padres, de acordo com Squid.conf (2012), so: A denio do valor de espao em disco ocupado pela memria cache do squid deve ser feita de acordo com disponibilidade de armazenamento do servidor squid. Mas deve-se observar que quanto maior for o tamanho disponibilizado para o cache_dir, mais pginas sero armazenadas em cache e consequentemente isso ir demandar um maior poder de processamento. Em sentido contrrio, um cache muito pequeno no poder gerar resultados que justique sua utilizao. Assim o valor padro 100 MB.
cache_dir ufs /var/spool/squid 100 16 256

Algoritmos de Troca de Paginas


A substituio de pginas, tambm chamadas de objetos, podem ser feitas de 4 formas distintas. A troca ir denir qual objeto ser mantido na memria e qual ser removido para criar espao para novos objetos. O parmetro que dene o algoritmo utilizado cache_replacemente_policy Os 4 algoritmos de acordo com Bastos (2004) e Squid.conf (2012), so:

LRU - Least Recently Used: mantm em cache objetos referenciados recentemente, ou seja, comea removendo do cache o objeto que foi referenciado a mais tempo. heap GDSF - Greedy-Dual Size Frequency: tem a losoa de manter em cache objetos menores, referenciados mais vezes, gerando uma maior possibilidade de fornecer um hit. heap LFUDA - Least Frequently Used with Dynamic Aging: mantm os objetos mais populares em cache, independente do seu tamanho. heap LRU: poltica LRU acrescida do uso de pilhas.
Por padro o algoritmo LRU a opo utilizada pleo squid. O algoritmo GDSF manipula arquivos pequenos, assim ele otimiza o HIT Ratio dos objetos, pois mantm os arquivos menores e populares no cache, para obter uma melhor chance de acontecer um HIT. J o LFUDA procura manter no cache os arquivos populares, independente do tamanho, otimizando assim o Byte HIT em detrimento do HIT.

2.2.4 Arquivo de Log do Squid


O squid, de acordo com Geib (2008), possui dois formatos de logs : nativo e common log le (CLF). O squid utiliza o formato nativo, que possui informaes interessantes de acordo

CAPTULO 2.

CACHE E SQUID

12

com aquilo que o administrador da rede precisa. O squid registra em seu log uma linha para cada objeto requisitado pelos clientes. Os arquivos de logs possuem nome padro "access.log", "access01.log", "accessN.log". De acordo com Squid.conf (2012), estes arquivos de log cam armazenados no diretrio: /var/log/squid. Mas este caminho pode ser alterado no arquivo de congurao do squid, atravs do parmetro: access_log. O formato de log nativo possui as seguintes informaes, Geib (2008):

Hora( ): timestamp Unix, marcando o nmero de segundo desde 01 de janeiro de 1970, com resoluo de milissegundos. Durao( utilizou o cache.

time

duration ): tempo decorrido, considerando quantos milissegundos a transao client address ): result codes
endereo IP do cliente que est requisitando

Endereo do cliente ( algo ao proxy.

Cdigos de resultados ( ): contm o resultado da transao, e composta de duas informaes separadas por uma barra: o cdigo de resultado da requisio ao cache, e o cdigo de resultado HTTP, com algumas extenses especicas do Squid. Os principais cdigos de resultados da requisio ao cache so os seguintes:

 TCP_HIT: uma cpia vlida do objeto foi encontrada no cache.  TCP_MISS: no h cpia do objeto requisitado no cache.  TCP_REFRESH_HIT: o objeto requisitado estava em cache mas era considerado  TCP_REF_FAIL_HIT: o objeto requisitado estava em cache mas era considerado  TCP_REFRESH_MISS: o objeto requisitado estava em cache mas era conside-

vencido. A requisio ao objeto para o servidor de origem revelou que ele no foi modicado. vencido. A requisio ao objeto para o servidor de origem falhou, e foi entregue ao cliente a cpia vencida. rado vencido. A requisio ao objeto para o servidor de origem revelou que ele foi modicado, ento foi entregue ao cliente o objeto atualizado.

 TCP_CLIENT_REFRESH_MISS: o cliente utilizou na requisio um cdigo nocache ou semelhante, ento o cache buscou novamente o objeto no servidor de origem.

 TCP_MEM_HIT: uma cpia vlida do objeto requisitado estava no cache e na


memria, o que evita leitura de disco.

 TCP_DENIED: o acesso foi negado para esta requisio.

CAPTULO 2.

CACHE E SQUID

13

Tamanho (

o objeto, conforme denido na RFC 2616 e na RFC 2518.

bytes ): quantidade de bytes de dados enviados pelo proxy ao cliente. Mtodo de requisio (request method ): mtodo de requisio utilizado para obter

URL: endereo web do objeto requisitado. RFC931: refere-se consulta ident que pode ser feita contra o cliente requisitando algo. Por padro tal consulta desativada, devido ao compacto negativo na performance do proxy, e esta informao preenchida com um hfen. Cdigo de hierarquia ( ): contm informaes sobre a hierarquia de servidores proxy, sobre como a requisio foi resolvida, e o endereo IP ou hostname do servidor que enviou o objeto ao proxy sem estrutura hierrquica, os cdigos que informam como a requisio foi resolvida so:

hierarchy code

 NONE: ocorreu um resultado TCP_HIT ou ento uma falha.  DIRECT: o objeto foi buscado no servidor de origem.
Tipo (

type ): tipo de contedo, conforme informado no cabealho da resposta HTTP.

No prximo captulo ser apresentada uma tcnica da inteligncia computacional utilizada na cincia da computao para achar solues aproximadas em problemas de otimizao e busca, que usam tcnicas inspiradas pela biologia evolutiva como hereditariedade, mutao, seleo natural e recombinao (crossing over ), denominada Algoritmo Gentico.

Captulo 3 Algoritmos Evolutivos


3.1 Introduo

A Computao Evolucionria, ou Computao Evolutiva, segundo Araki (2009) uma ramicao da cincia da computao que, juntamente com os Sistemas Fuzzy e Redes Neurais, forma uma rea denominada Inteligncia Computacional. Segundo Linden (2006) no existe ainda uma denio consensual do que inteligncia e os cientistas ainda no tm uma certeza de como a adquirimos ou como a aperfeioamos, mas cita duas denies de outros autores. De acordo com Boose apud Linden (2006), "inteligncia articial um campo de estudo multidisciplinar e interdisciplinar, que se apia no conhecimento e evoluo de outras reas de conhecimento". Outra denio de acordo com Winston apud Linden (2006) "inteligncia articial o estudo das idias que permitem aos computadores simular inteligncia". Ainda de acordo com Araki (2009), a computao evolutiva constituda em princpio por cinco diferentes linhas: Algoritmos Genticos, Programao Evolutiva, Estratgias de Evoluo, Sistemas de Classicao e Programao Gentica. O termo Algoritmos Evolutivos foi proposto em 1990, buscando reunir todas as variantes e tambm todas as outras tcnicas que fossem baseadas em princpios evolutivos para a soluo de problemas. A principal vantagem dos Algoritmos Evolutivos, segundo Araki (2009) que eles possuem grande exibilidade e adaptabilidade aos problemas reais e trabalham com modelagem real do problema, sem necessidade de informaes auxiliares. Apesar deste captulo tratar de Algoritmos Evolutivos, aqui ser apresentado somente uma linha desses algoritmos: os Algoritmos Genticos. O intuito de dar nfase somente a este algoritmo se deve ao fato que a base principal do desenvolvimento deste trabalho se apia 14

CAPTULO 3.

ALGORITMOS EVOLUTIVOS

15

nesta tcnica. A escolha dos Algoritmos Genticos, especicamente o Algoritmo Gentico Simples, aconteceu pelo fato de ser uma tcnica relativamente simples de ser implementada e apresenta, frequentemente, bons resultados. Outra caracterstica muito forte o paralelismo, os GAs mantm uma populao de solues que so avaliadas simultaneamente. Desta forma, neste captulo so apresentados os principais fundamentos da tcnica denominada Algoritmos Genticos.

3.2

Base Biolgica

At o sculo XIX os cientistas mais proeminentes acreditavam em uma dentre as teorias do criacionismo ("Deus criou o universo da forma que ele hoje") ou da gerao espontnea ("a vida surge de essncias presentes no ar"). Em torno de 1850 Charles Darwin fez uma longa viagem no navio HMS Beage. Esta viagem resultou em um livro sobre a teoria da evoluo das espcies intitulado "A Evoluo das Espcies, 1859"(Linden (2006)). A teoria diz que na natureza todos os indivduos dentro de um ecossistema competem entre si por recursos limitados, tais como comida e gua. Aqueles dentre os indivduos (animais, vegetais, insetos etc.) de uma mesma espcie no obtm xito tendem a ter uma prole menor e esta descendncia reduzida faz com que a probabilidade de ter seus genes propagados ao longo de sucessivas geraes seja menor, processo este que denominado seleo natural. O processo de seleo natural de acordo com Linden (2006) no um processo dirigido, com o intuito de maximizar alguma caracterstica das espcies. No existe nenhuma garantia de que os descendentes de pais muito bem adaptados tambm o sejam. A evoluo ento um processo no qual os seres vivos so alterados por um conjunto de modicaes que eles sofrem atravs dos tempos, podendo ser explicada por alguns fatores como mutao gnica, recombinao gnica, seleo natural e isolamentos.

3.2.1 Gentica
De acordo com Linden (2006), todo individuo, seja ele animal, vegetal ou mesmo organismos inferiores como vrus e bactrias, formado por um ou mais clulas, e dentro de uma ou mais delas o organismo possui uma copia completa do conjunto de um ou mais cromossomos que descrevem o organismo, conjunto este denominado genoma. Um conjunto especico de genes no genoma chamado de gentipo. O gentipo a base do fentipo, que a expresso das caractersticas fsicas e mentais codicadas pelos genes e modicadas pelo ambiente, tais como a cor dos olhos, inteligncia etc. A transmisso dessas caractersticas de gerao para gerao realizada atravs da reproduo em dois tipos distintos.

Assexuada: tpica de organismos inferiores, como bactrias.

CAPTULO 3.

ALGORITMOS EVOLUTIVOS

16

Sexuada: exige a presena de dois organismos, na maioria das vezes de sexos opostos, que trocam material gentico.
A reproduo sexuada a base dos Algoritmos Genticos por isso merece destaque. Nos organismos que utilizam reproduo sexuada como os seres humanos e as moscas, cada progenitor fornece um pedao de material gentico chamado gametas. Estas gametas so resultados de um processo denominado crossing-over ou crossover, onde permitem que os lhos herdem caractersticas dos seus pais mas no sejam exatamente iguais a eles. De acordo com Linden (2006) importante considerar que o processo de replicao do DNA (deoxyribonucleic acid ) extremamente complexo. Pequenos erros podem ocorrer ao longo do tempo, gerando mutaes dentro do cdigo gentico. Existem mecanismos de correo que garantem que a taxa de mutao seja muito baixa. Gentipo, Fentipo, Crossover, Mutao, Genes, Adaptao, so alguns conceitos utilizados nos algoritmos evolutivos.

3.3

Algoritmos Genticos

Os Algoritmos Genticos (GA), segundo Linden (2006), so um ramo dos algoritmos evolucionrios e como tal podem ser denidos como uma tcnica de busca baseada numa metfora do processo biolgico de evoluo natural. Araki (2009) dene a classicao dos algoritmos genticos com um subclasse da computao natural. Computao natural deriva a inteligncia computacional e a computao evolutiva de acordo com a Figura 3.1. Nos algoritmos genticos populaes de indivduos so criados e submetidos aos operadores genticos: seleo, recombinao (crossover ) e mutao. Estes operadores segundo Linden (2006) utilizam uma caracterizao de qualidade de cada indivduo como soluo do problema em questo chamada de avaliao e vo gerar um processo de evoluo natural destes indivduos, que eventualmente dever gerar um indivduo que caracterizar uma boa soluo (talvez at a melhor possvel) para o problema tratado. Segundo Albrecht (2005), cada individuo representa um ponto do espao de busca que envolve vrios conceitos, para uma melhor compreenso do mtodo so apresentados algumas terminologias:

Cromossomo - uma estrutura de armazenamento de dados que carrega informaes sobre as variveis do problema. Gen ou Gene - um parmetro codicado dentro de um cromossomo, isto , a parte que representa uma nica varivel dentro de um vetor de dados. Gentipo - representa toda a informao contida no cromossomo. Fentipo - a estrutura construda a partir do gentipo.

CAPTULO 3.

ALGORITMOS EVOLUTIVOS

17

Figura 3.1: Algoritmos Genticos no contexto da Computao Natural (adaptado), Araki (2009) .

Seleo - a operao gentica que tem por objetivo escolher os indivduos que serviro como pais no processo de reproduo Cruzamento ( ) - o operador gentico responsvel pela gerao de novos cromossomos a partir da combinao aleatria dos genes de outros cromossomos. Mutao - o operador gentico, aplicado depois dos processos de seleo e cruzamento, responsvel pela diversidade entre os indivduos, atravs de modicaes na estrutura gentica de alguns poucos cromossomos. Fitness - o valor, para um indivduo, da funo a ser otimizada. Indivduo - um simples membro da populao, formado por um cromossomo e sua aptido. Populao - um conjunto de indivduos. Gerao - o conjunto de indivduos que faz parte de uma etapa da evoluo, ou seja, a unidade de iterao do algoritmo gentico.
Linden (2006) diz que o algoritmo gentico pode ser resumido algoritmicamente atravs dos seguintes passos: 1. Inicialize a populao de cromossomos.

Crossover

CAPTULO 3.

ALGORITMOS EVOLUTIVOS

18

2. Avalie cada cromossomo na populao. 3. Selecione os pais para gerar novos cromossomos. 4. Aplique os operadores de recombinao e mutao a estes pais de forma a gerar

os indivduos da nova gerao.

5. Apague os velhos membros da populao. 6. Avalie todos os novos cromossomos e insira-os na populao. 7. Se o tempo acabou, ou melhor cromossomo satisfaz os requerimentos e desempenho,

retorne-o, caso contrrio, volte para o passo 3.

Estes passos mostram uma viso de alto nvel o algoritmo. Esta implcito a obteno de alguns elementos fundamentais para resoluo de qualquer problema que utilize Algoritmo Gentico. Os elementos de acordo com Linden (2006) so dois: A representao cromossomial adequada ao problema; e a funo de avaliao que penalize solues ruins e avalie satisfatoriamente o grau de adequao de cada individuo com a soluo do problema. Neste trabalho ser implementado o Algoritmo Gentico Simples. Para melhor entender o funcionamento dos passos denidos anteriormente, o esquema da gura 3.2 mostra as principais etapas a serem implementadas. A primeira etapa do algoritmo gentico simples consiste em criar a populao inicial aleatoriamente dentro do espao de busca. Aps a criao da populao o algoritmo segue os passos da gura 3.2. A primeira operao do ciclo do algoritmo avaliar a populao atual para determinar a qualidade do individuo como soluo do problema em questo, Linden (2006). Devido a generalidade dos Algoritmos Genticos, a funo de avaliao atua como a nica ligao verdadeira do programa com o problema real. O resultado da avaliao ira determinar um valor numrico que reete quo bons os parmetros representados no cromossomo resolvem o problema. Assim a funo de avaliao deve ser escolhida com grande cuidado. Ela deve englobar todo conhecimento que possui sobre o problema a ser resolvido. A segunda operao a seleo dos pais. Este mtodo deve simular o mecanismo de seleo natural que atua sobre as espcies biolgicas, em que os pais mais capazes geram mais lhos, ao mesmo tempo em que os pais menos aptos tambm podem gerar descendentes. Os dois mtodos mais utilizados so, segundo Linden (2006), roleta e torneio. Na roleta cada indivduo recebe um percentual, proporcional a sua avaliao, da roleta ou um valor (entre 0 e 360) e caso seu intervalo sorteado, este individuo escolhido para pai. J o mtodo de torneio consiste em selecionar uma srie de indivduos (mnimo 2), de forma aleatria, e escolher o melhor entre eles para ser pai. A terceira operao aplicar os operadores genticos. Os dois operadores tratados neste trabalho so cruzamento e mutao. O cruzamento consiste em pegar os pais selecionados pela

CAPTULO 3.

ALGORITMOS EVOLUTIVOS

19

Figura 3.2: Esquema de um Algoritmo Gentico Simples (Adaptado), Linden (2006) . operao seleo e decidir, de acordo com uma probabilidade, se haver ou no o cruzamento. Um dentre os mtodos de realizar o cruzamento atravs do cruzamento com um ponto de corte, que combina a metade dos genes de um indivduo com a metade do outro e gera dois novos lhos. Aps criar os lhos entra em ao os operados de mutao. A mutao ocorre com um probabilidade mnima. Uma das formas de realizar a mutao , caso ocorra a mutao, inverter o bit que representa o gente. Esse processo realizado para todos os genes. A terceira e ultima operao do Algoritmo Gentico chamado de mdulo populao. De acordo com Linden (2006), mdulo populao responsvel pelo controle da populao. No algoritmo mais simples essa populao comea com uma certa quantidade de indivduos e termina com a mesma quantidade. Mas a populao pode crescer ou diminuir, de acordo com o tipo de implementao. A forma mais simples de determinar a nova populao substituir todos os pais lhos pelos lhos. Um dos mtodos da operao populao o elitismo. O elitismo consiste em escolher o melhor pai de uma gerao para integrar os novos lhos, consequente-

CAPTULO 3.

ALGORITMOS EVOLUTIVOS

20

mente deve ser removido um lho para dar lugar ao pai. Este lho removido geralmente um entre os piores lhos. Aps o mdulo populao os novos indivduos so avaliados e caso chegue a soluo tima ou atinja o nmero mximo de geraes o algoritmo nalizado, caso contrrio, todo o processo se repete. Existem diversos algoritmos para cada uma das etapa citada acima. Os principais algoritmos e suas implementaes podem ser encontradas com detalhes em Linden (2006).

Captulo 4 Desenvolvimento
O trabalho proposto consiste em simular as funcionalidades bsicas do proxy squid e usar essa simulao como funo de avaliao para o algoritmo gentico simples. Neste captulo sero apresentados os dados utilizados na simulao, as ferramentas, o algoritmo de simulao e o algoritmo gentico.

4.1

Dados Utilizados

Para o desenvolvimento do trabalho foram utilizados logs de acessos do squid. O squid registra uma linha para cada objeto requisitado pelo cliente. Os arquivos possuem nome padro accessX.log, onde X um nmero inteiro que representa a sequencia de arquivos criados. O formato do arquivo de log do squid possui os campos: time, duration, client address, result codes, bytes, request method, URL, RFC931, hierarchy code e type. A gura 4.1 mostra um trecho de um arquivo Access.log, j destacando os campos utilizados neste trabalho. Os campos utilizados foram bytes e URL. O campo bytes representa o tamanho do objeto requisitado medido em byte. A URL armazena o endereo web do objeto requisitado. Na dcima primeira linha da gura 4.1, em destaque, o objeto requisitado uma pgina do tipo text/html que possui URL http://www.msn.com e tamanho 3010 bytes. Durante todo o trabalho cada linha dos arquivos sero chamados genericamente de objetos. Os arquivos de log passaram por uma limpeza para remoo de informaes desnecessrias para o trabalho. Esta etapa foi denida como limpeza e formatao dos dados. Os arquivos de log possuem tamanhos variados (entre 794 KB e 417 MB) e o processamento de arquivos muito grande se torna invivel. Assim a limpeza consistiu manter as colunas bytes e URL e remover as demais de todos os arquivos de log. Os arquivos foram divididos em mil partes, 21

CAPTULO 4.

DESENVOL VIMENTO

22

Figura 4.1: Trecho de um arquivo de log do squid .

CAPTULO 4.

DESENVOL VIMENTO

23

cada um contendo 20 mil linhas, totalizando 20 milhes de linhas para realizar as simulaes. A ultima etapa da formatao dos dados consistiu em converter os arquivos de log em um formato utilizado pelo MatLab (.mat), com objetivo de obter uma melhor performance durante o processamento para realizao das simulaes.

4.2

Ferramentas

Diversas ferramentas foram utilizadas para realizao deste trabalho. Para converso dos arquivos de log para arquivos do MatLab foi desenvolvido um algoritmo que, executado no MatLab, carrega o arquivo atravs do comando importdata e aps carrega-lo salva-o, atravs do comando save em um formato do MatLab. A ferramenta Microsoft Oce Excel 2007 foi utilizada para visualizar os arquivos de log antes e depois da formatao e visualizar mdias estatsticas para denir o espao de busca do algoritmo gentico. A utilizao desta ferramenta para formatao dos arquivos cou restrita devido seu limite de linhas em processamento, limitado ao valor de 1048576. A ferramenta MatLab foi utilizada para desenvolvimento do algoritmo e simulao do squid e para implementao do algoritmo gentico. O uxograma que mostra os passos da execuo do algoritmo de simulao do squid foi desenvolvido na ferramenta free BizAgi Process Modeler. Para formatao das guras foi utilizado a ferramenta Inkscape.

4.3

Algoritmo de Simulao do

proxy squid

Grande parte do trabalho foi dedicado ao desenvolvimento do algoritmo de simulao do squid. Foi necessrio desenvolver esta ferramenta para avaliar o desempenho do squid em diversas conguraes. No seria vivel realizar os testes com a prpria ferramenta squid devido a necessidade de buscar os objetos diretamente na Internet. Assim o algoritmo de simulao implementa a funo de servidor proxy cache baseado no funcionamento do squid e utilizando os arquivos de log gerados pelo prprio squid. O simulador tem como entrada os arquivos de log e na sada apresenta um percentual de hit e bytehit, que representa taxa de objetos encontrados em cache e taxa do tamanho dos objetos encontrados em cache, respectivamente. A Figura 4.2 mostra o uxograma do simulador squid. Os arquivos de log so carregados e cada linha do arquivo processada. De acordo com necessidade o simulador pode ser congurado para processar apenas um conjunto de linhas de cada arquivo. Essa limitao se deve ao fato do simulador exigir um alto poder de processamento. A implementao do simulador squid foi feita no MatLab. A primeira operao do simulador

CAPTULO 4.

DESENVOL VIMENTO

24

Figura 4.2: Fluxograma do simulador Squid .

CAPTULO 4.

DESENVOL VIMENTO

25

consiste vericar quantos arquivos sero utilizados nos testes, depois entra em um ciclo que verica se todos os arquivos foram processados e naliza a simulao, seno carregar o prximo arquivo da lista, processa-o, e repete esta operao at o ltimo arquivo. Aps carregar um arquivo verica-se quantas linhas este arquivo possui e entra em um novo ciclo, onde, verica se todas as linhas foram processadas e naliza simulao, seno, toma como base a prxima linha do arquivo, processa-a, e repete esta operao at a ltima linha do arquivo. Para cada linha do arquivo selecionada, como mostra a gura 4.2, vericado em todo o cache se aquele objeto j est gravado. Nesta etapa realizada uma comparao de strings utilizando uma funo do MatLab chamada strcmpi. Se o objeto estiver no cache as variveis que armazenam o percentual de sucesso so incrementadas. Caso no encontre o objeto em cache as variveis de "no-sucesso"(que em uma situao real representa a busca do objeto na sua origem) so incrementas. Se o objeto no est em cache ele poder ser armazenado de acordo com seu tamanho. vericado se o tamanho do objeto est entre o limite mximo e mnimo estabelecido. Se estive no limite o objeto ento armazenado em cache. O espao para armazenamento em cache tem um limite. Aps armazenar um objeto vericado se a soma do tamanho de todos os objetos em cache no atingiu o limite estabelecido. Se o limite foi atingido, como mostrado na gura 4.2, deve ser realizado a limpeza do excesso do cache de acordo com o algoritmo de substituio de objetos em cache (Least Recently Used - LRU ou Least Frequently Used - LFU). Aps a execuo de todas as linhas de todos os arquivos os resultados de sucesso e "no-sucesso"so mostrados e a simulao nalizada. O algoritmo de substituio de objetos LRU o padro do squid. Ele utiliza um relgio para determinar em que tempo o objeto foi gravado ou encontrado pela ltima vez no cache. Assim sero removidos do cache aqueles objetos que foram acessados a mais tempo. J o LFU utiliza uma poltica de substituio de objetos um pouco diferente. Para cada objeto armazenado ou encontrado armazenado um contado de popularidade. Cada vez que um certo objeto encontrado no cache sua popularidade incrementada. Assim sero removidos os objetos que estiver a menor popularidade entre todos os objetos no cache. Para no haver uma chamada constante aos algoritmos de substituio de objetos e aumentar o processamento, sempre que os algoritmos so chamados o cache devolvido com a utilizao de no mximo 90% da sua capacidade.

4.4

Algoritmo Evolutivo

O algoritmo evolutivo implementado foi Algoritmo Gentico Simples. De acordo com Linden (2006) existe uma grande complexidade na obteno de dois elementos. Um deles uma forma de representao cromossomial que seja adequada ao problema. Outra uma funo de avaliao que penalize solues implausveis para problema tratado e que avalie satisfatoria-

CAPTULO 4.

DESENVOL VIMENTO

26

mente o grau de adequao de cada individuo como soluo para o problema em questo. A funo de avaliao representada pelo algoritmo de simulao do squid que est descrito na seo anterior.

4.4.1 Representao dos Cromossomos


De acordo com Linden (2006) representao cromossomial consiste em uma maneira de traduzir a informao do problema em uma maneira vivel de ser tratada pelo computador. Cada pedao indivisvel da representao chamado de gene. A representao do cromossomo e de seus genes so arbitraria, cando sua denio de acordo com o gosto do programador e com a adequao ao problema. Mas algumas regras devem ser seguidas: A representao deve ser o mais simples possvel; se houver uma soluo proibida, ento dela no deve ter uma representao; se o problema impuser condies de algum tipo, estas deve estar implcitas dentro da nossa representao.Uma das representaes mais usadas, de acordo com Linden (2006), a representao binria, onde o cromossomo formado por uma sequncia de bits e cada gene representado por um nico bit. Esta foi a representao utilizada neste trabalho. Cada indivduo deve carregar trs informaes: o tamanho mximo dos objetos que deve ser armazenado em cache ; o tamanho mnimo; e o tipo de algoritmo utilizado para substituio de objetos em cache. Assim foi denido um nmero binrio de treze posies, onde as seis primeiras representa o tamanho mximo dos objetos, as prximas seis representam o tamanho mnimo e o ltimo bit dene o algoritmo de substituio de objetos. Para melhor entendimento, os indivduos tem o seguinte formato XXXXXXYYYYYYW. Os Xs representam sessenta e quatro (26 ) tamanho mximos diferente, os Ys representam sessenta e quatro (26 ) tamanho mnimos e o W com duas opes 0 (representa o algoritmo LRU) e 1 (representa o algoritmo LFU). Foram utilizados passos para representar todo espao de busca. Assim o algoritmo busca em uma dimenso maior do que apenas 128 valores sequenciais. Para o tamanho mximo foi utilizado o passo 800 mil, comeando com valor 1 milho. Para o tamanho mnimo foi utilizado o passo 8 mil. Por exemplo, um indivduo no seguinte formato: 0000100001010, teria tamanho mximo de objeto aproximadamente igual a [(0000102 )=2*800.000+1.000.000] => 2,5MB ou 2.600.000 bytes, tamanho mnimo aproximadamente igual a [(0001012 )=5*8.000+0] => 40KB ou 40.000.100 bytes e algoritmo LRU (02 =0).

4.4.2 Avaliao e Seleo dos Pais


Para realizar a avaliao o algoritmo gentico passa os arquivos de log e a populao de indivduos para o mdulo simulador do squid, este realiza os testes como descritos no item 4.3.

CAPTULO 4.

DESENVOL VIMENTO

27

O simulador retorna o ttnes de cada indivduo. O ttnes representado pela taxa percentual do tamanho dos objetos encontrados em cache - byteHit. A seleo dos pais realizada utilizando o algoritmo torneio. So escolhidos quatro pais aleatoriamente e realizado uma disputa entre o primeiro e segundo e outra entre o terceiro e quarto. Um novo valor entre 0 e 1 escolhido aleatoriamente, se este valor for maior ou igual a 0.9 ento escolhido o pior pai entre o primeiro e o segundo, seno o melhor pai escolhido. Este processo se repete para o terceiro e quarto pai. Assim so selecionados dois pais dentro da populao.

4.4.3 Operador de Cruzamento e Mutao


O cruzamento tem a funo de juntar as caractersticas dos dois pais e criar dois lhos. O algoritmo escolhido para cruzamento foi o uniforme. Antes de realizar o cruzamento sorteado um probabilidade em que existe 80% de ocorrer o cruzamento. Se no ocorrer, os dois pais so copiados diretamente para os novos lhos. Se houver cruzamento, cada gene (bit ) dos novos lhos sero determinados pelos genes dos pais. Para o primeiro bit do lho1, aleatoriamente, com probabilidade de 50%, o lho1 recebe o gene do pai1 ou do pai2. Este mesmo processo se repete para cada bit dos dois lhos. Os novos lhos so retornados como um cruzamento dos dois pais. Para a mutao foi utilizado o algoritmo "escolha aleatria do bit". A mutao ocorre sobre toda a nova populao de lhos gerados no cruzamento. Dentre a populao de lhos escolhido aleatoriamente 2,5% dos genes para sofrer mutao. Cada um dos gentes escolhidos so alterados atravs da inverso do bit. Assim a nova populao de lhos retornada com 2,5% dos seus genes mutados. A mutao tem a funo de gerar pequenas pertubaes nas caractersticas de cada indivduos am de criar possveis indivduos com caractersticas mais prxima daquelas desejadas.

4.4.4 Populao e Resultados


A nova populao denida utilizando elitismo. O elitismo consiste em escolher os melhores ou o melhor indivduo (pai) da gerao anterior e manter na nova populao. Neste trabalho foi utilizado elitismo com um indivduo. Todos os lhos, menos o pior, juntos com o melhor pai so selecionados para compor a nova gerao e dar prosseguimento ao algoritmo. Ao nal da execuo do algoritmo gentico apresentado os seguintes resultados: um grco com os melhores valores de ttnes de cada gerao, a mdia dos ttnes e os piores ttnes ; o melhor indivduo da ltima gerao decodicado apresentando os melhores valores de tamanho mximo e mnimo de objetos e o melhor algoritmo de substituio de objetos.

Captulo 5 Testes e Resultados


Aps implementar o Algoritmo Gentico Simples e o Simulador squid foram realizados testes simulando acessos a objetos localizados na Internet. Os testes foram divididos em dois padres de duas fases cada. Na primeira fase de cada padro foram executados o Algoritmo Gentico Simples e o Simulador squid. A segunda fase consistiu em executar uma Anlise Bruta com o Simulador squid e valores predenidos. Ao nal os resultados das duas fases foram comparados.

5.1

Descrio dos Testes

Antes de executar os testes foram denidos os padres de acesso, o formato, os dados e os valores para cada uma das etapas das duas fases. A diviso em padres busca mostrar o desempenho do Algoritmo Gentico para determinados tamanhos de objetos. Os dois padres tem como objetivos mostrar que o Algoritmo Gentico Simples tende a aproximar-se do melhor resultado independente do padro de tamanho dos objetos. O melhor resultado um valor que dene o Tamanho Mnimo e Mximo de Objetos que podem ser armazenados e o Algoritmo de substituio de objetos que maximize o byteHit. A tabela 5.1 resume os testes realizados. importe salientar que os objetos (URLs e Tamanhos) utilizados so os mesmos para todos os testes. O primeiro padro faz a anlise dos objetos de tamanho maior que 5 KB, j o segundo analisa somente os objetos maiores que 100 KB. Para todas as simulaes foram utilizados os objetos selecionados, dentro de 4.300.000 objetos genricos, que atende o critrio de tamanho para o primeiro e segundo padro.

28

CAPTULO 5.

TESTES E RESULTADOS

29

Tabela 5.1: Etapas das simulaes .

A sequncia das simulaes foram:

1. 1.1 1.2 1.3 1.4 2. 2.1 2.2 2.3 2.4 3.

Para o padro 1: Executar GA Simples. Executar Simulador squid com valores definidos pela etapa 1.1. Executar anlise bruta. Comparar os resultados da etapa 1.2 com etapa 1.3 Para o padro 2: Executar GA Simples. Executar Simulador squid com valores definidos pela etapa 2.1. Executar anlise bruta. Comparar os resultados da etapa 2.2 com etapa 2.3 Analisar os resultados dos dois padres.

Os parmetros utilizados para o Algoritmo Gentico Simples nos dois padres foram:

Nmero de Indivduos: 15 Quantidade de Geraes: 10 Probabilidade de Cruzamento: 0.8 Probabilidade de Mutao: 0.025 Espao de busca da funo de avaliao: Tamanho Mximo de Objetos: 1MB a 50MB Tamanho Mnimo de Objetos: 0 a 500KB. Algoritmo de Substituio de Objetos: 1 (LFU) ou 0 (LRU)

CAPTULO 5.

TESTES E RESULTADOS

30

Tanto o Simulador squid que atua como funo de avaliao do Algoritmo Gentico Simples quanto o Simulador da Anlise Bruta, utilizaram os seguintes parmetros: Espao de Armazenamento em Cache = 1GB; Arquivos para obteno dos objetos do primeiro ao 215o . Os outros parmetros utilizados pelo Simulador squid, algoritmo de substituio e tamanhos mximo e mnimo, foram denidos pelo Algoritmo Gentico Simples. A segunda fase de testes para cada padro foi uma Anlise Bruta. Essa anlise consistiu em determinar de forma manual valores (Tamanhos Mnimo e Mximo de objetos e algoritmo de substituio), e utilizar os resultados para validar o desempenho do Algoritmo Gentico Simples. O objetivo esperado com esta anlise mostrar que em padres diferentes o Algoritmo Gentico Simples chega ou aproxima do melhor resultado. Os parmetros utilizados na Anlise Bruta para o primeiro padro foram:

Tamanho Mnimo dos Objetos: 5KB 10KB 50KB 100KB 500KB Tamanho Mximo dos Objetos: 1MB 2MB 5MB 10MB 20MB 30MB 50MB Espao de Armazenamento em Cache : 1GB
E para o segundo padro foram:

Tamanho Mnimo dos Objetos: 100KB 200KB 500KB Tamanho Mximo dos Objetos: 1MB 2MB 5MB 10MB 20MB 30MB 50MB Espao de Armazenamento em Cache : 1GB
Os resultados e a anlise de cada etapa esto descritos na prxima seo.

5.2

Resultados e Anlise das Simulaes

Antes de realizar os testes modelados na seo anterior, foram executadas simulaes que tinham como objetivo vericar a implementao dos algoritmos. Em todas as simulao foi possvel perceber a sensibilidade do proxy squid ao tamanho do cache. Assim os dados descritos na seo anterior foram pensados e modelados cuidadosamente para que os resultados possam gerar margens de incertezas. O tempo de processamento foi algo que chamou ateno durante as simulaes. O fato do cache do Simulador squid possuir 1GB, dependo do padro dos objetos, pode atrasar o processamento. A busca e comparao feita com todos os objetos do cache para cada objeto. Assim, em alguns casos, bilhes de comparaes devem ser feitas para um nico individuo do Algoritmo Gentico Simples. A implementao da funo hash subdividindo o cache em 100 partes, gerou uma melhora muito grande no tempo de resposta. Antes da implementao do hash era possvel simular um cache de no mximo 100MB com uma quantidade x de objetos.

CAPTULO 5.

TESTES E RESULTADOS

31

Aps a implementao foi possvel utilizar um cache de 1GB e aumentar para 10*x a quantidade de objetos. Mesmo com essa grande melhoria o tempo de processamento da simulao para o primeiro padro durou 5 horas e para o segundo 60 horas. Para o primeiro padro, o Algoritmo Gentico Simples gerou um individuo com os seguintes resultados:

Tamanho Mnimo = 5 KB; Tamanho Mximo = 37.8 MB; Algoritmo de Substituio = 0.


A gura 5.1 mostra o resulta da evoluo dos ttnes. O marcador asteriscos representam os melhores indivduos de cada gerao. O marcador delta representa os piores indivduos e a linha continua mostra a mdia do ttnes de todos os indivduos. Na gura 5.1 possvel observar que o Algoritmo Gentico Simples teve uma evoluo relativamente rpida. Na primeira gerao o pior indivduo teve um ttnes igual a 3 e o melhor cou com ttnes igual a 17. J na quinta gerao o menor ttnes foi 13 e o pior ttnes foi 24. possvel observar que no geral h um grande crescimento na mdia dos ttnes mas existem momentos de queda. Esses momentos de queda caracteriza um maior nmero de indivduos com mutaes que distanciaram do timo local. Assim mesmo chegando ao melhor valor (24 neste caso), o Algoritmo Gentico Simples continua buscando outros pontos melhores, ou seja, no existe uma convergncia denitiva. Os valores Tamanho Mnimo e Mximo de objetos e o algoritmo de substituio foram utilizados para conrmar o percentual dos tamanhos de objetos encontrados em cache, denominado Byte Hit. Os resultados do Simulador squid foram:

MIN: 5 KB, MAX: 37.8 MB, HIT: 41%, BYTEHIT: 24%


Para validar os resultados apresentado pelo Algoritmo Gentico Simples, foi utilizado a Anlise Bruta com alguns valores predenidos descritos na seo anterior. A tabela 5.2 contm parte dos resultados da Anlise Bruta para o primeiro padro. Os melhores resultados esto em destaque. De acordo com esses resultados possvel observar que a Anlise Bruta encontrou o percentual de ttnes igual a 24% como o melhor valor. Algoritmo Gentico Simples, como j foi descrito, tambm chegou a este mesmo resultado. As simulaes para o segundo padro tiveram um tempo de processamento menor devido a caracterstica dos objetos. O melhor indivduo gerado pelo Algoritmo Gentico Simples foi:

Tamanho Mnimo = 100.000; Tamanho Mximo 45.800.000; Algoritmo de Substituio = 1.

CAPTULO 5.

TESTES E RESULTADOS

32

Figura 5.1: Evoluo dos ttnes para objetos maiores que 5 KB .

No segundo padro pode ser observado que o algoritmo de substituio de pginas mudou. No primeiro padro o algoritmo com melhor desempenho foi LRU, j no segundo padro o melhor foi o LFU. O resultado da execuo do Simulador squid com o melhor indivduo foi:

MIN: 100 KB, MAX: 45.8 MB, HIT: 35% , BYTEHIT: 14%

CAPTULO 5.

TESTES E RESULTADOS

33

Tabela 5.2: Amostra dos resultados obtidos na Anlise Bruta do primeiro padro . A Anlise Bruta para o segundo padro apresentou os resultados da tabela 5.3. Os melhores resultados esto em destaque. Utilizando os valores (Tamanho Mnimo = 100 KB e Mximo de 20MB a 52MB) a anlise chegou ao valor 14% para Byte Hit. Assim nos dois padres o Algoritmo Gentico Simples gerou resultados que chegaram aos mesmos valores da Anlise Bruta. Para os dois padres de objetos o Algoritmo Gentico Simples implementado encontrou os resultados esperados. Isso mostra que essa implementao pode ser usada para otimizar diversos casos onde no se sabe qual o padro de tamanho do objetos que so acessados fora da rede interna.

CAPTULO 5.

TESTES E RESULTADOS

34

Tabela 5.3: Amostra dos resultados obtidos na Anlise Bruta do segundo padro .

Captulo 6 Concluses
6.1 Concluses

A proposta foi implementar sistema de cache, utilizando tcnicas de inteligncia computacional, que denisse um conjunto de valores (Tamanho Mnimo, Tamanho Mximo e Algoritmo de Substituio) que otimize o cache squid de acordo com o padro de acesso. Para chegar este objetivo foram encontradas algumas diculdades como:

Tempo de processamento. O Simulador squid em algumas simulaes precisa avaliar mais de um bilho de objetos. Para cada teste o processamento destes objetos demoravam certa 5 dias. Para resolver essa diculdade foi implementada uma da funo hash subdividindo o cache em 100 partes, o que melhorou signicativamente tempo de execuo dos algoritmos. Denio do espao de busca. Uma das diculdades na implementao do Algoritmo Gentico Simples foi denir o espao de busca dos indivduos. Visto que, umas das caractersticas dos GAs ser o mais genricos possvel para das diversas situaes, encontrar um intervalo de busca para a funo de avaliao uma tarefa custosa. Para amenizar este problema foi extraido mdias estatsticas utilizando o Microsoft Oce Excel. Manipulao dos dados. Os arquivos de log utilizados para realizar as simulaes foram obtidos em formato de texto com todos os campos gerado pelo squid. Foi necessrio uma formatao completa dos desses dados e extrao das informaes teis para o trabalho.
Como pode ser observado no captulo anterior os resultados foram satisfatrios. Em cada um dos padres de testes (objetos maiores que 5 KB e objetos maiores que 100 KB), o Algoritmo 35

CAPTULO 6.

CONCLUSES

36

Gentico Simples alcanou o resultado esperado. Para validar os resultados do Algoritmo Gentico foi utilizado uma Anlise Bruta, onde mostrou que mesmo em ambientes com objetos de caractersticas diferentes possvel encontrar um conjunto de valores que ir otimizar a utilizao do cache. O sistema desenvolvido com o Algoritmo Gentico Simples conseguiu, em cada um dos padres, chegar a um valor igual ao melhor resultado da Anlise Bruta. Assim o sistema formado pelo Algoritmo Gentico Simples, Simulador squid e Anlise Bruta podem ser utilizados em diversos outros padres para denir os melhores valores que iro oferecer o maior percentual (possvel) de acesso ao cache (cache hit ). Para o usurio nal a grande vantagem de tudo isso que quanto maior o acesso ao cache do squid, melhor ser o desempenho da rede. Assim o tempo de resposta do acesso as pginas na Internet ser menor, gerando uma maior satisfao aos usurios da rede.

6.2

Trabalhos Futuros

Para trabalhos futuros existem diversas reas que podem ser exploradas tomando como base este trabalho, algumas delas so:

Analisar o desempenho do Simulador squid com outros parmetros do squid como o campo tipo de contedo (mime type ). Alm do Tamanho Mnimo e Mximo da pgina o campo tipo, que dene o tipo do objeto (vdeo, texto, imagem, html, etc), pode ser explorado para um possvel ltro antes de se armazenar o objeto em cache. Implementar e testas outros algoritmos para substituio de pgina. Em Squid.conf (2012), existem, alm do LRU e LFU dois algoritmos (heap GDSF e heap LRU ) suportados pelo squid que podem ser explorados. Executar os testes utilizando dados e padres de outras instituies. Neste trabalho foi utilizado dados de log de uma universidade, mas podem haver alteraes no percentual de byte hit se os dados estiverem pers de acesso diferente, como um hospital ou imobilirias. Desenvolver um algoritmo de substituio de pgina que otimize o byte hit de acordo com o ambiente que o cache squid esta trabalhando. Instituies diferentes tem padres de acesso diferentes. Existem reas, como universidades, que demandam muita banda. Desenvolver um algoritmo voltado para padro de acesso das universidades poder proporcionar uma melhoria signicativa no desempenho do cache squid Utilizar outras tcnicas da computao evolutiva, como evoluo diferencial. Neste trabalho foi implementado o Algoritmo Gentico Simples, outras tcnicas poderiam proporcionar um resultado diferente ou at melhor.

Referncias Bibliogrcas
Aguiar,

http://www.vivaolinux.com.br/artigo/Varnish-Uma-camada-de-velocidade.

A.

S.

(2010).

Varnish:

Uma

camada

de

velocidade.

Albrecht, C. H. (2005). Algoritmos evolutivos aplicados sntese e otimizaa de sistemas de ancoragem. Master's thesis, Universidade Federal do Rio de Janeiro, Rio de Janeiro. Araki, L. Y. (2009). Um algoritmo evolutivo de gerao de dados de teste para stisfazer critrios baseados em cdigo objeto java. Master's thesis, Universidade Federal do Paran. Bastos, E. R. (2004). Congurando um Squid Ninja. GPL. Geib, H. T. (2008). Estudo e anlise de registros do servidor squid. Master's thesis, Universidade Federal do Rio Grande do Sul. Kurose, F. and Ross, K. W. (2010). Redes de Computadores e a Internet: uma abordagem Top-Down. Pearson, So Paulo, SP, Brasil. Linden, R. (2006). Algoritmos Genticos: Uma importante ferramenta da Inteligncia Computacional. Brasport, Rio de Janeiro. Siewert, V. C. (2007). Ferramenta web para administrao do servidor proxy squid. Master's thesis, Universidade Regional de Blumenau. Silva, A. Q. (2010). Implantao de servidor proxy utilizando o squid em modo no autenticado, junto com o dansguardiam para controle de contedo na instituio de ensino. Master's thesis, Universidade Federal de Lavras. Squid.conf (2012). squid.conf: squid 3.0.stable1. http://www.squid-cache.org/. Tanenbaum, A. S. (2010). Redes de Computadores. Campus, Amsterdam, Holanda.

37

Anda mungkin juga menyukai