A arquitetura do CacheSim, apresentada pelo diagrama de componentes da Figura 5, é composta por quatro módulos integrados: módulo de entrada de dados (MED), módulo de processamento de dados (MPD), módulo de coleta de resultados (MCR) e módulo gerador de gráficos estatísticos (MGGE). As funcionalidades de cada um são detalhadas nas próximas sub-seções.
Figura 5 – Representação das Dependências entre os Módulos do CacheSim.
3.4.2.1 Módulo de Entrada de Dados:
O Módulo de Entrada de Dados (MED) é responsável pela definição, via interface gráfica, dos cenários e parâmetros de simulação. Os componentes servidores da Internet, servidores caches, estações de trabalho, enlaces de comunicação e documentos podem ser
arrastados e liberados na Área de Trabalho do MED para composição desse cenário. É possível configurar, dentre outras coisas, o número de servidores da Internet, o número de caches e as políticas de substituição e admissão a elas associadas, a taxa de bits do enlace entre os servidores da Internet e caches, a taxa de bits do enlace entre os caches e as estações de trabalho dos usuários, o número de estações de trabalho associados a cada cache e os arquivos solicitados ao cache por cada estação de trabalho. A Figura 6 apresenta a configuração de um componente cache integrante de um cenário de simulação composto por um servidor da Internet, dois servidores cachese seis estações de trabalho.
Os arquivos solicitados por uma estação de trabalho ao servidor cache podem ser des- critos via MED como fichas de uma RPC ou carregadas de um arquivo de log do Squid, seguindo o pré-processamento de dados apresentado por González-Cañete, Casilari, Triviño-Cabrera (GONZáLEZ-CANETE et al., 2008). Cada estação de trabalho pode ter sua própria relação de arquivos para solicitação ao cache. Estes são aleatoriamente demandados ou distribuídos por uma função de densidade e probabilidade (FDP) programada pelo usuário. Os estudos apresen- tados em (PODLIPNIG; BöSZöRMENYI, 2003) e (BALAMASH; KRUNZ, 2004) sugerem que a recuperação de documentos da WWW segue uma distribuição de Zipf (PODLIPNIG; BöSZöRMENYI, 2003) e, por isso, o CacheSim disponibiliza a FDP Zipf para determinar a demanda de conteúdos por parte de uma estação de trabalho. Outro aspecto relevante do MED é permitir ao CacheSim a possibilidade de reconfiguração do ambiente de simulação em tempo de execução, como a adição ou a modificação da política de substituição de documentos, o que reflete uma necessidade real em sistemas distribuídos: a reconfiguração dinâmica de caches.
3.4.2.2 Módulo de Processamento de Dados:
O Módulo de Processamento de Dados, composto por um modelo RPC, uma ca- mada intermediária e uma interface especial para programação de extensões em Java1(IEJ), é responsável pelo processo de simulação propriamente dito. Quinze políticas de substituição e duas políticas de admissão estão programadas no modelo e disponíveis para construção de cenários de testes. Para a simulação de cenários não previstos, a IEJ permite a especialização do CacheSim com a inclusão de novas funcionalidades. Podem ser programadas novas políticas de substituição em cache sem a necessidade de modificações no modelo RPC. Para que isso seja possível, uma camada de software dá suporte à comunicação, em modo de simulação, entre o
CPN Tools (Ferramenta empregada no desenvolvimento do modelo RPC usado pelo CacheSim) (CPN Tools, 2016) e programas escritos em Java. Estados e eventos não previstos pelo modelo podem ser programados pelo usuário através da IEJ e automaticamente incorporados ao modelo RPC.
Uma das funções da camada intermediária é ocultar as diferenças de representação de dados entre a linguagem usada pelo CPN Tools (CPN ML) e o código Java. Para isso, as fichas do modelo RPC são convertidas em objetos que podem ser manipulados através de métodos Java. Ao final, o retorno do método é interceptado e novamente convertido em fichas que retornam ao modelo.
3.4.2.3 Módulo Coletor de Resultados:
O Módulo Coletor de Resultados (MCR) é responsável pela extração de métricas de desempenho definidas durante a simulação, sendo constituído pelos monitores do CPN Tools associados ao modelo base do CacheSim e, assim como o MPD, por uma interface de programação que permite a extensão de suas funcionalidades. Um monitor é um mecanismo do CPN Tools que permite observar, inspecionar, controlar ou modificar uma simulação de um modelo RPC (CPN Tools, 2016).
O modelo RPC do componente MPD é dotado de monitores específicos, capazes de fornecer uma série de medidas estatísticas, tais como média, desvio padrão e variância de documentos solicitados, taxa de acerto de documentos solicitados (hit ratio), taxa de acerto de bytes de documentos solicitados (byte hit ratio), tempo de recuperação de documentos, percentual de utilização do cache, dentre outros.
A interface de extensões permite a especialização da extração de dados para tratamen- tos não previstos pelos monitores. Assim como no MPD, fichas do modelo RPC são convertidos em objetos, que podem ser manipulados pelo IEJ para mensuração de características. Ao final desse processo, o retorno do método é interceptado pela camada de suporte à comunicação, que faz o processo inverso, devolvendo objetos manipulados sob a forma de fichas ao modelo. A quantidade e o tamanho dos documentos excluídos são exemplos de medidas adicionais que podem ser obtidas com o uso da IEJ.
3.4.2.4 Módulo Gerador de Gráficos Estatísticos:
O MGGE, composto por monitores do CPN Tools, é responsável pela apresentação de resultados de simulação na forma de gráficos. Ao final de cada simulação, os monitores disponibilizam scripts do Gnuplot que automatizam o processo de criação de gráficos pré- determinados a partir das observações feitas no modelo. Os gráficos “taxa de acertos versus número de documentos solicitados” e “número de substituições versus tamanho do cache” são exemplos de representações obtidas a partir dos monitores do CPN Tools.