Acelerando o seu sistema Linux sem compilações em computadores e Notebooks

Iniciado por galactus, 11 de Maio de 2013, 17:51

tópico anterior - próximo tópico

galactus

Introdução

Não anda satisfeito com o desempenho do seu sistema em geral? Acha que ele está lento mais do que deveria? Com o tutorial a seguir, seus problemas acabaram! Ou será de começar?  Se você for contagiado pelo vírus da velocidade...   :)
Brincadeiras a parte esse tutorial extenso é o resumo do pouco que aprendi até hoje com Linux, lá se vão 9 anos nisso. Não existe nada de novo e nem procurei reinventar a roda. Espero que aproveitem.

Para quem este  tutorial é contra-indicado:

O tutorial a seguir faz uso intenso do terminal, ou seja, modo texto. Se você não gosta de "sujar" suas mãos com o terminal, melhor parar por aqui!  Se os ajustes padrões do sistema estão bons para você, também não há necessidade alguma de fazer uso deste tutorial. Como digo no título, essas dicas são melhor aproveitadas em computadores de mesa  e Notebooks de uso pessoal. Nem sempre essas dicas vão servir em servidores ou ambientes de produção que primam por não alterar em nada as configurações de "fábrica"! Isso porque as dicas deixarão seu sistema mais rápido sim, mas piora a resposta quando a carga de requisições são muito altas, caso comum de servidores.

Para quem este tutorial é indicado:

Pessoas que como eu, não estão satisfeitas com a velocidade do seu sistema padrão. Pessoas que não se importam em usar o terminal para modificar as configurações padrões do sistema. Pessoas que  sabem que o sistema pode ser mais rápido do que ele é e fazem uso das ferramentas necessários para isso. Os desenvolvedores devem criar um sistema estável e que responda bem a inúmeras situações de uso. Como eles não tem como adivinhar onde e como este sistema vai ser utilizado, eles optam por configurações seguras, mas nem sempre mais rápidas.

- Mas galactus, você está dizendo que algumas das dicas a seguir são inseguras?

- Algumas sim, mas vou deixar claro as que podem causar perda de dados ou prejudicar o sistema em algumas situações de uso.


- E galactus, essas dicas podem servir para o meu PC ou Notebook do arco-da-velha ou de "última" geração?  

- Qualquer máquina pode tirar proveito das dicas a seguir. Já fiz uso delas em Pentium 4 , Core 2 Duo e Atlhon XP, não recomendo fazer uso de todas elas juntas em processadores mais antigos que estes. Mas uma dica ou outra pode fazer a diferença mesmo em máquinas jurássicas. Quanto a quantidade de RAM, para melhor aproveitamento das dicas, tenha pelo menos 2GB, melhor ter 4GB ou mais. As dicas farão seu sistema usar mais memória para acelerar tudo em geral. Portanto em máquinas "desmemoriadas" as dicas vão mais prejudicar que ajudar!


O que iremos fazer?


Em linhas gerais é bem simples. Vamos alterar os arquivos de configurações do sistema que vem de "fábrica" com suas configurações seguras e muitas vezes mais lentas! Todas as alterações podem ser revertidas para o seu estado original. São as alterações mais fáceis e simples de se fazer principalmente para quem está começando no mundo Linux. Se ainda não continuar satisfeito, para atingir o máximo de desempenho possível, some a estas dicas a formatação personalizada em modo texto do seu sistema de arquivos preferido e mais a compilação personalizada do seu kernel e aplicações que você usa ou do sistema inteiro se quiser.

Notem que não usei o nome Ubuntu, Kubuntu, Xubuntu ou outro nome de qualquer variante da família Ubuntu. Isso porque as dicas a seguir servem para qualquer variante do Ubuntu, versões 12.04, 12.10 ou 13.04. 32 ou 64 bits. Você deve estar se perguntando se pode fazer uso delas em outras distribuições. Em sua grande maioria pode, mas atente para o fato que nem todos os arquivos ou programas apontados aqui estarão no mesmo lugar ou com a mesma configuração como no Ubuntu e família. Ao final trocaremos de kernel, mas calma. É um kernel oficial e presente nos repositórios oficiais!

Vou partir do princípio que:

1) Você fez uma instalação limpa e começou o processo de modificar os arquivos de configuração em seu estado original.

2) Você sabe fazer uso do terminal e do apt-get em modo texto.

Por favor leia todo o tutorial antes de fazer quaisquer modificações no seu sistema. Se encontrarem algum erro ou alguma coisa que possa deixar esse tutoria ainda melhor, por favor, avisem!

- Mas galactus, tem algum exemplo "pra nóis aí" do quanto isso pode ajudar o meu sistema? Afinal já ouvi muita gente dizer que esse negócio de tunar sistema é besteira, melhor deixar quieto.

- Tenho sim! No vídeo abaixo eu mostro o meu Netbook de uso pessoal, um Core i3 com 8GB de RAM com o Kubuntu 12.10 e ext4 todo modificado pelas dicas a seguir. Além dessas dicas eu também alterei o KDE 4.10 dele, é claro! :)

http://www.youtube.com/watch?v=WpScvZ11cZE


Vejam que fiz questão de mostrar que até mesmo um ambiente gráfico considerado um chumbo, o que de fato é verdade, em comparação com outros ambientes minimalistas, pode ser muito rápido. E isso num Core i3 de Netbook mas com muita RAM! Não se preocupem, mais uma vez, deixarei claro o que vai causar risco ou não ao sistema.

Sendo assim vamos deixar dos "entretantos" e partir logo para os "finalmentes"! :)
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

galactus

1) Desligando serviços desnecessários

Logo depois que faço uma instalação limpa do meu sistema é a segunda coisa que eu instalo. A primeira é instalar o htop. Vamos desligar serviços que não vamos fazer uso e que ficam consumindo recursos do sistema como um todo. Instale os pacotes a seguir:

apt-get install rcconf menu dialog


No terminal, de preferência com a janela maximizada e  como root faça:

#rcconf

Será mostrada uma tela parecida como a seguir:

[IMG=http://img826.imageshack.us/img826/2825/rcconftuto.png][/IMG]


Aí você tem os principais serviços que são carregados na inicialização do sistema e que podem ser desligados pelo usuário. A esquerda o nome do serviço e na direita uma breve descrição dos mesmos, quando possível. Eu desligo:

Speech Dispatcher
Bluetooth
apparmor
brltty

Desligue mais serviços se quiser ou puder! Mas cuidado com o que desliga.  Evidentemente se você tem uma máquina que faz uso do Bluetooth ou que precise de suporte ao braile e a voz do que está sendo digitado, não desligue tais serviços.  Quanto ao ondemand, eu desligo no meu desktop mas não do Notebook. Ele vai controlar a velocidade do seu processador, é ótimo para economizar bateria, mas com um PC ligado na tomada direto eu prefiro desliga-lo para ter ele logo a pleno vapor.
Use as setas do teclado para navegar e a barra de espaço para ir marcando ou desmarcando as mesmas. Depois aceite as modificações ao final e reinicie a máquina para que as alterações tenham efeito. Se quiser reativar o serviço em questão é só repetir esses passos e marcar o serviço desligado, reinicie a máquina novamente para  que as alterações tenham efeito.

Dica: Existem serviços do seu ambiente gráfico preferido que podem ser desligados dentro dos centros de controles dos mesmos! Isso também ajuda muito no aumento do desempenho do sistema.


2) Usando o Preload

Essa é a terceira coisa que instalo em meus sistemas novos. O uso do preload não é novo, é uma mão na roda e talvez seja a modificação em que você vai mais sentir diferença na velocidade do sistema, com exceção de uma troca para kernel turbinado!
O Preload é um programa que verifica as aplicações mais utilizadas pelo usuário e as carrega na memória antecipadamente acelerando a inicialização da mesma. Portanto, o uso do Preload acarreta num aumento do consumo de RAM. Então, para aqueles que não querem aumentar o consumo de RAM, não devem fazer uso do Preload. Para aqueles como eu, que tem 8GB de RAM sobrando, sem fazer nada, digamos assim, faça uso do preload e seja muito feliz! O Preload não aumenta o risco de travamentos ou perda de dados. Ele não consome toda a sua RAM até não poder mais! No terminal faça:

apt-get install preload

Ele começara a agir instantes depois de sua instalação. Você vai notar maior diferença no sistema a medida que ele for fazendo a análise do que você mais usa e ele joga esses programas pra RAM. Agora vem o pulo do gato!  Poucos usam o Preload, mas muito menos sabem que ele pode ser turbinado! É isso mesmo, suas configurações de fábrica são bastante conservadoras! :) Afinal, se pode ser mais rápido, pra que deixar devagar? Rsrsrsrsrs

No terminal como root, use o seu editor em modo texto preferido, eu gosto do nano, abra o arquivo de configuração do preload:

#nano /etc/preload.conf

Se tiver paciência e curiosidade leia tudo o que ele faz em detalhes. Vamos aos pontos que nos interessam, essas modificações já foram exaustivamente testadas por mim e por outros usuários.  Altere sem medo.

Procure as seguintes linhas:

memfree = 50  - mude para 100

memcahed =  0mude para 30

processes = 30 mude para 60

Deu pra perceber alguma coisa né! Vai deixar ele interagir com   100% da memória livre, não confunda com consumir, fazer cache de até 30% da memória utilizada e jogar 60 processos para a RAM. É evidente que você pode alterar esses valores como quiser, mas deixo pra você fazer os testes de como isso vai afetar o seu sistema! Com essas modificações a diferença na resposta do sistema é enorme, muito melhor que a padrão do Preload. E o principal, não detona com toda a sua RAM, aumenta o consumo sim, mas não consome tudo de maneira alguma. Contudo, não recomendo seu uso com valores muito agressivos principalmente em máquinas que fazem muita transferência de arquivos,  e menos ainda em conjunto com as modificações que faremos no sysctl a seguir! Depois não diga que eu não avisei. Mas esteja livre para fazer as suas loucuras, se puder! Só assim você aprende e verifica os limites do seu sistema.

Para voltar ao original, desinstale o preload com a remoção completa dos arquivos de configuração:

apt-get purge preload


3) Alterando o Sysctl.conf

Como já dizia o Tio Ben: "Com grandes poderes vem grandes responsabilidades!" Este arquivo é um verdadeiro canivete suíço para tunagem do seu sistema. Aqui você altera de tudo um pouco. Mas tenha cuidado no que alterar. Vou mostrar o pouco que sei que funciona. Existe uma quantidade absurda de parâmetros que podem ser modificados de acordo com o tipo de sistema e o seu uso.
Vou mexer no que serve para deixar um dekstop mais rápido! Outras configurações para servidores, banco de dados, servidor de e-mail, páginas da web e etc não serão abordadas. Não altere nada no arquivo padrão do Ubuntu, apenas acrescente as modificações ao final do arquivo. Como root no terminal:

#nano /etc/sysctl.conf

Copie e cole:

## Melhorar o ipv4
net.core.rmem_max=8388608
net.core.wmem_max=8388608
net.core.rmem_default=65536
net.core.wmem_default=65536
# default 4096 87380 174760
net.ipv4.tcp_rmem = 1000000 1000000 1000000
# default 4096 16384 131072
net.ipv4.tcp_wmem = 1000000 1000000 1000000
# default 31744 32256 32768
net.ipv4.tcp_mem = 150000000 150000000 150000000
net.ipv4.route.flush=1
net.ipv4.tcp_rfc1337 = 1
net.ipv4.ip_no_pmtu_disc = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_ecn = 0

## Acelerando o sistema em geral, contribuição do HqxRiven e minha

vm.dirty_ratio = 20

vm.dirty_background_ratio = 10

vm.vfs_cache_pressure = 100

vm.dirty_expire_centisecs = 33000

##vm.swappiness=10


As melhoras no ipv4 deixarão sua navegação mais rápida e aumentam o consumo de RAM.

- Mas galactus, porque raios você não desabilita o ipv6?

- Porque notei que as versões mais recentes do Ubuntu vem fazendo uso dele, e desabilitar o ipv6 estava dando problemas nas configurações de rede. Como por exemplo meu LTSP  não funcionar mais!

