Este tópico advém do facto de eu ter comprado esta semana um disco SSD para substituir o meu HD. Depois de instalar o Ubuntu, comparando o arranque ele ficou cerca de 6 vezes mais rápido, aliás, o Plymouth praticamente não é visível (assim que desaparece o Grub, o mouse está logo à vista, o que significa que se está no lightDM)
Relativamente às diferenças de performance, tal como podem ver pelas imagens deste tópico, são consideráveis em termos de leitura e escrita. Apesar de voltar a mostrar estas imagens, desde já apresento estas duas que mostram as diferenças em termos de leitura no disco, o que é das coisas mais importantes pois está intrinsecamente ligado ao arranque do Ubuntu e das suas aplicações.
Apesar deste tópico ser algo importante para quem utiliza um disco SSD, ele requer alguns níveis de conhecimento avançado em Ubuntu. Por causa disso não criei um artigo no Blog Ubuntued para evitar ter de explicar tudo ao pormenor. Este tópico está feito de forma bastante informal, abstraindo algumas informações que poderão ser encontradas nas referências do tópico. Se você pode usar estas recomendações? Sim, em praticamente qualquer disco SSD atual pode executar sem qualquer medo todas estas recomendações.
Optimizações feitas ao disco SSD
Como é sabido o comportamento dos discos SSD é consideravelmente diferentes dos discos normais, os HDs. A diferência óbvia está no facto do primeiro ser memória flash e no segundo utilizar discos e agulhas que necessitam de se movimentar, trazendo portanto latências consideráveis que depois se sentem ao nível da performance.
Esse funcionamento dos discos, exige certas definições de controlo e garantia de escrita com boas performances e por isso os sistemas como Ubuntu trazem certas definições pre-definidas com esse intuito. Um outro aspeto, que atualmente começa a perder relevância devido aos avanços tecnológicos está no facto dos discos SSD terem um vida mais curta em termos de número de escritas. Novamente atualmente não é um aspeto relevante, no entanto podemos sempre ter algum cuidado neste ponto para ter a certeza que tudo funciona nos conformes.
Backup, backup e backup!
Fazer backups, em português cópias de segurança, é sempre algo prioritário que se vai alterar opções importantes do sistema. Através dos backups temos a certeza que podemos facilmente voltar às opções originais, por isso esta é sem dúvida uma das partes mais importantes de tópico.
Como as modificações mais importantes são no ficheiro que controla as partições, basicamente o backup é apenas relativo a esse ficheiro. Para o fazer, basta executar o comando seguinte que irá criar um ficheiro exatamente igual, mas com um nome diferente, a dizer backup:
Desligue o controlo de atividade
Por padrão o Ubuntu grava a atividade que realizamos no disco. Apesar de as primitivas funcionarem de forma natural com o hardware, obviamente que traz sempre um atraso na performance. Este tipo de funcionamento é importante para servidores para controlar a atividade, mas é praticamente inútil para desktops.
Para se saber mais sobre este aspeto convido a ler este conteúdo em inglês:
O facto de desligar então esta opção (na verdade são duas, e pelo que se diz na internet uma delas implica a outra, mas por via das dúvidas utilizo as duas ao mesmo tempo) faz com que não só a performance aumente um pouco a performance(ver primeira referência no fundo deste tópico) como também reduz a quantidade de escritas no disco, aumentando assim o tempo de vida do disco.
Para desligar então esta funcionalidade basicamente deve-se incluir duas flags no ficheiro fstab, chamadas noatime e nodiratime. Esta inclusão deve ficar encostada (sem espaços) às opções que originalmente estavam definidas, separadas com virgulas. Assim, abra o ficheiro fstab com o gedit com o seguinte comando:
Será então aberta uma janela semelhante à da imagem acima à direita e você deverá então incluir as duas flags nas partições que são do tipo Ext4. Para se perceber as diferenças entre o início e o fim, transcrevi o ficheiro completo do antes e depois.
- Antes:
- Código: Selecionar todos
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda1 during installation
UUID=30a760a2-5956-4aa7-9124-54e6307dc353 / ext4 errors=remount-ro 0 1
# /home was on /dev/sda3 during installation
UUID=0238513e-6e12-43fa-bb40-3e3a2fac1588 /home ext4 defaults 0 2
# swap was on /dev/sda2 during installation
UUID=dea4ad21-8e31-48d4-95dd-fd46cd7602fe none swap sw 0 0
- Depois:
- Código: Selecionar todos
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda1 during installation
UUID=30a760a2-5956-4aa7-9124-54e6307dc353 / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1
# /home was on /dev/sda3 during installation
UUID=0238513e-6e12-43fa-bb40-3e3a2fac1588 /home ext4 discard,noatime,nodiratime,defaults 0 2
# swap was on /dev/sda2 during installation
UUID=dea4ad21-8e31-48d4-95dd-fd46cd7602fe none swap sw 0 0
Ative o TRIM!
Se você estava atento, provavelmente reparou que este antes e depois apresentado acima, tem não só as duas flags referidas mas também uma terceira chamada "discard". Esta flag ativa a função TRIM. Basicamente ela descarta blocos não utilizados no disco de forma ativa. Isto é bastante útil para melhorar a performance dos discos Flash.
Para evitar ter de repetir algo ao qual nem sou especialista, aqui fica em inglês o que faz esta função:
Wikipedia -TRIM escreveu:In computing, a TRIM command allows an operating system to inform a solid-state drive (SSD) which blocks of data are no longer considered in use and can be wiped internally. While TRIM is frequently spelled in capital letters, it is a command name, not an acronym.
Para usar então esta função que é outra recomendação, basicamente apenas é preciso incluir a referida flag "discard" nas partições ext4.
Escalonador I/O
Os sistemas operativos dos nossos computadores são altamente complexos devido ao facto de permitirem trabalhar com várias aplicações ao mesmo tempo. Uma vez que podem estar várias aplicações a escrever no disco, os sistemas operativos necessitam de um escalonador de input/outputs (de escrita e leitura) para controlar a ordem à qual as aplicações têm acesso ao disco.
O recomendável para SSDs é utilizar o deadline. Com este escalonador, consegue-se sentir diferenças consideráveis quando se está a copiar um ficheiro de tamanho grande que muitas vezes bloqueia o sistema enquanto o procedimento está a decorrer, em que isso irá deixar de ocorrer. Há outras razões para a utilização deste escalonador e até para fazer alguns testes. Aqui não irei abordar isso, mas você pode saber mais lendo a segunda referência incluída no fundo deste tópico.
Para definir então o deadline como escalonador de escritas e leituras no disco, abra o ficheiro que permite definir opções no arranque do Ubuntu através do seguinte comando:
Depois simplesmente adicione o seguinte conteúdo antes do "Exit 0" (tal como pode ver pela imagem acima à direita):
- Código: Selecionar todos
# SSD performance tuning
echo deadline > /sys/block/sda/queue/scheduler
echo 1 > /sys/block/sda/queue/iosched/fifo_batch
Resultados destas modificações
Os resultados destas modificações não são algo extraordinário, mas são relevantes em dois aspetos: a performance é melhor e ao fim do dia o acomular dessa diferença sente-se; com estas modificações há uma maior garantia de aumento de vida do disco.
Em termos de diferenças de leitura de dados, tal como se pode ver pelas imagens abaixo houve uma diferença geral de 1MB por segundo:
Relativamente à escrita de dados, como já tenho o Ubuntu instalado no disco, não pude realizar testes com este utilitário que o Ubuntu traz de origem para analisar a performance dos discos. No entanto, executando o comando seguinte que cria um ficheiro de 800MB, consegui chegar à conclusão que efetivamente existe uma diferença considerável, de cerca de 50Mb por segundo ou talvez até mais (aqui era necessário executar várias vezes para ter uma maior certeza):
Outras otimizações importantes
Entretanto, e porque me esqueci de um ponto muito interessante, para quem quer poupar o seu disco SSD, convém também desligar o ZeitGeist. O Zeitgeist é um processo que está funcionar continuamente no nosso Ubuntu gravando constantemente toda a nossa atividade.
Este funcionamento implica escritas sucessivas no disco, algo que poderá diminuir um pouco a vida útil do disco SSD. Assim, eu também desliguei o ZeitGeist através do artigo seguinte:
Como nota de otimizações (mas agora não relacionadas diretamente com o disco SSD), também realizei as seguintes otimizações:
- Diminua a prioridade da SWAP do Ubuntu para ter melhor performance!
- Conselhos práticos para optimizar o Ubuntu 12.04 (algumas remoções recomendadas, não todas)
- Como desligar as mensagens de erro (Apport) do Ubuntu
- Como definir o Ubuntu a arrancar com o Bluetooth desligado
- Agilize a instalação de ficheiros .deb com o GDebi
- Desliguei alguns processos do arranque do Ubuntu através do artigo "Como ver as entradas ocultas do arranque do Ubuntu?"