Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
18/10/1999
< Cache: O Problema >

Comparados à memória, discos comportam-se como protagonistas daquelas cenas em câmara lenta nas quais a mocinha corre para os braços do herói e os dois rodopiam lânguidos e trêfegos sob a chuva. Lindo de morrer, mas devagar quase parando. Portanto a idéia de copiar na memória os trechos mais acessados do disco rígido surgiu naturalmente. Como acessos a memória são muitíssimo mais rápidos que a disco, o artifício implica uma melhoria notável no desempenho do sistema. A técnica é de uso corrente e recebeu o nome de "cache", termo que em inglês (sim, a palavra é de origem francesa mas existe no idioma inglês) significa "esconderijo", uma alusão ao fato de que os dados do disco permanecem "escondidos" na memória (este é apenas um tipo de cache, o de disco; há outros, inclusive o da própria memória, no qual trechos de memória de acesso relativamente lento são copiados em chips de acesso mais rápido, mas não pretendo entrar em detalhes técnicos para não suscitar justas reclamações e me aterei ao cache de disco, que é o que interessa para hoje).

Nos primórdios do DOS o cache era gerenciado por um programa independente. Depois, passou a integrar o sistema operacional. Nas versões mais recentes, inclusive nas que davam suporte a Windows 3.1, o cache do DOS era gerenciado pelo Smartdrv, um módulo invocado através de uma linha de comando do arquivo de configuração Config.Sys.

Com Windows 95 o controle do cache passou a ser feito diretamente pelo sistema operacional através de um gerenciador virtual de dispositivo, o módulo Vcache, carregado durante a inicialização. Ele ocupa uma região da memória e nela copia os setores do disco recentemente acessados, partindo do princípio que os próximos acessos se farão nesses mesmos setores, um fato comprovado probabilisticamente. Experimente: logo após inicializar seu computador, cronometre o tempo levado para carregar um programa qualquer. Em seguida, feche o programa e carregue-o novamente. Repare: a segunda carga é visivelmente mais rápida já que não é feita do disco, mas da cópia dos setores armazenada no cache.

O problema com o cache é que ele ocupa memória. Se crescer demais e se a máquina não tem bastante memória, a emenda sai pior do que o soneto. Isto ocorre quando a memória RAM é totalmente ocupada. A partir daí, ao se carregar mais um programa, o sistema operacional terá que apelar para a "memória virtual", ou seja, copiar no disco trechos da memória para liberar o espaço necessário para o novo programa. A troca, agora, é inversa (usar disco como se fosse memória) e o resultado é uma brutal queda de desempenho. A coisa é particularmente séria em Windows 95, que mantém na memória duas cópias do código executável dos programas (pelo menos do último a ser carregado), uma delas no cache, outra no trecho que armazena o código executável. Windows 98 amenizou o problema permitindo que o sistema "mapeie" o cache, ou seja, acesse o código executável diretamente no cache onde está armazenado, reduzindo bastante o uso de memória. Mas ainda assim a coisa é séria.

A questão é particularmente complicada porque o tamanho do cache é variável e controlado pelo próprio Windows, que aumenta ou diminui o espaço ocupado na memória tentando otimizar o desempenho do sistema. Mas nem sempre consegue, já que o tamanho ótimo depende do uso que se dá a máquina. É verdade que Windows dá uma pequena chance de ajustar os tamanhos mínimo e máximo do cache, mas a coisa é tão escondida e o uso tão críptico que só meia dúzia de sábios descortinaram que se você abrir o objeto "Sistema" do Painel de Controle, clicar no botão "Sistema de Arquivos", passar para a aba "Disco rígido" e escolher uma das três opções disponíveis na caixa "Funções deste computador" estará ajustando os limites do cache, portanto se você não sabia não é o caso de se envergonhar (aliás, era até bom não saber, posto que em Windows 95 duas das funções estavam trocadas e se você tentasse otimizar a situação para uma acabaria usando o ajuste mais adequado para a outra, inaugurando um novo tipo de técnica de ajustes: a "pessimização").

Hoje apresentei o problema: conseguir uma forma de ajustar o cache de modo a otimizar o desempenho da máquina de acordo com seu uso.

Semana que vem apresento a solução. E se você está receoso que este seja o prenúncio de uma nova série comprida e chata, sossegue: prometo que encerro o assunto na próxima coluna. Portanto, comprida, com certeza não será.

B. Piropo