Essas configurações do ipv4 diminuem a velocidade final de transferência de arquivos em servidores, se você estiver pensando em colocar isso num servidor! :)

Atenção: As alterações para melhorar o ipv4 podem causar problemas em transferências de arquivos com kerneis da versão 3.8 em diante. Pode travar a transferência e atrasar a navegação na Internet. Faça os seus testes. Muitas vezes apenas as alterações do dnsmasq são suficientes para deixar sua navegação bem mais rápida.

A segunda parte das modificações como devem imaginar, também aumentam o consumo de RAM. Vou deixar para vocês estudarem o que isso tudo faz. O que está com o símbolo do jogo da velha não é usado pelo sistema. Quanto a última parte da vm.swappiness estar com o jogo da velha, vai depender do seu sistema. Eu explico, em kerneis mais antigos e com pouca RAM esse parâmetro fazia muita diferença junto com o conjunto acima. Mas notei que nos kerneis mais novos, como das séries 3.6 em diante e com muita RAM, não dá muita diferença  e pior, em alguns casos diminuiu o desempenho. Então se tiver muita RAM, tipo 8GB e um kernel moderno, não use o vm.swappiness com o restante das modificações do conjunto acima! Faça os seus testes.

Depois de alterar e salvar o arquivo faça como root:

#sysctl -p

Com isso as alterações se tornarão ativas imediatamente e sem a necessidade de reiniciar a máquina. Qualquer erro também é reportado. Assim comente a linha com erro (coloque o jogo da velha na frente) ou apague a mesma. Para voltar ao original, comente todas as linhas ou apague tudo o que colocou e execute o sysctl -p novamente!
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

galactus

4) Alterando o fstab

O arquivo fstab é responsável pela montagem das partições e seus respectivos sistemas de arquivos. O fstab está localizado na pasta /etc.  Você pode alterar as opções de montagem do sistema de arquivos utilizado para ele ficar mais rápido. Se puder fazer uma formatação personalizada, você conseguirá melhores resultados. Aqui vou colocar algumas opções que vão acelerar o ext4, o xfs e o jfs. Tudo bem mastigadinho e indicando o que trás risco ou não para os seus dados!

a) Para o ext4:

noatime - Desativa o registro de tempo de acesso do arquivo, que é basicamente uma operação de gravação que deve ser evitada em SSDs. Trocando em miúdos, lembram quando vocês clicam com o botão direito do mouse para acessar as propriedades de um arquivo, lá contém a data de gravação e a data em que o arquivo foi acessado. Com essa opção o sistema não registrará mais quando você acessou o arquivo, apenas quando você modificar o mesmo. Essa opção não envolve risco de perda de dados.

barrier=0 - Esse assunto é complexo e já levou a muita discussão entre os desenvolvedores, mas vou procurar resumir para vocês. O "barrier" certifica-se que tudo esteja em ordem entre o cache do disco rígido e a sincronização de dados e metadados antes da gravação do journal. Com a opção "0" essa certificação deixa de existir. Barrier=1 atrasa muito o desempenho do disco.  Não é seguro você usar a opção "Barrier=0" no ext4 em um sistema sem No-break ou em Notebooks sem bateria. Por curiosidade,  o ext3 usa o barrier=0 por padrão. Eu uso o barrier=0 e só perdi o que estava aberto até agora.

commit=100 - O ext4 pode ser configurado para sincronizar dados e metadados a cada "n" segundos. O valor padrão é 5 segundos. Isso significa que se você sofre uma queda de energia, você irá perder apenas os últimos 5 segundos de trabalho (se o seu sistema de arquivos não for danificado, graças ao Journaling). O valor padrão ou qualquer valor abaixo dele irão afetar o desempenho para pior, mas isso será bom para a integridade dos dados. Colocar um valor igual a zero terá o mesmo efeito do valor padrão, 5 segundos. Aumentar esse valor melhorará o desempenho.Um valor igual a 60 já está bom o bastante para discos rígidos de pratos magnéticos. Valores superiores a esse, como o igual a 100 do exemplo, são mais indicados para discos SSD.

Exemplo de um fstab padrão após instalação do Ubuntu:

[...]
UUID=d818ddf9-ff01-e21a-a67d-3ceab43a9e2b / ext4 relatime,errors=remount-ro 0 1
UUID=0d339122-74e0-e0ea-805a-7879b1fa3172 /home ext4 relatime 0 2
[...]



   Vou deixar como exemplo as opções que uso no meu fstab do Netbook, com apenas 1 HD e  journal interno no mesmo sistema de arquivos (notem que não há espaço entre as opções, apenas vírgulas):

[...]
UUID=d818ddf9-ff01-e21a-a67d-3ceab43a9e2b / ext4 noatime,barrier=0,commit=60 0 1
UUID=0d339122-74e0-e0ea-805a-7879b1fa3172 /home ext4 noatime,barrier=0,commit=60 0 2
[...]


   A opção do arquivo anterior: errors=remount-ro pode ser removida com segurança pois é padrão do sistema.




b) Para o xfs:

noatime = Os tempos de acesso dos dados não serão atualizados quando lidos, apenas quando gravados. Não há risco de perda de dados com essa opção. Se o tempo de acesso dos dados for importante para você não use essa opção.

nodiratime = Os tempos de acesso dos diretórios não serão atualizados quando lidos, apenas quando gravados. Não há risco de perda de dados com essa opção. Se o tempo de acesso dos diretórios for importante para você não use essa opção.

nobarrier = essa opção faz com que a verificação dos dados entre o cache do disco e o buffer da memória não sejam mais feitas. Com essa opção ativa você acelera a gravação dos dados mas existe o risco de perda de dados em uma queda de energia ou travamento do sistema, aquilo que estiver aberto pode ser perdido.  

logbufs = diz o número de buffers que devem ser guardados na memória, esse número varia de 2 a 8. Nos kerneis mais recentes o 8 já é  padrão. Essa opção ajuda muito o XFS a lidar com arquivos pequenos e aumenta o consumo de RAM. Use 8 e seja feliz!

