Cache/Buffer

Embora não seja tão importante para o desempenho quanto geralmente se pensa, o cache permite à controladora executar um conjunto de operações úteis para melhorar o desempenho.

Geralmente ao ler um arquivo, serão lidos vários setores sequenciais. A forma mais rápida de fazer isso é, naturalmente, fazer com que a cabeça de leitura leia de uma vez todos os setores da trilha, passe para a trilha seguinte, passe para a terceira e assim por diante. Isso permite obter o melhor desempenho possível.

O problema é que na prática não é assim que funciona. O sistema pede o primeiro setor do arquivo e só solicita o próximo depois de recebê-lo e certificar-se de que não existem erros.

Se não houvesse nenhum tipo de buffer, a cabeça de leitura do HD acabaria tendo que passar várias vezes sobre a mesma trilha, lendo um setor a cada passagem, já que não daria tempo de ler os setores sequencialmente depois de todo tempo perdido antes de cada novo pedido.

Graças ao cache, este problema é resolvido, pois a cada passagem a cabeça de leitura lê todos os setores próximos, independentemente de terem sido solicitados ou não. Após fazer sua verificação de rotina, o sistema solicitará o próximo setor, que por já estar carregado no cache, será fornecido em tempo recorde.

Nos HDs atuais, o cache pode ser usado também nas operações de escrita. Imagine, por exemplo, que a controladora está ocupada lendo um arquivo longo e o sistema solicita que ela atualize um pequeno arquivo de log. Em vez de precisar parar o que está fazendo, a controladora pode armazenar a operação no cache e executá-la mais adiante, em um momento de ociosidade.

Nos HDs SATA com NCQ, a controladora possui liberdade para reorganizar as operações, realizando-as de forma que sejam concluídas mais rápido. A controladora passa então a armazenar os dados no cache, de forma que, depois de concluídas as operações, possa organizar os dados e entregá-los na ordem correta para o sistema.

O espaço excedente é usado para armazenar os últimos arquivos acessados, para eles possam ser fornecidos rapidamente caso sejam requisitados novamente. A principal vantagem de usar um cache maior seria justamente ter mais espaço para arquivos. A questão é que o sistema operacional também mantém um cache de leitura e gravação utilizando a memória RAM que, por ser maior que o cache do HD, acaba sendo mais eficiente e também mais rápido (já que o cache do HD tem sua velocidade de transferência limitada à velocidade da interface IDE ou SATA, enquanto o cache feito pelo sistema operacional está limitado apenas à velocidade de acesso da própria memória RAM).

Esse é o principal motivo de um HD com mais cache não ser tão mais rápido quanto se pensa. Enquanto dobrar o tamanho do cache L2 de um processador aumenta seu desempenho em até 10%, aumentar o cache de um HD de 16 para 32 MB, por exemplo, acaba aumentando seu desempenho real em menos de 1% na maioria das aplicações. Uma pequena quantidade de cache é importante por causa de todos os recursos que vimos, mas a partir de um certo ponto, o tamanho do cache acaba fazendo pouca diferença.

No final das contas, a melhor forma de melhorar o desempenho do HD é comprando mais memória RAM e permitindo que o sistema operacional use mais cache de disco. No caso do Windows XP, verifique a configuração do cache de disco no Painel de Controle > Sistema > Avançado > Configurações > Avançado > Uso de memória, mudando de “Uso dos programas” para “Cache do sistema”. No caso do Linux, o cache é gerenciado de forma automática pelo sistema, usando a memória disponível, de forma que não é necessária nenhuma configuração adicional.

Opções de desempenho do Windows

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X