Ubuntu mais rápido em hardware mais modesto (otimização)

Iniciado por flaviovivorio, 01 de Março de 2015, 10:07

tópico anterior - próximo tópico

flaviovivorio

Bom dia, pessoas! :)

Durante um longo tempo tive problemas ao utilizar o Ubuntu em meu notebook, que não possui lá o melhor hardware do mundo. Meu notebook é um AMD Vision C-70 APU with Radeon(tm) HD Graphics × 2, com gráficos Gallium 0.4 on AMD PALM, DDR3 4GB RAM, 320 GB HD, rodando Ubuntu 14.04.2 LTS. Durante um longo tempo eu utilizei o Ubuntu e sua performance não me satisfez, daí testei o Lubuntu, Xubuntu, Debian, DSLinux, Bodhi Linux, Slax, e outras distribuições que prometiam ser ultra leves e rápidas. Daí, só depois eu me dei conta de que o problema, na verdade, era a forma com a qual eu configurava meu laptop. Daí eu fiz o seguinte teste:

#1

- Reservei 40GB de espaço em HD para o sistema, partição formatada em EXT4;
- Reservei 16GB de espaço em HD para a área de troca (o Swap);
- Reservei o restante do HD apenas para os meus arquivos.

A ideia é a seguinte: quanto menos espaço o sistema tiver que gerenciar, mas rápida será a sua performance.

#2

- Instalei o Prelink e o Preload, da seguinte forma:

Primeiro instalei o pacote prelink:
sudo apt-get install prelink -y

Em seguida executei o Prelink, da seguinte forma:
sudo prelink -amR

Para implementá-lo no sistema, toda vez que você atualiza ou instala algum software, proceda da seguinte forma:

1. Editei o arquivo /etc/default/prelink com um editor de sua preferência, alterando: "unknown" para "yes", na linha "PRELINKING=unknown". Salve e feche o arquivo de configuração.

2. Executei esta linha de comando abaixo:
sudo /etc/cron.daily/prelink

Criei o arquivo /etc/apt/apt.conf para que a implementação de execução do Prelink seja iniciada toda vez que eu instalar ou atualizar o sistema, inserindo essa linha:
CitarDPkg::Post-Invoke {"echo Running prelink, please wait...;/etc/cron.daily/prelink";}

Em seguida instalei o pacote Preload:
sudo apt-get install preload -y

#3

Em seguida implementei uma solução para lentidão em conexões de rede e problemas de DNS:

Entre como root:
sudo su

Instale o pacote dnsmasq:
apt-get install dnsmasq
ATENÇÃO: O dnsmasq pode causar sérios problemas de conexão em versões mais recentes do Ubuntu.

Edite o arquivo dhclient.conf:
gedit /etc/dhcp/dhclient.conf
Neste arquivo, remova o # da linha prepend domain-name-servers 127.0.0.1, salve e feche o arquivo.

Em seguida faça:
gedit /etc/dnsmasq.conf
Vá até a linha #cachesize=150, desmarque e mude para 1000, de forma que fique assim:
Citarcachesize=1000

Salve o arquivo e em seguida, faça o seguinte:
service dnsmasq restart

#4

O kernel possui um parâmetro chamado 'swappiness', que indica o quanto o kernel está disposto a usar o Swap. Para saber o valor atual deste parêmetro, pode-se usar o comando:
cat /proc/sys/vm/swappiness
O valor predefinido e de 60. Para o mudar temporariamente, use o comando:
sudo sysctl vm.swappiness=10

Para fixar o valor permanentemente, edite o arquivo de configuração /etc/sysctl.d/99-sysctl.conf, adicionando a linha:
vm.swappiness=10

#5

Instalei a versão final do Kernel Linux 3.19 Lowlatency. Por que?
O Kernel Linux Lowlatency é uma versão do núcleo Linux que possui um tempo de resposta curto, o que faz com que as otimizações acima funcionem ainda melhor. A versão 3.19 possui destaques para os usuários finais:

