1 Post por Ano

A arte de demorar 1 ano para postar algo

Configurando SSDs no Linux

Teoricamente não precisamos fazer nenhum tipo de alteração após instalar um SSD no linux. Tudo funciona normalmente, e bem mais rápido, inclusive. Porém, estudando melhor como funcionam os SSDs, existem diversos ajustes ‘finos’ que são extremamente importantes, sobretudo para estender a vida útil do seu SSD.

Importante: Todas as configurações abaixo foram utilizadas por mim para a distribuição Manjaro Linux, e foram obtidas em diversos blogs, vídeos e na própria Wiki oficial do Arch Linux sobre SSDs.

cover

Verificar se o SSD dá suporte ao TRIM

Certo, mas o que é esse TRIM?

TRIM é um comando com o qual o SO (Sistema Operacional) informa à controladora do SSD quais blocos ou páginas de dados não são mais necessários e podem ser excluídos ou marcados como livres para reescrita. Traduzindo: Quando excluímos algum arquivo armazenado em um SSD, o ‘local’ (endereço físico) onde este arquivo era armazenado deve ser marcado como livre para que este ‘local’ possa ser aproveitado para outros arquivos no futuro. Nos HDs tradicionais, os setores podem ser reescritos magneticamente sem nenhum problema, já nos SSDs a coisa é um pouco mais complexa.

Uma analogia interessante que li na oficinadanet imagina um SSD como uma biblioteca com muitas estantes, onde cada estante pode estar cheia de livros. As estantes representam chips de memória flash (a tecnologia de armazenamento dos SSDs, diferente dos HDs tradicionais que utilizam discos magnéticos e um processo analógico) e os livros representam dados.

Como nossa biblioteca é um SSD, imagine que um livro é retirado da estante. Se esse livro foi vendido ou doado, para que o espaço ‘vago’ na estante possa ser utilizado para armazenar outro livro, toda a estante deve ser reorganizada (todo o bloco de dados do SSD é removido para a memória secundária e realocado no bloco original).

É um processo semelhante ao garbage collector dos compiladores e máquinas virtuais, onde espaços de memória alocados porém não mais utilizados só serão liberados após a passagem do coletor, caso contrário ficam lá ocupando nossa memória HEAP (a área de compiladores é muito divertida, principalmente alguns algoritmos punks de garbage collector).

Ok mas oq isso tem haver com o TRIM?

O TRIM é o coração desse mecanismo. Ele marca quais páginas de dados podem ser ‘coletadas’, ou seja, se ninguém informa ao SSD que determinada página de dados está livre, ele jamais irá ‘reescrever’ naquele local, e sempre utilizará as áreas vazias do disco para escrever novos dados. Como cada componente tem uma vida útil em quantidade de reescritas possíveis, ocupar irrestritamente e sem necessidades as áreas livres do disco reduz drasticamente a vida útil do dispositivo.

Vamos aos comandos

hackerman

Verificar suporte ao TRIM

lsblk --discard

Também é possível verificar utilizando o comando do pacote hdparm

hdparm -I /dev/sda | grep TRIM

Agora começa a complicação

No linux temos 2 possibilidades de utilização do TRIM. O TRIM Periódico (Periodic TRIM) onde o comando TRIM será executado de tempos em tempos automaticamente (normalmente semanalmente).

E o TRIM Contínuo (Continuous TRIM) onde toda vez em que um arquivo é deletado o comando TRIM é executado.

gif “Você começou como CONTÍNUO, CONTÍNUO, CONTÍNUO!!!”

E aí qual utilizar ?

Eu vou pela referência e utilizo o TRIM periódico.

Continuous TRIM is not the most preferred way to issue TRIM commands among the Linux community. For example, Ubuntu enables periodic TRIM by default, Debian does not recommend using continuous TRIM and Red Hat recommends using periodic TRIM over using continuous TRIM if feasible.

Para habilitar o TRIM periódico, existe um serviço do pacote util-linux que facilita nossa vida, basta habilitar o serviço.

sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer

Além disso, não faz muito sentido utilizar o TRIM periódico e o TRIM contínuo ao mesmo tempo.

gif2 Ok parei!

Para verificar se o TRIM contínuo está habilitado, basta verificar se a flag discard está presente na partição do SSD no arquivo /etc/fstab (eu não entendi por qual motivo já vem habilitado no Manjaro, mas fazer o que?!).

Ajustar o valor da propriedade Swappiness

Essa propriedade basicamente configura a forma como o kernel do linux vai balancear o uso de memória física x memória virtual (swap).

Por padrão, a maioria das distribuições linux desktop utiliza o valor 60 para swappiness. No meu caso, como eu tenho uma quantidade de memória RAM interessante, eu utilizo o valor 10 para swappines (tem memória é pra se usar!)

A regra é clara:

0 swap is disable
1 minimum amount of swapping without disabling it entirely
10 recommended value to improve performance when sufficient memory exists in a system
60 default value
100 the kernel will swap aggressively

Verificando o valor da swappiness

cat /proc/sys/vm/swappiness

Alterando o valor da swappiness

Se tiver uma quantidade razoável de RAM hein! Depois basta reiniciar o sistema e verificar que o valor modificou!

echo “vm.swappiness=10” > /etc/sysctl.d/100-swappiness.conf

Considerações Finais

Tem uma quantidade absurda de informações sobre ajustes finos de configurações do linux para SSDs e melhoria de performance em geral.

Esse foi o compilado de coisas que li a respeito para configurar o meu SSD no Manjaro, tem umas questões interessantes de flags fstab e de atualização de firmware das controladoras dos SSDs que talvez ano que vem eu poste a respeito ehehehhe.