Nesta seção, são apresentados trabalhos relacionados ao domínio da configuração e uso de políticas de admissão e de substituição em cache com o uso de simuladores.
O simulador de González-Cañete, Casilari, Triviño-Cabrera (GONZáLEZ-CANETE et al., 2008) reproduz o comportamento do servidor proxy Squid a partir dos registos de eventos (logs) armazenados. Apenas as entradas que contêm código de respostas HTTP com resultados de consultas no corpo da mensagem são consideradas, sendo as demais descartadas. Informações como tempo de acesso, latência de transferência, tamanho, tipo e identificação do documento requisitado servem de entrada de dados para o simulador de caches. É possível simular treze políticas de substituição e duas políticas de controle de admissão. Ao final de cada simulação, medidas estatísticas, tais como o número de requisições, documentos aceitos ou rejeitados, documentos excluídos, taxa de acertos e taxa de acertos de bytes, são disponibilizadas em formato de textos. Desenvolvido em Borland C++ Builder, no sistema operacional Windows˝o, permite a criação de políticas de substituição personalizadas, porém, para isso é necessário a manipulação do código-fonte da ferramenta. Simulações simples podem ser realizadas através de uma interface de entrada de dados, entretanto, apenas uma instância de servidor proxy é utilizada por cenário de simulação. Para obtenção de gráficos, ferramentas adicionais, tais quais Matlab ou MS − Excel, fazem-se necessárias.
Cao e Irani (CAO; IRANI, 1997) propuseram o simulador denominado Web Cache, que também faz uso de logs do Squid. A ferramenta é capaz de simular algoritmos de políticas de substituição usando vários atributos do documento, um por vez. Escrito em C++, este simulador inclui códigos para as políticas Least-Recently-Used (LRU) (PODLIPNIG; BöSZöRMENYI, 2003) , SIZE (BALAMASH; KRUNZ, 2004) e Lowest Relative Value (LRV) (BALAMASH; KRUNZ, 2004). O mesmo faz uso de uma fila de prioridade para ordenar os documentos de acordo com o algoritmo definido pela política e, em seguida, determina o conteúdo para exclusão do cache quando nova alocação é necessária. Como no trabalho de González-Cañete, Casilari, Triviño-Cabrera (GONZáLEZ-CANETE et al., 2008), a ferramenta de Cao e Irani (CAO; IRANI, 1997) precisa realizar um pré-processamento no arquivo de log do Squid para que este alimente o simulador.
O Multikey Web Cache Simulator (MWCS), apresentado em Cardenas et al. (CAR- DENAS et al., 2004), à semelhança dos simuladores apresentados, faz uso de registros do Squid para alimentar a ferramenta. Desenvolvido em C++, permite o desenvolvimento de políticas
de substituição especializadas. O MWCS dispõe de alguns métodos estatísticos para obter os resultados e métricas para análise, tais como número de requisições, número de exclusões de conteúdos do cache, taxa de acerto, média do tempo de resposta. O principal diferencial em relação aos anteriormente apresentados é que o MWCS permite a criação de políticas que utilizam múltiplos atributos de um documento simultaneamente.
Proxim (CáCERES et al., 1998) é um simulador de rede e caches que emula o comportamento de um proxy usando arquivos de log de um proxy real. Medidas de latência estimadas foram comparadas com medidas reais para validar a ferramenta. Nenhuma comparação de desempenho de algoritmos de substituição foi realizada, pois os experimentos fazem uso de um cache infinito.
Cardenas et al. (CARDENAS et al., 2005) apresentam um f ramework para simu- lação de proxies da web. Utilizando também arquivos de log gerados pelo Squid, para validar o trabalho, foi realizada uma análise de desempenho e os resultados comparados a um sistema real usando a política mais comum (CARDENAS et al., 2004): a LRU. Os resultados obtidos mantém o desempenho do f ramework muito próximo ao sistema real.
Network Simulator (NS) (Network Simulator, 2016) é o mais popular dos simulado- res de redes disponível (GONZáLEZ-CANETE et al., 2008). Entretanto caching não é o forte desta ferramenta, que disponibiliza apenas uma classe HTTP para modelar um cache simples de tamanho infinito (PODLIPNIG; BöSZöRMENYI, 2003). NS não implementa algoritmos de substituição, nem mede o desempenho de armazenamento em cache.
Todos os trabalhos relacionados nesta seção fazem uso apenas de arquivos de log do Squid como fonte de entrada de dados. A explicação disso é o fato desses arquivos de logs refletirem o padrão Zipf (PODLIPNIG; BöSZöRMENYI, 2003) de distribuição para solicitação de documentos da Internet. Nenhum dos simuladores elencados reproduz o comportamento de múltiplos servidores proxies simultaneamente. Em (GONZáLEZ-CANETE et al., 2008) e (CARDENAS et al., 2004) afirma-se que os simuladores permitem a criação de políticas de substituição personalizadas, entretanto, não é apresentada a validação desta funcionalidade. Além disso, as ferramentas relacionadas nesta seção disponibilizam, na grande maioria das vezes, apenas as métricas taxa de acertos de solicitações (hit ratio) e taxa de acertos de bytes (byte hit ratio), deixando de considerar outros aspectos que podem ser relevantes para a configuração de caches, tais como: número de erros, número de substituições de documentos, tempo de recuperação de conteúdos, dentre outros.
O CacheSim, simulador apresentado neste trabalho, busca expandir as catacterísticas dos trabalhos apresentados nesta seção. Apesar de poder usar os logs do Squid, são permitidas outras formas de entrada. É possível reproduzir o comportamenteo de múltiplos servidores proxiessimultaneamente e seu mecanismo de extensão é sistematizado e orientado pela criação de interfaces apropriadas. Além disso, ao contrário da ferramenta apresentada em (GONZáLEZ- CANETE et al., 2008), ao final de cada simulação, o CacheSim disponibiliza um conjunto de gráficos específicos: hit ratio por tamanho do cache, byte hit ratio por tamanho do cache, número de substituições por tamanho do cache, número de erros por tamanho do cache, hit ratio por número de solicitações, byte hit ratio por número de solicitações, dentre outros.