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
Orientador:
Junho 2012
Universidade Estadual de Montes Claros Departamento de Cincias da Computao Especializao em Engenharia de Sistemas de Informao
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.
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.
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
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
14
14 15 15 16
4 Desenvolvimento
4.1 4.2 4.3 4.4
. . . . . . . . . . . . . . . . . . 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
5 Testes e Resultados
5.1 5.2
28
6 Concluses
6.1 6.2
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
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
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
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.
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
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.
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.
. 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
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.
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
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.
CAPTULO 2.
CACHE E SQUID
13
Tamanho (
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 (
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.
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.
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
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,
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
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
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.
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.
5.1
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
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
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:
CAPTULO 5.
TESTES E RESULTADOS
32
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