Swap e cache de disco

Bem antigamente, nos anos 80 (época dos primeiros PCs), você só podia rodar programas que coubessem na memória RAM disponível. Naquela época, a memória RAM era absurdamente mais cara e o mais comum era usar apenas 256 ou 512 KB, milhares de vezes menos do que usamos hoje em dia. Os mais abonados tinham dinheiro para comprar um megabyte inteiro, mas nada além disso.

Se você quisesse rodar um programa com mais de 256 KB, tinha que comprar mais memória, não tinha conversa. Sem outra escolha, os programadores se esforçavam para deixar seus programas o mais compactos possíveis para que eles rodassem nos micros com menos memória.

A partir do 386 os PCs ganharam suporte ao uso de memória virtual, um recurso que permite usar espaço do HD para simular a presença de mais memória RAM, amenizando o problema. A memória virtual pode ser armazenada em um arquivo especialmente formatado no HD, ou em uma partição dedicada (como no caso do Linux) e a eficiência com que ela é usada varia bastante de acordo com o sistema operacional, mas ela permite que o sistema continue funcionando, mesmo com pouca memória disponível.

A ideia básica é o uso do arquivo ou partição do HD como uma área de troca (ou swap) onde o sistema pode arquivar páginas de memória que não estão sendo usadas, liberando memória física. Quando alguma das páginas é necessária, o sistema a copia de volta para a memória (possivelmente copiando outras de volta para o HD) e assim continuamente, até que você feche alguns aplicativos e o sistema volte a ter memória disponível.

O grande problema com o uso de swap é que o HD é muito mais lento que a memória RAM. Enquanto uma sequencia de 4 leituras em um módulo de memória DDR2-800 demora cerca de 35 bilionésimos de segundo, um acesso a um setor qualquer do HD demora pelo menos 10 milésimos. A taxa de transferência nominal do mesmo módulo de memória é de 6.4 GB/s, enquanto que mesmo um HD rápido, de 7200 RPM, tem dificuldades para superar a marca de 80 MB/s, mesmo quando lendo setores sequenciais. Ou seja, a memória RAM possui nesse caso um tempo de acesso quase 300.000 vezes menor e uma taxa de transferência contínua quase 100 vezes maior que o HD.

Se lembrarmos que a memória RAM já é muito mais lenta que o processador (justamente por isso temos os caches L1, L2 e L3), fica fácil perceber o quanto o uso de memória swap por falta de memória RAM física pode prejudicar o desempenho do sistema.

A fórmula é simples: quanto menos memória RAM, mais swap é usado e mais lento o sistema fica. Sempre que um aplicativo precisa de dados armazenados no swap, o sistema precisa primeiro copiar a página de volta para a memória RAM, para que só então o processador possa acessá-lo e continuar o processamento. É por isso que micros antigos podem ficar tão lentos, chegando ao ponto de demorarem minutos para chavear entre dois aplicativos.

Hoje em dia, o uso de swap não é mais um problema tão grande pois a queda nos preços da memória fez com que a maioria dos micros novos passassem a vir com pelo menos 1 GB. Entretanto, até pouco tempo atrás era muito comum ver PCs novos com apenas 256 ou até mesmo 128 MB de memória (dos quais ainda eram subtraídos a memória usada pelo chipset de vídeo onboard), que se arrastavam para executar até mesmo as tarefas mais básicas. Nesses casos, de nada adiantava um processador mais rápido.

É fácil monitorar o uso de swap. No Windows XP ou Vista basta pressionar Ctrl+Alt+Del e acessar o gerenciador de tarefas, enquanto no Linux você pode usar o comando “free” ou um aplicativo de gerenciamento, como o ksysguard.

No caso do Windows Vista é possível usar um pendrive como memória adicional, através do ReadyBoost. Neste caso entretanto, o pendrive é usado como uma extensão da memória swap e não como um substituto da memória RAM. Como o pendrive oferece tempos de acesso mais baixos, ele acaba sendo mais eficiente que o HD nessa tarefa, muito embora a taxa de leitura seja geralmente mais baixa.

Esse recurso pode ajudar em micros com pouca memória RAM e também reduzir o tempo de carregamento dos programas. É uma opção para casos em que você já tem o pendrive e procura um uso para ele, mas não espere milagres. Em se tratando de memória, não existe o que inventar: ou você procura um sistema operacional e programas mais leves, ou compra mais memória. Não dá para ficar em cima do muro.

Por outro lado, quando você tem instalado mais memória do que o sistema realmente precisa, é feito o inverso. Ao invés de copiar arquivos da memória para o HD, arquivos do HD contendo os programas, arquivos e bibliotecas que já foram anteriormente abertos é que são copiados para a memória, fazendo com que o acesso a eles passe a ser instantâneo. Os programas e arquivos passam a ser abertos de forma gritantemente mais rápida, como se você tivesse um HD muito mais rápido do que realmente é.

Esse recurso é chamado de cache de disco e (sobretudo no Linux) é gerenciado de forma automática pelo sistema, usando a memória disponível. Naturalmente, o cache de disco é descartado imediatamente quando a memória precisa ser usada para outras coisas. Ele é apenas uma forma de aproveitar o excedente de memória, sem causar nenhum efeito desagradável.

Você pode acompanhar o uso de cache de disco usando o comando free. Ao executá-lo em um PC que já está ligado há algum tempo, você vai notar que quase toda a memória aparece como ocupada. No screenshot a seguir, temos um PC com 3 GB, onde ele reporta apenas 146 MB disponíveis:

m390a6dd7

Como pode imaginar, quase tudo está sendo usado pelo cache de disco. A memória realmente ocupada aparece na segunda linha (-/+ buffers/cache). No exemplo temos apenas 754 MB de memória em uso, o que significa que o sistema está usando mais de 2 GB de cache de disco, o que resulta em um sistema muito mais responsível, onde aplicativos já usados carregam muito rápido.

Ironicamente, a forma mais eficiente de melhorar o desempenho do HD, na maioria das aplicações, é instalar mais memória, fazendo com que uma quantidade maior de arquivos possa ser armazenada no cache de disco. É por isso que servidores de arquivos, servidores proxy e servidores de banco de dados costumam usar muita memória RAM, em muitos casos 16 GB ou mais.

Concluindo, outra forma de melhorar o desempenho do HD (sem precisar recorrer a um SSD) é usar RAID, onde dois ou quatro HDs passam a ser acessados como se fossem um só, multiplicando a velocidade de leitura e gravação. Esse tipo de RAID, usado para melhorar o desempenho, é chamado de RAID 0. Existe ainda o RAID 1, onde são usados dois HDs, mas o segundo é uma cópia exata do primeiro, que garante que os dados não sejam perdidos no caso de algum problema mecânico em qualquer um dos dois. O RAID tem se tornado um recurso relativamente popular, já que atualmente a maioria das placas-mãe já vêm com controladoras RAID onboard.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X