Bem-vindo: Ter, 19 de Março 2024, 9:25 Pesquisa avançada

Otimizações práticas ao Ubuntu 12.04 com um disco SSD

Secção relativa a ajustes! Divulgue aqui qualquer tipo de ajuste que possa melhorar/agilizar o sistema ou algum programa. Seja o mais detalhado possível na descrição do procedimento! Em caso de dúvida em algum ajuste pergunte nesta secção!

Otimizações práticas ao Ubuntu 12.04 com um disco SSD

Mensagempor Claudio Novais » Seg, 10 de Setembro 2012, 18:10

Neste tópico apresento algumas modificações extremamente importantes para quem tem o Ubuntu instalado num disco SSD.

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) :rox:

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.


Samsung 128GB SSD830

HD 320GB 5400 RPM SATA

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:
sudo cp /etc/fstab /etc/fstab.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:
Spoiler:
https://wiki.archlinux.org/index.php/Fstab escreveu:The use of noatime, nodiratime or relatime can help disk performance for ext2, ext3, and ext4 filesystems. Linux by default keeps a record (writes to the disk) every time it reads from the disk atime. This was more purposeful when Linux was being used for servers; it doesn't have much value for desktop use. The worst thing about the default atime option is that even reading a file from the page cache (reading from memory instead of the disk) will still result in a disk write! Using the noatime option fully disables writing file access times to the disk every time you read a file. This works well for almost all applications, except for a rare few like Mutt that need the such information. For mutt, you should only use the relatime option. Using the relatime option enables the writing of file access times only when the file is being modified (unlike noatime where the file access time will never be changed and will be older than the modification time). The nodiratime option disables the writing of file access times only for directories while other files still get access times written. The best compromise might be the use of relatime in which case programs like Mutt will continue to work, but you'll still have a performance boost because files will not get access times updated unless they are modified.


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:
sudo gedit /etc/fstab

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 escalonador do Ubuntu está configurado principalmente para HDs, em que tem o referido funcionamento por agulhas. Esse funcionamento, através do cfq, está de certa forma otimizado para isso. No caso dos discos SSD, esse funcionamento é diferente e pode-se estar a perder performance com essa escalabilidade.

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:
sudo gedit /etc/rc.local

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):
dd if=/dev/zero of=/tmp/output bs=80k count=10k; rm -f /tmp/output



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:

Referências:


Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Re: Otimizações práticas ao Ubuntu 12.04 com um disco SSD

Mensagempor shirulkm » Seg, 10 de Setembro 2012, 20:32

Dizem q pra SSD é bom usar o Ext2 porque não tem journaling e aumenta a vida útil do SSD...

shirulkm
 
Mensagens: 3
Registrado em: 17 Agosto, 2011

Re: Otimizações práticas ao Ubuntu 12.04 com um disco SSD

Mensagempor Claudio Novais » Ter, 11 de Setembro 2012, 16:13

Olá shirulkm,

É verdade que o journaling agrava o problema das gravações no disco, o que é mau para quem acha que um disco SSD tem uma vida útil demasiado curta. Mas na verdade um disco SSD moderno já tem uma vida útil bastante boa, basta por exemplo ver este artigo:

Durante todos os computadores que utilizei, acho que nunca tive um disco que eu fizesse uso por durante mais de 10 anos, pois é simplesmente algo completamente obsoleto ao fim desse tempo. Claro que neste ponto é uma opinião minha e muita gente possivelmente utiliza discos com bastante mais tempo, mas mesmo essas pessoas podiam gravar constantemente no SSD que ainda tinham uma boa margem de manobra.

Agora no que toca a performances, realmente desligar o Journaling é algo interessante pois diminui consideravelmente as escritas, o que é vantajoso. No entanto há um certo risco de perda de dados em caso de falta de energia ou bloqueio do computador. Sinceramente não sei o nível desse risco num disco SSD, mas num HD ele ainda é relativamente alto caso não se tenha o Journaling ativo.




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:
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Re: Otimizações práticas ao Ubuntu 12.04 com um disco SSD

Mensagempor Ricardo Fonseca » Qua, 19 de Setembro 2012, 16:09

Grande artigo!
Avatar do usuário
Ricardo Fonseca
 
Mensagens: 53
Registrado em: 10 Junho, 2011

Re: Otimizações práticas ao Ubuntu 12.04 com um disco SSD

Mensagempor samuelmesq » Sáb, 12 de Janeiro 2013, 20:47

fazer alterações no escalonador para ganhar performance no ssd, não atrapalha a performance do hdd ?
Avatar do usuário
samuelmesq
 
Mensagens: 68
Registrado em: 18 Setembro, 2011

Re: Otimizações práticas ao Ubuntu 12.04 com um disco SSD

Mensagempor Claudio Novais » Sáb, 12 de Janeiro 2013, 20:51

Sinceramente já não me lembro dos motivos. Mas fui agora ver e este escalonador tem duas filas o que é algo interessante e preza pela prioridade nas leituras, o que é sempre bom para que o sistema não bloqueie quando está a gravar muitos dados.

Eu já nem sei se é por causa do SSD se ocorre nos novos Ubuntus, mas lembro-me que o Ubuntu dantes bloqueava muitas vezes ao passar um filme para um penUSB, por exemplo. Creio que o problema está exatamente aí, no escalonador.
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011


Voltar para Tweaks/Ajustes ao sistema ou a programas

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes

cron