Monitorização do Kernel de Linux

Objectivo do Trabalho

Estudar os diferentes módulos que fazem parte do kernel de Linux, e monitorizar a sua participação no desempenho de aplicações do sistema.

Implementação do Trabalho

  1. Divida o kernel de Linux em diferentes módulos (e.g. escalonador, device drivers, ou sistema de arquivos). Encontre a interface entre esses módulos e inclua contadores para verificar quantas vezes esses módulos são chamados.
  2. Implemente um pequeno device driver para ler esses contadores. Experimente com o proc. Implemente um pequeno programa para guardar a informação em arquivo.
  3. Estude o desempenho do kernel submetendo-o a diferentes cargas, tais como: um servidor de WEB servindo páginas estáticas ou CGIs, transferências de ftp sobre a rede local, tar e untar de arquivos pequenos e grandes (maiores que a memória central), compilação de programas grandes como o próprio kernel Linux.
  4. Use os contadores do Pentium/PentiumPro para obter informação mais detalhada sobre tempo de execução. Analise também a performance de cache, e outros parâmetros que considere interessantes.

Avaliação

O trabalho deverá incluir um relatório com a descrição completa do trabalho e análise de resultados. A descrição do trabalho deverá explicar as principais alterações ao kernel, quais os programas desenvolvidos e aplicações usadas. Explique cuidadosamente as suas decisões no relatório.

O formato preferido para o relatório é HTML.

Pode escolher outros kernels, tais como o do FreeBSD.

Material de Apoio

Os seguintes livros são as principais referências para o kernel de Linux:

O site KernelNotes também inclui bastante informação interessante, incluindo arquivos das listas do kernel. Uma descrição do kernel encontra-se no Linux Kernel Module Programming Guide de Ori Pommerantz. Richard Gooch também tem informação interessante sobre o kernel de Linux.

Vários microprocessadores fornecem hardware counters para registar eventos no CPU. Eventos de interesse incluem número de ciclos, número de cache misses ou de TLB misses ou número de saltos condicionais, entre muitos outros. Veja a página de David Mentré para uma explicação geral. Como referência extra, suporte a hardware counters é também incluído no kernel do FreeBSD e é parte da package Beowulf. Os contadores são descritos no manual de optimização da Intel.


vitor@cos.ufrj.br