Índice - Tutoriais

Entendendo os SSDs

Criado 9/out/2010 às 16h05 por Carlos E. Morimoto

17

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.

17 comentáriosPor Carlos E. Morimoto. Revisado 9/out/2010 às 16h05

Comentários

Realmente compensa?
Criado 5/out/2011 às 12h16 por Koyuki (anônimo)
Ao ler a matéria, a única conclusão a que cheguei foi que não compensa em nada comprar um SSD. Estava cogitando em comprar um notebook com um SSD, mas nem no caso da bateria parece que compensa. Na matéria você fala bastante da "maior economia de energia", mas falto um comparativo do tipo "enquanto um HD usa tantos Watts de energia, o SSD usa só tanto, gerando tantos minutos a mais de uso em um notebook".

Outra coisa, realmente é tão importante a velocidade de leitura assim? Acho que aqui mesmo no hardware.com tem um comparativo de desempenho em usar um único HD ou usar dois HDs em RAID. Lembro que o aumento do desempenho era insignificante com relação ao desempenho geral do sistema. Obviamente, a situação melhorava bastante no caso de uso extremo de leitura e escrita, como um banco de dados. Mas, eu mesmo raramente faço backups pra pensar "nossa, se tivesse um SSD, este processo já teria terminado.". Ou seja, o SSD acaba que sendo bom somente para o uso em servidores ou pra aquelas pessoas superprecavidas,que faz backup toda semana.

A maior vantagem seria o "boot rápido". Bem, eu não ligo de ter que esperar 30s pra dar boot no sistema e nunca me aconteceu algo do tipo "tenho menos 30s pra mandar este email....".

Por fim, acho que prefiro comprar um notebook com HD de 2TB, do que com um SSD de 500GB ou menos. Ou tem alguma maior vantagem que ainda não percebi?
Sim, tem ventagens por Shadow (anônimo)
Elimine as desvantagens por Victor Maia Aldecôa
concordo contigo por Davidson Francis
Analfabeto funcional por Wanderson (anônimo)
sr
Criado 7/nov/2011 às 21h52 por sr (anônimo)
muita gran, quem sabe daqui uns 10 anos
e as memorias de 128 gbs de velocidade da micron
Criado 6/out/2011 às 10h18 por Sergio de Lucca (anônimo)
Li em um artigo recente que a micron vai lancar ano que vem para empresas, e depois para o consumidor comum, memorias ram (eu acho) de 128 gbs de velocidade isto é verdade, e sendo em que isto muda para o consumidor final, ja que os processadore atuais sem overclok nao chegam nem a 5 gbs.
Está confundindo velocidade com tamanho e SSD com RAM por Bruno Cabral (anônimo)
Disco? Onde?
Criado 4/out/2011 às 19h35 por Tio Patinhas (anônimo)
"Os SSDs ou "Solid State Disks" (discos de estado sólido)"

Errado, o último D não é de disk, mas de drive, que traduzido ficaria Unidade de Estado Sólido.

Esse é um erro que deve ser freado antes que vire padrão.
Solid State Drive por Paiva (anônimo)
De fato! por Tio Patinhas (anônimo)
Mercado Livre por Corva (anônimo)
Só pros? e os cons?
Criado 9/out/2010 às 16h56 por Fabio Santos de Lima (anônimo)
Li em algumas páginas aleatórias que os SSDs têm uma vida útil reduzida em relação aos tradicionais. Existem até alguns tutoriais que ensinam como diminuir a quantidade de escritas nesses dispositivos em sistemas linux e que recomendam o uso do EXT2! Isso é (ainda) verídico? Em caso negativo, seria, por exemplo, seguro uma empresa substituir seus HDs magnéticos por unidades SSD para melhorar os tempos de resposta/escrita/leitura na rede? Diante de tantas vantages incontestáveis ao se utilizar memórias flash, eu espero ansiosamente que a tecnologia seja barateada ao ponto de se popularizar. Mas ainda tenho alguns receios a respeito da maturidade dessa tecnologia. Agradeço desde já qualquer resposta.
RAID por Alex (anônimo)
algumas desvantagens por Bruno (anônimo)
... por Ednei P. de Melo
... por Nacho_aprendiz