logbsize = Especifica o tamanho de cada buffer na memória. Você pode especificar o tamanho em bytes ou kilobytes, o padrão é 32k nas versões mais recentes do kernel. Você pode aumentar esse valor para 64k, 128k até o máximo de 256k. Essa opção ajuda muito o XFS a lidar com arquivos pequenos e aumenta o consumo de RAM.  Use 256k e seja feliz!

allocsize = determina o tamanho final da pré-alocação do Buffer de I/O. Seu tamanho varia de 64Kib a 1Gib. Essa opção ajuda a diminuir a fragmentação do disco e aumenta a velocidade de transferência de arquivos grandes. No caso do disco rígido servir apenas para arquivos grandes como imagens ISO, use 512mb, no geral 64mb está de bom tamanho. Você não aumenta o risco de perda de dados com essa opção. Na prática notei que quanto maior esse número, melhor a taxa de transferência, mas também o sistema fica mais "preso" a essa transferência, então não abuse.

delaylog = Atrasa a gravação das informações no journal do XFS o máximo possível. São parâmetros internos do XFS que determinarão quando as informações serão salvas. Essa opção acelera muito o XFS mas aumenta o risco de perda de dados no caso de uma queda de energia ou travamento do sistema. Note que você não está desativando o Journal, apenas atrasando a gravação dos dados nele. A opção delaylog não funciona em versões antigas do XFS ou do kernel linux.

osynciosync = Essa aqui é complicada, mas resumindo, essa opção tem haver com uma espécie de garantia de que  as gravações dos dados e metadados ocorram  em sincronia com o cache do disco. Entendeu? Eu também não! :)  Para piorar ainda mais, dizem que essa opção é obsoleta e não faz mais "efeito". Na prática o que notei é que o XFS pode ficar mais ágil com essa opção no fstab do que sem ela, dependendo da carga no sistema! Para quem usa kerneis mais novos, talvez o melhor seja não usar essa opção. Faça os seus testes e observe se ela ajuda mais que prejudica seu sistema. Há sim, ela não é indicada para quem vai ter grandes bancos de dados no disco rígido.

inode64 = indica que o XFS pode criar inodes em qualquer lugar do sistema de arquivos, essa opção pode criar problemas em aplicações de backup que não podem lidar com grande número de inodes. Essa opção é sempre indicada em grandes servidores de arquivos. Na prática achei que aumenta a latência em geral para o desktop. Também notei o seguinte, ou você usa o inode64 ou usa o allocsize para melhor desempenho. Os dois juntos atrasaram o tempo de resposta do desktop! Eu prefiro o allocsize para desktop e o inode64 para servidores de arquivos. Faça os seus testes e verifique se ele é bom pra você.

Use o seu editor preferido e como root abra o fstab para colocar alguma das opções acima, o meu fstab ficou assim:

/dev/disk/by-id/ata-TOSHIBA_MK6465GSXN_31F8B103B-part5 /                    xfs
noatime,nobarrier,logbufs=8,logbsize=256k,allocsize=64m,delaylog               1 1
/dev/disk/by-id/ata-TOSHIBA_MK6465GSXN_31F8B103B-part6 swap                 swap       defaults              0 0



c) Para o jfs

noatime - Desativa o registro de tempo de acesso do arquivo, que é basicamente uma operação de gravação que deve ser evitada em SSDs. Trocando em miúdos, lembram quando vocês clicam com o botão direito do mouse para acessar as propriedades de um arquivo, lá contém a data de gravação e a data em que o arquivo foi acessado. Com essa opção o sistema não registrará mais quando você acessou o arquivo, apenas quando você modificar o mesmo. Essa opção não envolve risco de perda de dados.


5) Otimizando um pouco mais seu sistema de arquivos e o acesso aos dados do seu Disco rígido

Aqui vamos executar alguns comandos para checar, desfragmentar, refazer o jornaul e otimizar diretórios de acordo com o sistema de arquivos instalado.

a) Para o ext4

Se você é um instalador compulsivo de programas ou tem muitos arquivos espalhados em vários diretórios, você pode melhorar um pouco mais as coisas otimizando os diretórios.  Faça isso com o seguinte comando:

#fsck -t ext4 -f -D -v /dev/sdxy


   O comando acima deve ser realizado como root na partição alvo DESMONTADA! Use um Live-CD ou um Live-PenDrive ou o modo de recuperação do seu sistema para isso.  O que ele faz é refazer o índice de diretórios do ext4, reindexando e comprimindo os mesmos se possível.  É ótimo de ser usado depois de você ter finalizado toda a instalação do seu sistema, digo de tudo mesmo, codecs e programas afins que você usa.  Também é bom de ser feito de  tempos em tempos mesmo se você não continuar a inchar o seu sistema com dados em muitos diretórios. Com o fsck -f -D ele obriga a otimização mesmo em um sistema limpo. O -v vai te mostrar um relatório final da integridade do seu sistema de arquivos, mostrando inclusive o número de badblocks do disco se existirem.

b) Para o xfs

Esta é uma grande vantagem frente a outros sistemas de arquivos que sua distro pode usar. O XFS é capaz de ser desfragmentado com suas partições montadas e ativas sem risco de perda de dados. Contudo, eu sugiro que o ideal seja fazer isso com todos os programas  e arquivos fechados. O motivo é simples, se for detectado que um arquivo está em uso este arquivo em particular não é desfragmentado. Quanto mais potente for o seu processador mais rápida será a sua desfragmentação. A primeira desfragmentação/reorganização  é bastante demorada.  O comando para desfragmentar é o xfs_fsr e deve ser dado como root. Ele vai reorganizar o sistema de arquivos  um arquivo por vez, procurando compactar e melhorar a disposição das extensões dos arquivos junto aos blocos e inodes, ele também desfragmenta os 10% de arquivos mais fragmentados por vez que é executado. Como root você pode fazer:

xfs_fsr -t 8000 /dev/sdxy -v

Onde o -t é o tempo máximo que ele pode levar para desfragmentar/reorganizar em segundos. Se não colocar o -t o valor padrão é 7200 ou 2 horas. O -v é o modo verbose, ou seja, ele vai te mostrar o que está fazendo, muito bom para saber se ele pulou algum arquivo que estava aberto.

