Desempenho: SSD “novo” e SSD “usado”

Diferente dos HDs magnéticos, o desempenho dos SSDs praticamente não é afetado pela fragmentação, já que não faz muita diferença para o controlador se os endereços a serem lidos estão em setores adjacentes ou espalhados pelo disco. Entretanto, particularidades na maneira como os setores são acessados fazem com que, em muitas situações, o desempenho decaia com o uso, conforme dados são gravados e apagados. À primeira vista, o efeito pode parecer similar à perda de desempenho causada pela fragmentação, mas as razões são completamente diferentes.

Em um HD magnético os dados são gravados em setores de 512 bytes, que podem ser apagados e sobrescritos de maneira independente. Nos SSDs, por outro lado, os endereços são organizados em páginas de 4 KB, que são então agrupadas em blocos de 512 KB:

As páginas funcionam de maneira muito similar aos clusters dos HDs magnéticos. Cada página pode armazenar um arquivo ou fragmento de arquivo. Dois arquivos não podem compartilhar a mesma página, o que faz com que arquivos com menos de 4 KB ocupem uma página inteira, desperdiçando espaço.

Este não chega a ser um grande problema, já que a maioria dos sistemas de arquivos utilizam clusters de 4 KB ou mais de qualquer forma. O grande problema é mesmo a questão dos blocos e das operações de escrita.

Assim como em um HD magnético, a controladora é capaz de acessar as páginas de forma independente, lendo e gravando dados. Em um chip de memória MLC típico, uma operação de leitura demora 50 microssegundos (0.05 ms) e uma operação de escrita demora 900 microssegundos, o que explica a diferença entre o desempenho de leitura e escrita na maioria dos SSDs.

O grande problema é que as páginas na memória Flash não podem ser simplesmente regravadas, como os setores em um HD magnético. Sempre que é necessário gravar dados em uma página já ocupada, a controladora precisa primeiro apagar os dados anteriores (revertendo as células a seu estado original) para só então executar a nova operação de escrita.

Para piorar (desgraça pouca é bobagem…) não é possível apagar as páginas de forma independente. Sempre que precisa apagar alguma coisa, a controladora tem que limpar todo o bloco (128 páginas), uma operação demorada, que leva 1 ms ou mais (ou seja, 1000 vezes mais tempo que a escrita de uma página vazia).

Se já houverem outros dados válidos dentro do bloco a ser apagado, a operação se torna ainda mais demorada, já que a controladora precisa ler todo o conteúdo do bloco, copiá-lo para o buffer, executar o comando de limpeza (que apaga todo o conteúdo do bloco), fazer a modificação dos dados no buffer e em seguida gravar todo o bloco novamente. Essa sequência de passos demora uma verdadeira eternidade, o que explica como o desempenho de muitos SSDs pode ser tão baixo em algumas situações.

Para reduzir o número de vezes em que precisa arcar com a penalidade, a controladora procura sempre que possível usar blocos vazios, em vez de regravar o conteúdo de blocos existentes. Nesse caso, um novo bloco é usado para armazenar a versão modificada e a tabela de alocação do sistema de arquivos é atualizada, com a entrada apontando para o novo endereço.

O grande problema com essa abordagem é que ela funciona bem durante as primeiras semanas ou meses de uso, mas a partir do momento em que todos os blocos foram usados pelo menos uma vez, a controladora passa a ser obrigada a voltar e reciclar os blocos anteriormente utilizados, executando todos os passos. Isso leva a um fenômeno curioso, onde o desempenho do drive “novo” é consideravelmente melhor que o do drive “usado”, depois de algum tempo de uso. Como comentei, o sintoma é similar ao que temos em um HD fragmentado, mas a causa é diferente.

Esse problema afetou toda a primeira geração de SSDs (dos genéricos baseados em controladores da jMicron aos Intel X25), cujo desempenho de escrita caía para menos da metade depois de algum tempo de uso. O caso acabou gerando uma grande repercussão, o que levou os fabricantes a responderem com atualizações de firmware destinadas a remendar o problema, implementando sistemas de “reciclagem”, que limpam os setores marcados como vagos enquanto o drive está ocioso, mantendo sempre um determinado volume de blocos vagos.

A solução definitiva veio com o comando TRIM, uma nova função que permite ao sistema operacional agendar a limpeza das páginas cujo conteúdo foi deletado ou movido em vez de simplesmente marcá-las como vagas. Isso faz com que as páginas livres do SSD realmente estejam prontas para receber novos dados, sem depender unicamente de algum sistema de reciclagem executado pela controladora.

O grande problema com o TRIM é que ele é suportado apenas pelo Windows 7 e por versões recentes do kernel Linux, o que deixa de fora usuários do Windows Vista ou Windows XP. No caso deles existem utilitários de otimização oferecidos pelos fabricantes, como o SSD Toolbox da Intel, que permitem executar testes e otimizações.

Naturalmente, o TRIM precisa ser suportado também pelo SSD, o que abre outra margem para problemas, já que apenas os drives produzidos a partir do final de 2009 oferecem suporte a ele. No caso dos drives da Intel, por exemplo, o suporte está disponível apenas a partir do X25-M G2. Se você tem um X25-M da primeira geração, está sem sorte.

Concluindo, você pode se perguntar por que os fabricantes não passam a produzir chips de memória Flash com páginas que podem ser apagadas e regravadas de forma independente, eliminando o uso dos blocos.

Bem, com certeza muitos fabricantes devem ter considerado essa ideia. O grande problema é que isso demandaria o uso de muito mais trilhas, o que reduziria a densidade dos chips (as trilhas roubariam o espaço utilizado pelas células) e aumentaria o custo por megabyte. Outro obstáculo é que os chips atuais (com os blocos de 512 KB) são os mesmos utilizados em cartões e pendrives. Desenvolver linhas separadas de chips destinados a SSDs aumentaria ainda mais o custo, tornando a produção quase inviável. Como o bolso é a parte mais sensível do corpo humano, soluções via software como o TRIM acabam sendo a resposta mais fácil.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X