Vamos abordar algumas formas mais avançadas de melhorar a performance do linux.
Que não seja desabilitando nada, ou mexendo em interface.
Separei as 4 coisas que mais costumo utilizar para melhorar meus servidores, e maquinas virtuais.
Ramlog
Pra quem não sabe o que é ramlog… pode se matar agora. Brincadeira, leia o restante. Depois se mate.
Como o próprio nome diz ram – log, significa armazenar o log na ram, no lugar de coloca-lo no disco diretamente. Como é o comum utilizado pelo syslog.
Dessa forma se evita que haja sempre escrita no disco, que é um dos gargalos de performance em qualquer servidor. Existindo apenas quando o ramlog é reiniciado ou parado.
A utilização do ramlog, faz uma grande diferença na performance
Ramlog – http://www.tremende.com/ramlog no site você pode encontrar o tutorial de instalação para diversas distribuições.
Para o ubuntu seria:
wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb sudo dpkg -i ramlog_2.0.0_all.deb sudo reboot
Colocar /tmp na memória
Utilizando se do tmpfs, podemos colocar a tmp na memória ram.
Mas… o que é tmpfs?
Simples, tmpfs, é apenas um sistema de arquivos, que no lugar de armazenar em HD armazena tudo na memória. Porem após o boot, tudo é perdido. Por isso é indicado se colocar apenas arquivos temporários.
Para ativar o tmpfs é simples, colocaremos no fstab(/etc/fstab):
# Put /tmp to RAM by http://viniciusmuniz.com/ tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0
Se quiser pode definir um tamanho para a tmp, ficando:
# Put /tmp to RAM by http://viniciusmuniz.com/ tmpfs /tmp tmpfs defaults,size=512m,noexec,nosuid 0 0
Alterar as configurações do sysctl
Faça esta melhoria de performance sabendo, que pode comprometer o seu SO.
Mas… o que é sysctl?
sysctl é usado para modificar os parâmetros de execução do kernelem tempo de execução.Os parâmetros disponiveis para modificações estão disponíveis em /proc/sys/.
Para alterar, abra o arquivo /etc/sysctl.conf, e caso não exista as linhas a seguir, as adicione, senão, as altere.
kernel.shmmax=268435456 #para 32 bits kernel.shmmax=1073741824 #para 64 bits kernel.msgmni=1024 fs.file-max=8192 kernel.sem="250 32000 32 1024"
Alterar o uso da swap
Por default em alguns sistemas operacionais, a swap vem com um default de 60 porcento de uso.
Diminua a porcentagem de programas na swap, que se houver algum aplicativo utilizando swap, irá fazer uma grande diferença na performance.
Abra o arquivo /etc/sysctl.conf, e procure por “vm.swappiness”(caso não aja adicione no final do arquivo), e altere para:
vm.swappiness = 10
Espero que você tenha gostado do post, e se quiser receber mais noticias sobre linux, php, e outros assuntos relacionados. Dê um like na pagina do facebook aqui, e assine a nossa lista aqui, e comente se gostou, e tambem se não gostou!
Resumindo: Joga tudo pra memória ram.
Basicamente é isso mesmo, pois, o maior gargalo de performance é o HD.
Será que em vez de usar o ramlog bastaria montar o /var/log com tmpfs, assim como a sugestão para o /tmp?
Faria o mesmo efeito para performance, porem, toda vez, que o computador fosse desligado, os logs seriam perdidos.
O ramlog na hora de desligar o computador, ele escreve tudo no disco.
Isso é fácil resolver. =)
Outra dica relacionada a memória é limpar o cache.
Se você experimentar perda de performace com o tempo pode ser por causa de fragmentação da memória.
Para limpar o cache:
# sync; echo 1 > /proc/sysctl/vm/drop_caches
Também é bom pra quem usa hibernação. Ao limpar o cache pode diminuir significativamente o tamanho da imagem (e consequentemente o tempo de compressão e descompressão) escrita em swap.
PS: também dá pra passar `echo 2′ e `echo 3′ (consulte o manual =P)
Sem querer ser chato, mas já sendo:
aja -> verbo agir
haja -> verbo haver
Você podia dar uma explicada nos parâmetros do sysctl.
No mais, parabéns pelo artigo. É sempre bom aprender esses pequenos hacks!
Obrigado pela correção.
Irei escrever um outro artigo somente sobre o sysctl.
Assina o feed e confere depois =)
feed
Ola amigo. Parabens pelo post. Muito util para entusiastas de desempenho. Semana passada adquiri um livro em pt_BR que trata exatamente sobre esse tema. Claro que ainda não consegui lê-lo por completo, porém é bem completo e têm grandes dicas de otimização de sistemas.
O nome do livro é Linux – Performance & Monitorament. Editora Braspot. Autor Maicon Melo Alves
Link: http://www.brasport.com.br/informatica-e-tecnologia/linux-br-2/linux-performance-and-monitoramento-br.html
Obrigado!
O livro parece bem interessante, gostaria que fosse mais atual.
Uma duvida, no caso do ramlog, ele faz commit para disco periodicamente ou somente na hora de desligar? O que aconteceria no caso de uma falha de energia, por exemplo?
Agora uma sugestao, acho que em posts sobre otimizaçao cabe a ressalva de que cada otimizaçao é especifica para um servidor/uso. No caso do sysctl principalmente, os parametros que voce postou podem ser ótimos para o seu caso, mas nem tanto para o de outra pessoa. Seria interessante informar o que cada parametro altera, e ai cada um ajusta da forma que for melhor para seu ambiente. Claro que voce pode sugerir valores e etc 🙂
Obrigado pela dica!
Já me sugeriram isso, e realmente, seria bem mais útil, cada parâmetro comentado. Por isso, irei escrever um artigo especificamente sobre o sysctl.
Em relação ao ramlog, não encontrei nenhum parâmetro referente a escrita dele de tempos em tempos.
Mas, encontrei uma alternativa, quando você der um restart no ramlog, ele escreve no disco, bastaria colocar na cron.
Gostei, vou compartilhar, muito bom mesmo … principalmente a parte do ramlog. É um gargalo em alguns servidores que administro
Obrigado!
Uma dúvida quanto ao ramlog, e em casos de queda de energia por exemplo, será que os logs se perdem?
valew!
Se perdem.
obrigado pela agilidade na resposta. Abraço
Excelente dica. Aproveito para resaltar que em se tratando do ArchLinux o sysctrl.conf mudou a forma de configuração, vejam o link abaixo:
https://www.archlinux.org/news/deprecation-of-etcsysctlconf/
Obrigado!
Usando esse método minha memória ram será usada mais além do normal ?!
Sim, irá. Pois a performance da memória é muito maior do que a do HD.
Você tem ideia mais ou menos do quanto ?! Porque tenho medo de sobrecarregar minha memória e por vezes acabar ficando sem memória.
Vai depender da configuração que você fizer, na configuração do tmpfs você pode definir o tamanho da partição.
Por exemplo eu tenho um cloudserver onde eu tenho 8×2,0 GHZ e 16 gbs de RAM. Geralmente fica em uso 10 e livre uns 5 ou 4 gibs lembrando que outra parte da ram é usada para vídeo e etc. Compensaria esse método para min ?