Você também pode saber o quão desfragmentado o seu disco rígido está  antes de executar uma desfragmentação. O comando é:

#xfs_db -c frag -r /dev/sdxy

Exemplo da saída do comando:

linux-tl2k:~ # xfs_db -c frag -r /dev/sda5
actual 232989, ideal 232230, fragmentation factor 0.33%




Eu recomendo que você faça uso do xfs_fsr todas as vezes que uma quantidade grande de programas forem instalados ou removidos, assim como se os seus dados forem inseridos, alterados ou deletados do disco. Eu não espero a fragmentação aumentar, como ele reorganiza os inodes o sistema fica  sempre ágil com a execução frequente do xfs_fsr.



c) Para o jfs:

a) Refaça o Log do Journal – Após ter terminado toda a instalação do seu sistema (pronto para uso, você já instalou todos os programas que usa, os codecs e de preferência já colocou seus dados nele), agora é o momento de refazer o Log do Journal para acelerar ainda mais as coisas. Entre com um Live-CD do Ubuntu (lembre-se de instalar o pacote jfsutils) ou do Parted Magic (este você não precisa se preocupar em instalar o jfsutils) e execute o seguinte comando como root na partição desmontada:

#jfs_fsck -f -v /dev/sdxy

Onde o xy deve ser trocado de acordo com o seu disco rígido em questão. Na dúvida, use o fdisk -l para descobrir! O  comando acima obriga a checagem do sistema de arquivos JFS em seu disco rígido e refaz o Log do Journal mesmo em um sistema marcado como limpo, além disso ele vai mostrar para você todas as etapas durante o processo, qualquer erro encontrado será automaticamente corrigido. Você pode executar esse comando de tempos em tempos se você for um instalador de programas compulsivos ou se encher muito rapidamente o seu disco rígido. Com isso você notará um rápido acesso as pastas, fotos e documentos.
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

galactus

6) Tornar o seu disco rígido mais rápido às requisições do seu sistema


a) hdparm
   Antes você precisa saber sobre as características técnicas do seu disco rígido.  É que vamos habilitar dois parâmetros dele que vêm desabilitados por padrão. A gravação em cache do mesmo e fazê-lo funcionar a toda velocidade desde o início da requisição. Para isso execute o comando como root:


#hdparm -I /dev/sdX

   
   Onde o X vai depender do disco rígido que você quer tunar.  O comando acima faz um relatório detalhado sobre o seu disco rígido, listando todas as características técnicas do mesmo. Procure por duas informações importantes: Write Cache Enable e o Acoustic Management!  


   O seu sistema pode estar montado sem problemas.  Então faça como root:


#hdparm -W1 -M254  /dev/sdX

   O "W" deve ser maiúsculo mesmo! NÃO erre no "W"! O "w" minúsculo vai detonar o seu sistema! Então, o -W1 ativa a gravação no cache do seu disco e o -M254 faz com que o disco trabalhe mais barulhento (alta rotação inicial), o padrão é 128, o mais silencioso (baixa rotação inicial). Nunca, mas nunca use o -W1 com o XFS, tá lá na empresa que desenvolve o XFS. Numa queda de energia sua máquina virtual pode deixar de existir, entre outras coisas, depois não diga que eu não avisei.
   
   Se o seu disco rígido não suportar esses comandos ele vai dar erro na saída do comando. Se tudo correr bem ele vai avisar que tudo foi ligado (On).  Não se preocupe que não há risco de danos ao disco rígido ou ao seu sistema. Com essas duas mudanças você pode ganhar em média de 2 a 4MB/s a mais nas taxas de leitura do seu disco rígido. É só fazer por três vezes e sem nada sendo usado no sistema o comando e comprovar o que eu digo:

#hdparm -Tt /dev/sdX


   Se tudo correu bem, agora você vai querer colocar esses comandos de forma permanente! Sim, pois só em executar esse comando no terminal não o torna permanente, ele volta ao estado padrão a cada reinicialização do sistema!  Então o que fazer? Ta na mão, coloque o comando no arquivo /etc/rc.local antes do exit = 0 (se tiver isso no seu arquivo)! Como root:

#nano /etc/rc.local

e cole

hdparm -W1 -M254 /dev/sdX

   Você pode colocar quantos discos rígidos você tiver no seu sistema que suportem esses comandos, cada disco rígido deve ter a sua linha de comando.  O comando é dado para o disco rígido e não sua partição.


b) nr_requests

Vamos modificar o número de requisições que o seu disco rígido pode fazer ao ler ou gravar seus dados. Esses valores podem ser aumentados ou diminuídos e vão depender principalmente do tipo de uso que você faz do seu sistema de arquivos. Com esses valores alterados você pode aumentar ou diminuir a taxa de transferência dos dados. Esse valor é dado pelo nr_request. O nr_request fica na pasta /sys/block/sdx/queue/nr_requests .

Onde o sdx vai depender da letra do seu disco rígido. Você pode alterar esse valor de acordo com cada disco rígido do seu sistema. Essa modificação portanto vale para o disco inteiro e  para todas as partições dentro dele! Não existe risco de perda de dados com as modificações propostas!

O valor é dado em KB e pode variar entre: 4 / 8 / 16 / 32 / 64 / 128 / 256 / 512 / 1024 / 2048 !

O valor padrão é 128.  Nos meus testes para desktop o  valor de 256 é o que apresentou melhores resultados no geral.

Para descobrir o valor do seu nr_request siga o exemplo:

$ cat /sys/block/sdx/queue/nr_requests

Para alterá-lo você faz como root:

# echo 256 >  /sys/block/sdx/queue/nr_requests

Essa alteração já passa a valer imediatamente! Você pode fazer seus testes e verificar se isso ajuda ou não.  Se usar apenas o comando echo, todas as vezes que reiniciar a máquina o valor padrão volta a vigorar, ou seja, 128.  Se quiser que o valor ideal para você esteja sempre ativo, coloque essa linha de comando dentro do arquivo /etc/rc.local antes do exit 0 ! Para cada disco uma linha de comando.