- Suporte a controle do ventilador SI/CI SMC dentro do driver Radeon, o qur deve reduzir o ruído do ventilador em sistemas com um perfil padrão de ventoinha mais elevado.;
- Várias otimizações que trazem o suporte inicial a GPU GM204 (série 900), que por enquanto ainda inicia sem aceleração de hardware) para o GPU GeForce série 900;
- Melhorias para o sistema de arquivos Btrfs com suporte para RAID 5 / RAID 6 ;
- Suporte a Compression LZ4 para SquashFS;
- Multi-touch para mais dispositivos da Logitech;
- Novo suporte a teclado backlight em laptop da DELL;
- Driver ACPI do ThinkPad reformulado para simplificar silenciamento do som (mute);
- Melhorias no driver ACPI para Toshiba;
- A habilitação inicial de hardware para Skylake, sucessor do Intel Broadwell;
- Várias melhorias para a GPU Radeon HD 7000 e versões posteriores
- Suporte de código aberto AMD HSA está mais próximo da realidade;

Instale da seguinte forma:

Se seu sistema é de 32-bit, faça o seguinte:

[como descobrir? Entre no terminal, e digite uname -m].

No terminal, cole o seguinte:

1. wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-headers-3.19.0-031900_3.19.0-031900.201502091451_all.deb
2. wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-headers-3.19.0-031900-lowlatency_3.19.0-031900.201502091451_i386.deb
3. wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-image-3.19.0-031900-lowlatency_3.19.0-031900.201502091451_i386.deb

Em seguida:
sudo dpkg -i linux-headers-3.19*.deb linux-image-3.19*.deb
Depois reinicie o sistema. Isto é extremamente importante!

Se seu sistema é de 64-bit, faça o seguinte:

[como descobrir? Entre no terminal, e digite uname -m].

1. wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-headers-3.19.0-031900_3.19.0-031900.201502091451_all.deb
2. wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-headers-3.19.0-031900-lowlatency_3.19.0-031900.201502091451_amd64.deb
3. wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-image-3.19.0-031900-lowlatency_3.19.0-031900.201502091451_amd64.deb

Em seguida:
sudo dpkg -i linux-headers-3.19*.deb linux-image-3.19*.deb
Depois reinicie o sistema. Isto é extremamente importante!

Pronto! :) Note como seu sistema está bem mais rápido dessa forma!

Esqueci alguma coisa? Fale comigo!

Artigo com colaborações de byjav e galactus.

byjav

Não sou perito em opimização, mas como a memória RAM é grande, parece útil reduzir o uso do swap. Em Linux faz sentido usar o mais possível a memória. Ao contrário, swap subentende o ler e o escrever no disco rígido, o que faz travar o sistema.

O comando
$ free
monstra o uso da memória e do swap.

O kernel tem o parámetro «swappiness», que indica o quanto o kernel está disposto a usar o swap. Para saber o valor atual deste parámetro, pode-se usar o comando
$ cat /proc/sys/vm/swappiness
O valor predefinido e de 60. O ArchWiki sugere o de 10:
https://wiki.archlinux.org/index.php/swap#Swappiness
Para o mudar temporariamente, use o comando
sudo sysctl vm.swappiness=10
Para o fixar permanentemente, edita-se um arquivo de configuração de sysctl, /etc/sysctl.d/99-sysctl.conf, a adicionar a linha
vm.swappiness=10

flaviovivorio

Citação de: byjav online 01 de Março de 2015, 11:25
Não sou perito em opimização, mas como a memória RAM é grande, parece útil reduzir o uso do swap. Em Linux faz sentido usar o mais possível a memória. Ao contrário, swap subentende o ler e o escrever no disco rígido, o que faz travar o sistema.

O comando
$ free
monstra o uso da memória e do swap.

O kernel tem o parámetro «swappiness», que indica o quanto o kernel está disposto a usar o swap. Para saber o valor atual deste parámetro, pode-se usar o comando
$ cat /proc/sys/vm/swappiness
O valor predefinido e de 60. O ArchWiki sugere o de 10:
https://wiki.archlinux.org/index.php/swap#Swappiness
Para o mudar temporariamente, use o comando
sudo sysctl vm.swappiness=10
Para o fixar permanentemente, edita-se um arquivo de configuração de sysctl, /etc/sysctl.d/99-sysctl.conf, a adicionar a linha
vm.swappiness=10


Boa, byjav!!! Havia me esquecido dessa dica imprescindível! No meu, o swap está em 10 também. :) Obrigado por colaborar!

Arthur Bernardes

Eu tenho certo receio de atualizar o kernel e meu sistema parar o wireless, dependo desse notebook para trabalho. Esse kernel 3.19 low-latency está estável?

flaviovivorio

