Voltar aos projetos

Estudo acadêmico · Memória cache

CacheLab

Um simulador em Python para comparar FIFO, LRU e LFU sobre o mesmo trace de acessos, com resultados em CSV, gráficos e relatório.

  • Python
  • pytest
  • Matplotlib
  • ReportLab
  • FIFO
  • LRU
  • LFU
Gráfico do experimento CacheLab comparando hit ratio de FIFO, LRU e LFU em três capacidades de cache.
Resultado salvo do experimento · trace sintético

Contexto

Políticas de substituição fazem escolhas diferentes diante da mesma sequência de acessos. O CacheLab foi desenvolvido para estudar essa diferença de forma reproduzível: controlar a capacidade, repetir o trace e comparar acertos e faltas sem misturar o algoritmo com a apresentação dos resultados.

Minha participação

Implementei o simulador, as três políticas, a interface de linha de comando e os scripts de geração de trace, experimentos e relatório. Organizei também testes das políticas, dos dados de entrada e das saídas para conectar o comportamento do algoritmo às métricas produzidas.

Como funciona

  1. Um gerador com seed produz acessos sintéticos com diferentes níveis de frequência e localidade.
  2. O simulador valida o CSV e aplica a política escolhida com uma capacidade de cache definida.
  3. Cada acesso incrementa hits ou misses; o experimento repete a combinação de políticas e capacidades.
  4. Os resultados são exportados para CSV, comparados em gráfico e usados na montagem de um relatório em PDF.

Decisões técnicas

Usar a mesma entrada para comparar

Separar geração do trace e execução permite que todas as políticas recebam a mesma sequência. A seed e os parâmetros deixam explícito o cenário que produziu cada resultado.

Definir o desempate do LFU

Quando dois itens têm a mesma frequência, o simulador remove o inserido há mais tempo. Tornar esse detalhe explícito no algoritmo e nos testes evita comparações apoiadas em um comportamento acidental.

Aprendizados

Uma comparação de algoritmos precisa dizer mais do que qual linha terminou acima no gráfico. O trace e a capacidade explicam o resultado; variar esses elementos ajuda a compreender quando uma política favorece o padrão de acesso observado.

Limites e próximos passos

  • O estudo usa traces sintéticos e simula substituição por item; não mede desempenho de uma cache de hardware ou de produção.
  • O gráfico representa uma execução salva, não uma superioridade universal de determinada política.