c)  read_ahead_kb

Outra opção de tunagem, entre inúmeras, para transferência de arquivos é alterar os valores do read_ahead_kb.   Alterar esse valor para mais melhora as taxas de leitura sequenciais pois você aumenta o Buffer de leitura.
O valor padrão é 128 e novamente para verificar o seu valor use o comando cat. O read_ahead_kb também se encontra na pasta /sys/block/sdx/queue/.  O exemplo então fica:

$ cat /sys/block/sdx/queue/read_ahead_kb

Para alterá-lo você usa o echo, os valores possíveis são:

4 / 8 / 16 / 32 / 64 / 128 / 256 / 512 / 1024 / 2048 / 4096 / 8192 / 16384

Se usar o valor máximo 16384, seu sistema vai ser tora em transferência de arquivos mas também não vai fazer mais nada. Quanto maior esse valor mais "preso" você vai sentir o seu sistema. Aumentando o valor para 256 foi onde encontrei os melhores resultados em geral para um desktop.

# echo 256  >  /sys/block/sdx/queue/read_ahead_kb


7) Altere o escalonador do disco

Este é um tema bastante complexo que vale um artigo extenso só pra falar sobre isso. Aviso logo a vocês que não existe um escalonador perfeito, por isso temos algumas variantes que podemos escolher. Em uma explicação bem simplista, um escalonador de processos é um algoritmo matemático que controla a fila de processos a ser executado pelo processador ou pelo disco.   O escalonador do disco rígido é o mais fácil de alterarmos, pois por padrão são dadas três opções para o usuário do sistema alterar sem compilações. O escalonador do processador só com compilação do kernel. O arquivo que contém essas opções está em:

/sys/block/sd?/queue/scheduler

Onde a interrogação vai depender do disco em que você instalou o seu sistema raiz.

Use o comando cat para ver as opções de escalonadores do disco assim:

cat /sys/block/sda/queue/scheduler

Geralmente saída deve ser esta:

noop [deadline] cfq

O marcado entre colchetes é o que está em uso. O Ubuntu usa como padrão o escalonador deadline ( tradução grosseira – prazo a cumprir). Vou tentar explicar sem complicar muito.
O deadline divide as requisições em dois tipos. As de leitura e as de escrita.  Sendo que a prioridade é de que essa requisição seja executada imediatamente, contudo ele dá um tempo para que elas sejam executadas, 500ms para as de leitura e 5 segundos para as de escrita. Passou o cartão agora do nome dele?
O sistema pode responder mais rapidamente com o deadline em muitos casos. Mas como estamos forçando a barra um pouco, exigindo uma resposta imediata do sistema o tempo todo, ao aumentar demais as requisições, o sistema pode acabar ficando lento. Você vai notar ele mais "preso" a uma determinada tarefa, demorando para responder a outra coisa que queira fazer. Se tiver um processador tora como os Core i5 ou i7, beleza. Mas se for um Celeron... Para contornar isso, você pode usar o cfq ou Complete Fair Queuing.

O CFQ tenta dividir todas as requisições em fatias por iguais e tenta resolver toda elas com a mesma atenção, sem priorizar uma sobre as outras. Essa também é uma explicação bem simplista. Com um exemplo da vida prática fica mais fácil entender. Você chega para comprar um refrigerante no bar e tem 10 pessoas para serem atendidas. Normalmente tem fila, então só  o primeiro da fila é atendido, dão a ele(a) um copo e depois o refrigerante. Os outros estão esperando impacientes. Com o CFQ não é assim, ele primeiro verifica se todos querem o mesmo tipo de refrigerante. Se for diferente ele os agrupa por tipo de bebida. Os da Coca, os do Guaraná e da água, por exemplo. Distribui copo para todos e tenta servir um pouco da bebida para cada um. Assim ninguém fica achando que está lá mofando na fila! Então você pode "apertar o calo" dele que ele não reclama, ele se organiza para atender a todos.

Com o cfq você vai notar um sistema mais "fluido" para responder as muitas requisições. Pode puxar que ele responde. Ou seja, com o cfq seu sistema sempre te dá uma resposta. Não ficará preso a uma tarefa. Mas ele deixa seu sistema menos responsivo por isso, afinal tem que ter sobra para que ele te responda. O cfq não é bom de ser usado com o XFS. Na verdade muitas da vantagens do XFS se perdem com o cfq. Mas ele é ótimo de ser usado com o ext4 e muitas requisições.  Se tiver um processador do arco da velha, sua combinação com o jfs é perfeita se quiser fazer muitas coisas com esse processador velhinho. Só não espere repostas imediatas, mas ele vai te atender a tudo que você pedir.

Já o Noop é um escalonador de disco bem básico, tipo, quem chegar primeiro eu atendo. Então já viu, como as requisições geralmente nunca são ordenadas, você acaba achando ele mais lento, pois seu disco magnético não tem tanta potência para gerenciar tudo tão rápido. Quem chega primeiro bem,  os outros que vem atrás que esperem até essa requisição ser atendida.O Noop pode dar melhores  resultados com SSDs ( que possui potência de sobra) e em sistemas com múltiplos discos, onde pode se dividir a carga do sistema.
.
Obs.: Ficar alternando de escalonadores durante a mesma sessão pode deixar seu sistema lento. Então é bom reiniciar a máquina para testar direitinho.

Então para trocar de escalonador você faz:

# echo "cfq" >   /sys/block/sda/queue/scheduler

O nome do escalonador pretendido tem que estar entre apas mesmo. Certifique que ele foi alterado com o cat:

cat  /sys/block/sda/queue/scheduler

Faça os seus testes e veja se melhora pra você. Se a mudança for boa você deve torna-la permanente. Insira a linha de comando com o echo dentro do rc.local, senão a cada reinicialização ele volta para o deadline padrão.

Se não gostar das alterações basta remover a linha de comando do rc.local e reiniciar a máquina para que o deadline volte como padrão.
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

galactus

8 ) Acelerando a navegação na Internet


a) nsswitch.conf