#4
Citação de: Arthur Bernardes online 01 de Março de 2015, 16:58
Eu tenho certo receio de atualizar o kernel e meu sistema parar o wireless, dependo desse notebook para trabalho. Esse kernel 3.19 low-latency está estável?

Arthur, o Kernel 3.19 é sim o último kernel estável do Linux, o próximo será o Linux 4.0. Eu instalei a versão Lowlatency em meu notebook e funciona perfeitamente. Caso não funcione com você, tente o seguinte:

Encerre todos os programas em execução, entre em um terminal e cole o código abaixo:
sudo apt-get purge --remove linux-headers-3.19.0 linux-image-3.19.0 && sudo apt-get -f install && sudo dpkg --configure -a && sudo update-grub && sudo reboot

Este comando irá:
- Desinstalar o Kernel Lowlatency;
- Consertar pacotes que eventualmente possam estar corrompidos;
- Reconfigurar o Dpkg;
- Atualizar o Grub;
- Reiniciar o sistema.

Ele irá reiniciar da forma como estava antes, sem nenhum vestígio do Linux Lowlatency.

Arthur Bernardes

Vou testar já o que descreveu em todo o tópico, obrigado Flavio!  ;)

druidaobelix

#6
CitarEu tenho certo receio de atualizar o kernel e meu sistema parar o wireless [...]

Então, /Arthur Bernardes/,

Não entendi muito bem o seu receio, pois acrescentar um kernel ao sistema não elima o kernel anterior, então, caso dê alguma espécie de problema, é só iniciar o sistema a partir do kernel que já existia e funcionava bem, simples assim.

Vai ter apenas mais uma entrada no menu do grub listando o kernel acrescentado, você inicia por ela ou não, como quiser, a sua escolha.

Deixe instalado previamente no sistema o gerenciador de pacotes Synaptics, pois caso queira desinstalar é só ir lá, marcar e mandar remover.

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

flaviovivorio

Citação de: druidaobelix online 01 de Março de 2015, 17:57
CitarEu tenho certo receio de atualizar o kernel e meu sistema parar o wireless [...]

Então, /Arthur Bernardes/,

Não entendi muito bem o seu receio, pois acrescentar um kernel ao sistema não elima o kernel anterior, então, caso dê alguma espécie de problema, é só iniciar o sistema a partir do kernel que já existia e funcionava bem, simples assim.

Vai ter apenas mais uma entrada no menu do grub listando o kernel acrescentado, você inicia por ela ou não, como quiser, a sua escolha.

Deixe instalado previamente no sistema o gerenciador de pacotes Synaptics, pois caso queira desinstalar é só ir lá, marcar e mandar remover.



Sim, sim, o que o druidaofelix disse também está certo. Um kernel não desinstala o outro. Você pode dar boot por qualquer um deles, acessando a opção "Opções avançadas para Ubuntu", no Grub.

galactus

Bom, gostaria de fazer alguns comentários e fazer algumas perguntas quanto ao tópico.

Primeiro gostaria de dizer que venho gostando que mais usuários tenham se interessado pelo tema de acelerar o sistema. Contudo, nem tudo são flores.

1) Gostaria de perguntar o motivo da frase: "A ideia é a seguinte: quanto menos espaço o sistema tiver que gerenciar, mas rápida será a sua performance."

Você fez seus testes ou leu algo sobre isso em algum lugar? Pela sua lógica, um sistema com apenas 20GB deveria ser mais rápido do que um de 40GB, certo? E o que dizer de um desktop com 500GB? Nem vou chegar nos servidores com terabytes de dados....

2)  16GB de Swap para um desktop comum é puro desperdício de espaço! Qual o motivo de usar isso tudo de Swap? Você faz uso intenso de máquinas virtuais ou banco de dados e não desliga o seu sistema? Quanto ao valor da vm.swappiness, isso pode variar de acordo com uso do sistema, sua quantidade de RAM e o kernel utilizado. É preciso testar. Usar um valor de vm.swappiness=10 em um sistema desmemoriado vai mais atrasar que ajudar ao sistema a ficar mais rápido! Nos kerneis mais novos e num sistema com muita RAM é possível usar até vm.swappiness=0! Mas cada caso é um caso! Como eu  disse antes, é preciso testar e observar algumas variantes.

3) O dnsmasq pode causar sérios problemas de conexão nessas novas versões do Ubuntu. É preciso alertar o usuário quanto a isso.

