next up previous contents
Next: Referências Bibliográficas Up: relatorio Previous: Semana 2   Sumário

Conclusão

Com a diferença cada vez maior entre a velocidade das CPUs e a velocidade do acesso ao disco, o custo de se escrever uma página em disco, no caso de swap, assim como o número de ciclos de processamento gastos tenderá a crescer. Como nem hoje em dia a própria memória RAM está conseguindo acompanhar a velocidade das CPUs, ela está se tornando um fator crítico no desempenho do sistema.

Esse é um parágrafo citando os argumentos do Scott F. Kaplan em seu paper [7] e também em sua tese de doutorado [10]. O fato é que já se foi feito muitos estudos sobre memória virtual e à epóca comprovou-se que não se valia a pena um cache comprimido pois a diferença entre a CPU e o disco não era tão grande, e a memória não era um fator crítico.

Hoje em dia, através de simulações, Kaplan conseguiu comprovar que utilizando um cache adaptativo e a relatividade de tempo-escala, consegue-se dimi-nuições de até 80% no custo de paginações (busca das páginas em disco), enquanto não se aumenta o custo da paginação no cache comprimido em mais do que 10%.

Partindo desse pressuposto, demos início ao projeto que visava a implementação desse cache comprimido no sistema de memória virtual do kernel do Linux, para tentar comprovar esse ganho de eficiência. Desde o começo já tínhamos alguma idéia da dificuldade que enfrentaríamos e sabíamos do seu alto grau de complexidade da implementação, mesmo que isso fosse efetuada no chamado user-space. Além disso, estaríamos mexendo com o kernel de um sistema operacional, que é seguramente um dos programas mais complexos (dificuldade se trabalhar e entender) que existe e está no topo quando se considera programar nesse ambiente, pois estamos no chamado core kernel.

Acreditamos, apesar de ouvirmos por parte dos professores que resultaria em uma grande tese de mestrado devido à sua riqueza de conteúdo e complexidade, que seria possível implementar essa idéia completamente até o final da iniciação científica e que, partindo dessa implentação, poderiam ser gerados estudos muito aprofundados para um mestrado. Isso foi acreditado até que começou-se a mexer com o código-fonte do kernel, o que a princípio gerou um certo espanto e até desespero.

Felizmente conseguimos driblar o desespero inicial, mas o espanto continuou. Vencemos diversos desafios de entendimento do código, mas isso demorou sempre muito tempo, pela falta de documentação e falta de pessoas que conhecessem isso a fundo e quisessem nos ajudar. Certas estruturas, mesmo entre os nossos orientadores experientes em Sistemas Operacionais e Unix/Linux, eram conhecidas por poucos. E infelizmente ninguém disponível.

Atingimos um grau de compressão e entedimento razoável do gerenciamento de memória do Linux, tanto em questão conceitual como também na questão de implementação. Não temos um conhecimento minucioso de todas os detalhes e de todas as entranhas do código, mas orgulhamos-nos de ter um conhecimento geral de todo o código e mais específico da parte do swap. Em especial quando se trata de um código de aproximadamente 10000 linhas e contendo uma codificação altamente avançada.

Também tivemos um contato muito grande com a codificação no conhecido kernel-space, um espaço em que não tivemos a chance de conhecer durante a nossa graduação. Foi um contato sempre semeado de dúvidas de conceitos, da codificação, de erros da codificação, de um sentimento de falta de ajuda. Foi extremamente enriquecedor no ponto de vista de amadurecer muito a nossa capacidade de desenvolvimento de programas, pois aprendemos deveras vendo o código-fonte de ``primeira classe'' do kernel, e além disso também porque nos proveu uma oportunidade de aprender a desenvolver bons códigos, com minimização de erros simples de codificação. Outro lado bem interessante da codificação foi o conhecimento da linguagem C que aprofundamos, a linguagem Assembler que revemos e o compilador GNU gcc, que nos fascinou com seus muitos recursos de otimização.

O contato que tivemos com o mundo e a comunidade de software livre foi também impressionante. Mudou nosso pensamento sobre essa comunidade altamente capacitada, a despeito de sonegar informação. Foi fascinante esse contato com o mundo do Bazar do Eric Raymond, com esses desenvolvedores do mundo todo, todos por paixão, alguns também por dinheiro, que fazem do Linux o sistema operacional que é hoje.

Gostaríamos de concluir dizendo que foi um trabalho muito enriquecedor para todos os integrantes. O trabalho em grupo, o contato agradável com os nossos professores, e as pessoas que gentilmente tentaram nos ajudar durante o percurso do projeto. Agradecemos a todos.

<marcelo> Mas o que voce aprendeu fazendo vale mais que o 
resultado final. :)
-- Marcelo Tosatti, da Conectiva, comentando no #kernelnewbies
   sobre a não finalização do nosso cache.


next up previous contents
Next: Referências Bibliográficas Up: relatorio Previous: Semana 2   Sumário
Rodrigo Souza de Castro 2000-12-18