Vamos modificar este arquivo para acelerar a sua navegação. Procure pela seguinte linha:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4


Vamos deixar assim:


hosts:          files dns


Como root:

nano /etc/nsswitch.conf

Se tiver algum problema basta recolocar  os comandos removidos no arquivo.


b) Usando o dnsmasq

Atenção! Não use essa dica para o Ubuntu 14.04 se você usar o samba ou estiver em uma rede com VPN! Leia este link para enteder o motivo:  http://ubuntuforum-br.org/index.php/topic,105729.msg625698.html#msg625698

O dnsmasq faz cache do dns das suas páginas mais visitadas acelerando sua navegação.
A partir do Ubuntu 12.04 o pessoal da Canonical modificou muito a parte interna da rede do Ubuntu e família, fazendo com que o dnsmasq não funcionasse mais como antigamente.  Mas nada como um pouco de pesquisa e pensar um pouco para fazer ele funcionar como antes!

Instale o dnsmasq:

apt-get install dnsmasq

Depois, pelo terminal, modifique o arquivo dhclient.conf.

nano /etc/dhcp/dhclient.conf

Procure pela linha

#prepend domain-name-servers 127.0.0.1;

E remova o jogo da velha da frente desta linha. Salve e feche o arquivo.
Ficando assim:

prepend domain-name-servers 127.0.0.1;

Reinicie o dnsmasq :

service dnsmasq restart

Exemplo:

root@xubuntu:/home/xubuntu# service dnsmasq restart
* Restarting DNS forwarder and DHCP server dnsmasq                      [ OK ]


Alguns usuários podem ter problemas com essa modificação do dnsmasq. Sua navegação pode parar. Caso isso aconteça, vamos fazer o que o colega Visterine fez para resolver esse problema ( Obrigado por compartilhar a solução do problema).

Após alterar a linha do dhcclient.conf, como usuário root faça: dpkg-reconfigure resolvconf e aceitei todas as solicitações.
Depois ainda como root  rode restart network-manager e em seguida service dnsmasq restart


Use o dig para verificar se ele está funcionado. Exemplo:

dig www.ig.com.br

Repare bem  na linha ;; Query time! Da primeira vez  pode ser mostrado algum tempo em mili segundos. Exemplo da minha banda lesma aqui:

Citarroot@xubuntu:/home/xubuntu# dig www.ig.com.br

; <<>> DiG 9.9.2-P1 <<>> www.ig.com.br
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7267
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.ig.com.br.         IN   A

;; ANSWER SECTION:
www.ig.com.br.      82   IN   A   187.31.64.25

;; Query time: 535 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed May  8 14:07:26 2013
;; MSG SIZE  rcvd: 58

Na segunda vez o tempo deve ser zero!

Como no exemplo abaixo:


Citarroot@xubuntu:/home/xubuntu# dig www.ig.com.br

; <<>> DiG 9.9.2-P1 <<>> www.ig.com.br
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59594
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.ig.com.br.         IN   A

;; ANSWER SECTION:
www.ig.com.br.      79   IN   A   187.31.64.25

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed May  8 14:07:29 2013
;; MSG SIZE  rcvd: 47

Obs.: Se o seu PC ou Notebook acessam a internet através de um servidor com o Bind bem configurado, não existe necessidade de usar o dnsmasq. Neste caso o dnsmasq pode atrasar um pouco a sua navegação.
Se quiser deixar o dnsmasq ainda mais rápido, você deve alterar o arquivo de configuração dele. É que o dnsmasq grava os 150 endereços mais usados. Mas você pode aumentar esse número, fazendo ele gravar mais endereços, aumentado o seu cache. O arquivo encontra-se em /etc/dnsmasq.conf .  Então como root faça:  nano /etc/dnsmasq.conf e procure pela linha:

# Set the cachesize here.
#cache-size=150



Remova o símbolo de jogo da velha da linha cache-size e altere o seu número de 150 para 1000! Colocar zero desabilita o cache. Deve ficar assim:

# Set the cachesize here.
cache-size=1000


Reinicie o dnsmaq, como root:

service dnsmasq restart



Se não gostar dos resultados, remova o dnsmasq pelo apt-get  e volte a comentar a linha do prepend no arquivo  dhclient.conf.


c) hosts

Vamos colocar o nome da sua máquina na linha do  127.0.0.1. Pode parecer incrível, mas isso dá diferença na abertura inclusive de programas. Originalmente o meu arquivo era assim:

127.0.0.1   localhost
127.0.1.1   galactus-casa


# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters


Depois deve ficar assim:

127.0.0.1   localhost galactus-casa
127.0.1.1   galactus-casa


# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Como root faça:

nano /etc/hosts

Então coloque o nome da linha 127.0.1.1 na linha 127.0.0.1. Salve e feche o arquivo. Reinicie a sua máquina.

Já sabe, se não gostar da modificação, apenas remova o nome da sua máquina da linha 127.0.0.1 e reinicie a máquina.
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

galactus

9) Removendo o Logo do LibreOffice e acelerando sua inicialização

Sabe aquela telinha de apresentação do LibreOffice, que aprece logo depois da gente clicar no ícone do Writer, por exemplo, que mostra o carregamento do mesmo? Pois é, sempre achei que aquilo consumia tempo, queria que ele me mostrasse logo a tela do Writer. Então, se quiser remover o logo, como root faça:

nano /etc/libreoffice/sofficerc

Se você instalou um pacote binário do LibreOffice não oficial do Ubuntu, o baixado do site do LibreOffice, o caminho é um pouco diferente. Dica do jkmsjq, faça:


nano /etc/libreoffice4.0/program/sofficerc


Você será brindado com o seguinte conteúdo:

[Bootstrap]
HideEula=1
Logo=1
NativeProgress=false
ProgressBarColor=222,72,20
ProgressFrameColor=245,245,245
ProgressPosition=72,189
ProgressSize=409,8
ProgressTextBaseline=170
ProgressTextColor=255,255,255

Então aonde você vê Logo = 1, troque para 0. Ficando assim:

[Bootstrap]
HideEula=1
Logo=0
NativeProgress=false
ProgressBarColor=222,72,20
ProgressFrameColor=245,245,245
ProgressPosition=72,189
ProgressSize=409,8
ProgressTextBaseline=170
ProgressTextColor=255,255,255


Pode chamar o Writer que o logo sumiu.

Essa  dica é do jkmsjq. Se quiser que o Libreoffice abra quase que imediatamente, dentro do LibreOffice:

Ferramentas --> Opções.   No link Memória marque a opção "Ativar o Iniciador Rápido na Bandeija do Sistema".


10) Trocando o Kernel padrão


Guardei a Cereja do bolo para o final.  Vamos usar um kernel que condiz com todas essas alterações que já fizemos, um kernel de baixa latência ou  baixo tempo de resposta, low latency.

Esse kernel se encontra nos repositórios oficiais do Ubuntu e família nas versões 12.04, 12.10 e 13.04. 32 ou 64bits. Esteja com todos os repositórios principais ativos, incluindo o backports e  instale o pacote linux-lowlatency.


apt-get install linux-lowlatency

Ele vai instalar sempre a última versão oficial do kernel lowlatency da sua versão do Ubuntu em questão. Aceite as dependências que ele mostrar e depois da instalação reinicie o seu sistema para que você possa escolher o kernel lowlatency.  Dependendo da sua configuração será preciso remover o kernel generic ou o lento kernel PAE, para os que usam sistemas 32bits, principalmente se o Ubuntu for o único sistema instalado. Se estiver em dual boot, você pode escolher as opções avançadas do boot e verificar se o kernel lowlatency  é a primeira ou segunda opção.

Para confirmar basta um uname -a no terminal como no exemplo abaixo:

galactus@galactus-Movel:~$ uname -a
Linux galactus-Movel 3.8.0-19-lowlatency #13-Ubuntu SMP PREEMPT Thu Apr 18 09:41:59 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
galactus@galactus-Movel:~$


Este kernel tem todas as funcionalidades do kernel generic. Só foi compilado para deixar o seu sistema mais rápido para Desktops. Para os usuários do Kernel PAE um aviso, o kernel lowlatency não reconhece os 4GB de RAM ou mais em um sistema 32bits.
Se não gostar do kernel lowlatency basta remover o mesmo com um

apt-get remove linux-lowlatency


Depois reinicie a máquina.


Considerações Finais:

Se você chegou até aqui e realizou todos os passos acima, não tem como não notar a enorme diferença no desempenho geral do sistema. É evidente que quanto mais potente for a sua configuração melhor serão os resultados. Todas essas modificações são de meu uso diário em toda as minhas máquinas em que já usei ou uso Linux. Não importa o hardware, de um P4 ou  Celeron a um Core i7 ou de um Semprom a um Phenom.  Claro que guardo as devidas proporções de desempenho.

Só mais uma coisa, com tantos arquivos padrões alterados, no caso de uma atualização do sistema com algum dos arquivos modificados por este tutorial, o gerenciador de pacotes vai reclamar com você que existe uma versão modificada do referido arquivo. Ele vai te perguntar o que deseja fazer, manter a versão modificada ou instalar a nova mantida pelos desenvolvedores. Aceite a nova versão e depois refaça as modificações necessárias se quiser ter o mesmo efeito de antes.

Para aqueles que ainda não acreditam o que essas modificações podem fazer, aqui vai um vídeo com um Notebook com Celeron e o Ubuntu 10.04 com kernel compilado a dedo,  o Omnislash do HqxRiven e  formatação personalizada com JFS mais as dicas deste tuto:

http://www.youtube.com/watch?v=PSMwkPC_dHc


Obrigado a todos que leram todo este extenso tutorial! Espero ajudar mais que prejudicar!
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

asghan

   Ubuntu 12.04 - Unity 64bits

jkmsjq

Estou terminando de instalar o low latency para verificar o desempenho do S.O. com essas modificações...  ;)
LinuxUser: 548942 / Dando um tópico como resolvido
"A verdade só é agressiva a quem vive de mentiras". Autor desconhecido.
Twitter: @jeisonkertesz

havocz

Cara ! Voltei hoje para o Debian e me deparo com este espetacular post ! Parabéns !!!  ;D
°v°
/( )\\ Linux User #433307
^ ^   Debian 7

jkmsjq

Testei os procedimentos básicos do tutorial e garanto: dá uma diferença imensa no desempenho do S.O.

Exemplos:

Com o preload instalado e configurado corretamente a abertura dos programas no meu notebook melhorou consideravelmente.
Aplicativos que mais uso:

LibreOffice, GIMP, Inkscape, Scribus, Firefox e Thunderbird.

Com esses programas basta clicar no ícono e já abrem automaticamente.

As únicas modificações que não fiz foi no sistema de arquivo, que aqui uso o ext4 (preguiça no momento...  ;D)

@Galactus

Sugiro você incluir no seu tutorial a opção de deixar selecionado no LibreOffice em

Ferramentas --> Opções

No link Memória a opção Ativar o Iniciador Rápido na Bandeija do Sistema. Com isso o LibreOffice iniciar-se-á mais rápido ainda.
LinuxUser: 548942 / Dando um tópico como resolvido
"A verdade só é agressiva a quem vive de mentiras". Autor desconhecido.
Twitter: @jeisonkertesz

Renan Rischiotto

Citação de: havocz online 11 de Maio de 2013, 20:46
Cara ! Voltei hoje para o Debian e me deparo com este espetacular post ! Parabéns !!!  ;D

Queria testar o Debian mas o suporte praticamente não existe igual o Ubuntu, pelo menos até onde eu sei...

jkmsjq

@Renan Rischiotto

Suporte igual ao do Ubuntu em português, acredito que somente o em inglês.

Os demais fóruns que me desculpem, mas o fórum Ubuntu é o tal... ;D
LinuxUser: 548942 / Dando um tópico como resolvido
"A verdade só é agressiva a quem vive de mentiras". Autor desconhecido.
Twitter: @jeisonkertesz


Renan Rischiotto


xluisfernando

Um dos tutoriais mais didáticos que já li. Parabéns Galactus!
Samsung Ativ Book i3 - Ubuntu 20.04LTS