4) O Prelink também pode causar problemas ao sistema. Novamente, dependendo do caso pode mais prejudicar que ajudar! Eu já usei e deixei de usar porque pra mim deu mais problema que ajudou, principalmente para quem usa KDE. E não é só eu que digo isso não! Só dar uma lida na documentação dele e em outros tantos  tópicos espalhados pela web. 

5) A troca do kernel  não quer dizer necessariamente que o sistema vai ficar melhor ou mais rápido. Essas últimas versões, começando do 3.16 pra frente, não tem se mostrado boas para processadores antigos, por exemplo. E isso é mais do que esperado. Um kernel mais novo trás correções de Bugs, suporte a novos hardwares e supostas otimizações, mas nem sempre essa otimização funciona melhor. Basta ficarem de olho nos testes do Phoronix para ter uma idéia disso. Ele muitas vezes avisa que um nova versão trouxe "regressão" e não "otimização" ao kernel como um todo, o que também deve ser esperado. Então não precisa haver uma "corrida armamentista" para usar o kernel mais novo possível!   

Veja que não se trata de um crítica, mas acho que você pode enriquecer o tópico avisando que as otimizações podem não funcionar como o esperado para todos! É preciso testar. Por isso os desenvolvedores são obrigados a lançar um sistema com "otimizações genéricas". Afinal eles não sabem que uso o seu sistema vai ter, quanta RAM você vai ter disponível para o seu sistema e se você vai trocar de kernel!
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

flaviovivorio

galactus, muito obrigado por ter lido o meu tópico, e colaborar para o enriquecimento dele! :) Eu venho testando cada melhoria que eu coloquei nesse tópico com base nas minhas necessidades e necessidades que eu suponho que um usuário comum possa ter. Como eu tenho um hardware não tão bom e potente, fiz diversos testes com ele até chegar num ponto onde eu finalmente consegui me adaptar. Quando comecei a reduzir o espaço reservado para o meu SO, percebi um leve melhora na inicialização do sistema. Quando usei 16GB de swap, na verdade eu testei em mais de uma máquina com pouca RAM, que com o espaço do swap maior, alguns computadores tinham um tempo de resposta um pouco mais rápido. Todos os demais testes, eu testei na minha própria máquina e haviam outros que eu também gostaria de postar, que melhoraram muito a minha performance também, mas ainda não criei um tópico para isso, nem atualizei este, porque ainda não tive tempo de testar em outros hardwares. Eu realmente gosto muito do tema 'acelerar o sistema' e não só pesquisei, mas fiz os testes.

Mas no caso do prelink, eu nunca notei nenhum problema, mas também eu não costumo usar o KDE com muita frequência, foi mal, cara, dessa eu não sabia.

A troca do kernel, cara, foi o seguinte, eu realmente pesquisei abeça sobre o assunto e testei tanto o kernel generic e o lowlatency, fiz o teste em duas máquinas diferentes. O lowlatency não teve tanta diferença em maquinas mais robustas, mas eu senti uma leve diferença utilizando ele em meu AMD C-70, por exemplo.

Mas, tudo bem, cara, não encaro de uma forma ruim, volto a agradecer por ter lido e contribuído. Afinal, é trocando ideias que a gente aprende, né?

lotavio

Bom flaviovivorio se é trocando ideias que a gente aprende, vamos as ideias, quando um computador tem memoria ram de 4GB em diante pode colocar swappiness=0 sem problema algum.
No ubuntu 14.04 64bits com 2GB o zfs é executado lentamente, com 4GB o desempenho com cargas de trabalho básicas são feitas porem se colocar riad-z nem inicia por falta de memoria, e funciona normal com 16GB já podendo utilizar a desduplicação. O desenvolvimento do btrfs foi desenvolvida exclusivamente por que o zfs tem
a licença CDDL e esta mesma vai contra o licença do GNU não podendo colocar o código do zfs no linux(kernel) e assim criando o zfs-fuse. Sabemos que quando criamos um programa baseado no original o terceiro nunca tem o desempenho perfeito,como queremos. A minha sugestão para fs é mudar para
Ext4 tuning (http://ubuntuforum-br.org/index.php/topic,71611.0.html)  ou XFS (http://ubuntuforum-br.org/index.php/topic,94105.0.html).
Se o negocio for ter muita swap coloque 50% do tamanho da sua memoria ram que vai estar suficiente(para mim ainda acho um exagero).