Você está na página 1de 16

Otimizando Linux para Computadores Lentos

17 Janeiro 2017, 18:15 h

Tenho pesquisado muito sobre Linux na área de trabalho esses dias, como você
pode ver em minhas postagens sobre Fedora 25 e Arch Linux (recomendado!).

Existem algumas coisas que você deve ter em mente ao migrar para sistemas
Linux.

Mesmo se você tiver um Intel Core i7 Kaby Lake topo de linha, 32 GB de RAM e 2
TB M.2 SSDs, você ainda pode se beneficiar das otimizações de que falarei.

Um dos melhores recursos é a página Wiki do Arch Linux em "Melhorando o


Desempenho" . Você não precisa de tudo lá, mas é um recurso abrangente que
qualquer entusiasta deve ler.
É sobre capacidade de resposta, não desempenho!

A preocupação da maioria das pessoas é primeiro com o desempenho, e isso é um


erro. O Linux é muito rápido, mas para muitas pessoas não é assim no Desktop.

Ao ajustar um servidor, você realmente deseja ajustar o desempenho e alto


rendimento. É aí que a maioria das configurações do Linux realmente supera a
concorrência: elas vêm melhor ajustadas para obter o máximo das configurações de
servidor.

Mas em um Desktop você não quer isso. Por exemplo, você está copiando um
arquivo de 20 GB para o seu pen drive USB antigo, ou está descompactando um
arquivo grande, ou está compilando aquele grande pacote da fonte, ou deixa o
Dropbox em segundo plano sincronizando gigabytes de arquivos de seus
servidores. Ou você está fazendo "nada" (pelo menos em primeiro plano, mas o
Gnome Tracker está indexando fortemente seus arquivos em segundo plano) e seu
ambiente trava, trava por alguns segundos e continua fazendo isso de vez em
quando.

E você fica se perguntando por que o Linux é tão ruim em comparação com o
Windows ou macOS, onde você não vê o mesmo comportamento em hardware
semelhante.

Existe um termo que ainda é mal compreendido: tempo real .

Estar em tempo real não significa "computar super rápido", significa "ser previsível".
Se algo precisa acontecer em uma certa frequência, não importa se cada ciclo leva
1 segundo, desde que demore consistentemente o mesmo 1 segundo - em todos os
prazos. Se você tem uma máquina "rápida" que calcula mais rápido em 10
milissegundos a cada ciclo, mas de vez em quando, trava aleatoriamente por alguns
segundos, isso não é em tempo real. E para a criação de mídia, é um desastre.

Existe o tempo real difícil, onde um pico ou vale pode ser considerado uma falha
catastrópica, e o tempo real suave, onde você pode lidar com alguns picos, mas não
tanto. Requisitos difíceis de tempo real são raros, a menos que você esteja
desenvolvendo sistemas para usinas nucleares, você pode perder alguns prazos.

A maioria dos problemas de capacidade de resposta está relacionada a situações


soft em tempo real. Você pode lidar com alguns picos esparsos aqui e ali, mas não
mais do que alguns. E é assim que você deve fazer sua pesquisa: não pesquisando
no Google por "desempenho do Linux", mas por "tempo real do Linux" ou
"capacidade de resposta do Linux".

Você também descobrirá que existem nichos de profissionais com distros especiais
apenas para gravação e edição de áudio, por exemplo AVLinux ou KXStudio .

O macOS é particularmente bom para criadores de mídia precisamente porque é


altamente ajustado para soft real-time, o que é crítico para softwares como o Logic
Pro. E pelo mesmo motivo, é um sistema operacional de servidor ruim. Você notará
que a gravação de tela padrão do Quicktime é super suave, você raramente vê
falhas.

Mas você não precisa usar uma distro específica de áudio ou um kernel rígido em
tempo real. As distros críticas de áudio não usam o PulseAudio, mas os usuários
normais não ficarão tão preocupados com isso. Podemos ajustá-lo para encontrar
um bom equilíbrio entre capacidade de resposta e desempenho. Se você realmente
quer ir para o núcleo duro, você pode querer ler o Linux Audio Wiki em Tempo
Real , mas está fora do escopo deste artigo.

Quais são os verdadeiros gargalos?

Um computador "lento" não tem necessariamente CPUs antigas. Estou fazendo


meus testes em um desktop de torre Lenovo Thinkcentre Edge 71z muito antigo. Ele
tem uma CPU SandyBridge de 4 núcleos Intel Core 2.4 Ghz de 2ª geração.
Acabamos de ver o lançamento dos processadores Kaby Lake de 7ª geração, então
pode-se supor que nada funcionaria em uma CPU tão antiga, mas você estaria
errado.

A CPU geralmente não é um gargalo sério, a menos que você esteja fazendo
cálculos realmente intensivos, como compressão de vídeo, ciências de dados,
genética, redes neurais, etc.

Para um usuário casual ou mesmo um desenvolvedor pesado, qualquer


processador melhor do que a série Intel Core de 1ª geração é suficiente.

A GPU também raramente é um gargalo, a menos que você esteja fazendo jogos
pesados ou renderizações em 4K. Na maioria das vezes você realmente não
precisa de uma GTX 1080 de US $ 7000 dedicada.
A propósito, isso não é necessário para a maioria dos sistemas, mas apenas para
garantir a segurança, faça o seguinte:

1 sudo pacman -S mesa-demos


2 glxinfo | grep direct

Você deveria ver direct rendering: Yes. Caso contrário, consulte a


documentação da sua distribuição, porque isso significa que você não está
compondo por meio da GPU e está desperdiçando ciclos de CPU renderizando sua
tela!

Se você tentar medir os usos da CPU e GPU, perceberá que na maioria das vezes
eles estão realmente ociosos! Isso mesmo, você está subutilizando principalmente
os núcleos da máquina.

O gargalo geralmente se resume a E / S.

RAM vs SWAP

Agora, você está abrindo seu navegador Chromium brilhante. Qualquer pessoa que
brincar por alguns minutos abrirá em média uma dúzia ou mais de guias, sem suar a
camisa.

É muito fácil consumir todos os 8 GB de uma máquina comum. Sempre que isso
acontecer, o sistema operacional terá que começar a descarregar os dados no
disco, o que é muito lento.

Se os dados do aplicativo forem descarregados para o disco e você usar alt-tab


para eles mais tarde, o sistema operacional alcançará uma "falha de página" e terá
que carregar do disco, do arquivo / partição de troca. E, novamente, isso terá o
efeito de bloquear suas ações. O ambiente pode gaguejar por um segundo ou mais,
tornando-o sem resposta .

A primeira coisa que você pode querer fazer é instalar uma extensão como The
Great Suspender . Ele simplesmente fechará todas as guias, exceto a que você está
lendo agora. Quando você mudar para outra guia, ela será recarregada. O efeito é
que você não está usando RAM se realmente não precisar.

Esta extensão sozinha pode economizar alguns GIGABYTES de RAM, o que não é
pouca coisa se você tiver 8 GB ou menos.

A outra coisa a considerar é que o Linux vem pré-configurado para equilibrar o


descarregamento de dados do aplicativo para troca para acomodar o cache do
sistema de arquivos. Portanto, se você estiver descompactando um arquivo grande,
alguns desses dados irão para o cache de RAM e os dados do aplicativo serão
movidos para o disco. Depois de terminar de descompactar, você usa alt-tab para
aplicativos e boom: falhas de página, falta de resposta.
Portanto, você deseja configurar o sistema operacional para manter de forma mais
agressiva o estado do aplicativo na RAM, e é assim que você faz :

1 sudo tee -a /etc/sysctl.d/99-sysctl.conf << - EOF


2 vm.swappiness = 1
3 vm.vfs_cache_pressure = 50
4 EOF

Ainda no tópico de armazenamento, você encontrará alguns kernels mais antigos


que fazem sua máquina parar de responder ao lidar com armazenamento mais lento
, como unidades USB ou cartões SD. É assim que você o ajusta:

1 sudo tee -a /etc/sysctl.d/99-sysctl.conf << - EOF


2 vm.dirty_background_bytes = 16777216
3 vm.dirty_bytes = 50331648
4 EOF

Se você não quiser reiniciar agora, você pode executar isso em um Terminal:

1 sudo sysctl -w vm.swappiness = 1


2 sudo sysctl -w vm.vfs_cache_pressure = 50
3 sudo sysctl -w vm.dirty_background_bytes = 16777216
4 sudo sysctl -w vm.dirty_bytes = 50331648

Não vá longe demais no ajuste, por exemplo, nunca desative o diário do sistema de
arquivos. Ele aumenta o desempenho com o risco de colocar seus dados em risco
de corrupção.
Schedulers

Por que o "Linux não estava pronto para o desktop" anos atrás?

Porque demorou muitos anos para finalmente começar a lidar com baixa latência,
troca de thread de baixo custo e melhor programação. Você tem que agradecer a
Con Kolivas , Ingo Molnár, Thomas Gleixner . O desenvolvimento do kernel Linux é
conhecido por ser muito difícil de lidar e Con Kolivas é uma de suas vítimas, mas
seu trabalho continua vivo para nos permitir ter melhores experiências de desktop
atualmente.

Existem Agendadores de Processo e Agendadores de E / S. O primeiro é


responsável por gerenciar a preempção do kernel, como ele alterna entre diferentes
tarefas computacionais, o equivalente de baixo nível de você "alt-tab" por meio de
aplicativos, por assim dizer.

Agendadores de I / O lidam com o compartilhamento de recursos de I / O lentos com


processos concorrentes que precisam ler do disco, gravar na RAM, etc.

A história recente do agendador de processos para o Desktop se resume aos


trabalhos de Con Kolivas sobre agendamento de feiras, levando ao Agendador
Completamente Justo (CFS) de Ingo Mólnar, que é o padrão na maioria das distros
hoje em dia, e ao trabalho contínuo de Kolivas em Escadaria, Prazo de Escadaria
Rotativa , Prazo final da escada, Brain Fuck Scheduler (BFS) e o mais recente
Multiple Queue Skiplist Scheduler (MuQSS).

Depois, há Agendadores de E / S. Na maior parte do tempo, você lidará com o


Completely Fair Queuing (CFQ). A maior parte do desenvolvimento deste lado é
atribuída a Jens Axboe, também responsável pelo Deadline Scheduler e Noop
Scheduler. Depois, há a evolução polêmica chamada Budget Fair Queuing (BFQ).
Quando você tem SSDs (e é por isso que você quer SSDs), é mais provável que
você escolha NOOP (ou Prazo ) apenas porque não há necessidade de perder
tempo de computação gerenciando filas de E / S complexas para SSDs, pois eles
podem lidar facilmente com até dezenas de milhares de operações de E / S
simultaneamente sem suar a camisa.

Mas se você tiver que usar discos rígidos mecânicos, especialmente os antigos e
superlentos de 5.400 rpm, você vai querer gerenciar a fila de E / S com eficiência,
tocando as placas giratórias o mínimo possível. E neste caso, você realmente vai
querer usar algo como BFQ (ou pelo menos deixar no CFQ padrão).

Você pode verificar qual I / O Scheduler está executando assim:

1 $ cat / sys / block / sda / queue / scheduler


2 noop deadline cfq [bfq]

No exemplo acima, você verá que [bfq]é o ativo, mas você pode alterá-lo
instantaneamente para testá-lo, se desejar.

Para aproveitar as vantagens dos agendadores mais recentes para otimizar melhor
os computadores lentos, sua melhor aposta é instalar o kernel Zen do Linux, uma
versão do Liquorix . Inclui o agendador MuQSS em vez de CFS e BFQ em vez de
CFQ, ao mesmo tempo que adiciona mais ajustes para responsividade como QoS
adequado sobre TCP para evitar congestionamento de TCP.

No Arch Linux, é uma coisa simples de fazer:

1 sudo pacman -Sy linux-zen


2 sudo grub-mkconfig -o /boot/grub/grub.cfg
Para o Ubuntu, você pode querer consultar a página de instalação do Liquorix, pois
depende de sua CPU, mas provavelmente você instalará em máquinas de 64 bits:

1 sudo apt-get install liquorix-keyring


2 apt-get install linux-image-liquorix-amd64 linux-
headers-liquorix-amd64

GNOME 3 é muito lento?

Sempre ouvi dizer que GNOME e até KDE são muito lentos, você deve apenas usar
XFCE (ou LXQt, ou MATE).

E sempre me pareceu uma daquelas coisas que as pessoas ficam repetindo até que
se torne o cânone oficial.

Como engenheiro, não gosto de pensar assim. Desafiar o cânone é mais parecido
com o que um engenheiro deve fazer.

GNOME 3.22 é um ambiente e ecossistema em constante evolução. É bonito por


padrão, não há necessidade de ajustá-lo muito. E tem várias conveniências
integradas, como contas online do GNOME, rastreador para indexar arquivos e
torná-los facilmente pesquisáveis, fotos do GNOME que sincronizam com o Google
Fotos e assim por diante. Gostamos de cada detalhe em um sistema como o
macOS.
A conveniência é uma compensação de desempenho e capacidade de resposta.
Portanto, as máquinas de última geração se beneficiarão da conveniência e as
máquinas antigas sofrerão por causa do "inchaço" extra no fundo.

Como você mantém algumas das conveniências do hardware antigo?

Novamente, você deve entender o que está acontecendo. A primeira coisa que você
deve instalar é htop e iotop . O primeiro é bom para ver quais processos em
execução em segundo plano podem estar consumindo sua CPU ou RAM. O
segundo é bom para ver quais processos estão inchando suas filas de E / S fazendo
operações de arquivo / rede em segundo plano.

O que descobri no meu sistema foram dois criminosos principais: Dropbox e


Tracker.

O Dropbox é opcional, mas a maioria das pessoas hoje em dia o usa. Fora da caixa,
ele é um monstro hidioso, um dos piores softwares com o qual você é obrigado a
conviver.

Na primeira vez que você instalar e tiver que baixar tudo, sua máquina vai cair de
joelhos. Nada a ver com isso, apenas lembre-se de instalá-lo na sexta à noite e
deixá-lo funcionando no escritório no fim de semana.

Em seguida, edite /usr/share/applications/dropbox.desktope substitua a


Exec=dropboxlinha por:

1 Exec = ionice -c 3 -n 7 dropbox start -i && cpulimit -b


-e dropbox -l 10
Isso "deve" ajustar o Dropbox para ter o mínimo de tempo de CPU e só ter E / S
quando o sistema estiver ocioso.

Outra forma é instalar o Ananicy . É um daemon que promete definir


automaticamente o NICE e o IOCLASS dos processos selecionados da mesma
forma que usando ionicee cpulimitacima. Você pode instalá-lo no Arch assim:

1 sudo pacaur -S ananicy-git

E se você cat /etc/ananicy.d/dropbox.rulesverá um conjunto de regras


como este:

1 # Dropbox client: https://www.dropbox.com


2 NAME = dropbox NICE = 19 IOCLASS = idle

Que é basicamente o que fizemos no Execajuste de linha. Não testei o Ananicy o


suficiente, mas se cumprir o que foi prometido, é ainda mais fácil, pois vem com
regras pré-configuradas para aplicativos como make, VLC, transmissão, etc.

Então, existe o Tracker . O objetivo desta ferramenta é indexar seus arquivos para
que você possa pesquisá-los de forma rápida e fácil por meio de aplicativos
GNOME, como o Gerenciador de Arquivos Nautilus.
Novamente, a primeira vez que você instalar seu novo ambiente GNOME, será
muito caro construir a primeira passagem de índice, especialmente se você estiver
baixando toneladas de arquivos do Dropbox. Faça isso em uma sexta à noite!

Mas você também deve ajustá-lo para funcionar apenas quando o sistema estiver
ocioso. Execute Alt-F2 e digite tracker-preferences, em seguida, configure-o
para ficar assim:
No mesmo applet, configure-o também para ignorar logdiretórios e *.logpadrões
de arquivo!

Apenas essas 2 coisas devem tornar sua máquina muito mais responsiva ao usar
acionamentos mecânicos lentos. Percebi que gnome-photoscontinua rodando em
segundo plano e consumindo algum I / O, provavelmente está tentando sincronizar
suas fotos online do Google se você definir contas online do GNOME .

Dropbox, Tracker, Gnome-Photos farão com que sua experiência inicial seja
péssima. Mas se você tiver paciência - e uma conexão rápida com a Internet - eles
devem se acalmar após a pesada sincronização inicial.

O GNOME tem outros serviços em segundo plano, a saber:

1 gnome-session
2 gnome-shell
3 gnome-settings-daemon
4 gnome-online-accounts
5 evolution-data-server
6 gjs-console

Deve haver mais dependendo dos aplicativos opcionais instalados. Gnome-Shell e


GJS são facilmente os piores do grupo. Você não pode fazer muito sobre eles
porque eles são o núcleo do GNOME. O GJS, em particular, permite extensões
baseadas em Javascript e tudo que o Javascript é lento. A única coisa que você
pode fazer é evitar a instalação de muitas extensões do GNOME.

A propósito, se você instalar o XFCE junto com o GNOME, ficará surpreso ao saber
que muitos dos mesmos serviços de segundo plano serão inicializados em segundo
plano! Instale um ou outro, não ambos no mesmo sistema.
Por outro lado, uma instalação simples do Arch com o conjunto de pacotes XFCE4
iniciará consumindo cerca de 150 MB de RAM !! Mas é claro, você perde todas as
sutilezas que vêm pré-instaladas com o GNOME. E também, é claro: você inicia o
Chromium, abre algumas guias e lá se vai toda a RAM de qualquer maneira.

Se o seu objetivo é apenas economizar recursos, a escolha não é entre XFCE ou


LXQt, é entre abrir permanentemente o Facebook em uma aba do navegador ou
não. A realidade é que o principal infrator da RAM é a Web como um todo. Meia
dúzia de guias e você consome mais de 1 Gigabyte, e continua aumentando. É por
isso que minha primeira recomendação principal é instalar o The Great Suspender.

Você executará aplicativos muito piores em primeiro plano. Por exemplo, Spotify,
Franz, Atom, para citar alguns. Se for um aplicativo híbrido que carrega um
navegador para carregar um aplicativo da web, será pesado.

E eu escolheria um gerenciador de desktop com visão de futuro que já suporte


Wayland / Weston em vez de X11. Você quer jogar fora o legado X11 ruim o mais
rápido possível.

Resumo

Como um TL; DR mais curto, lembre-se de fazer o seguinte:

● Ajuste suas configurações de troca e pressão de cache para evitar falhas de


página ao usar seus aplicativos de primeiro plano. É uma troca entre
desempenho e capacidade de resposta.
● Instale os kernels Linux-Zen ou Liquorix (dependendo da sua distribuição)

para ter acesso ao melhor agendador de processos MuQSS e agendadores


de E / S BFQ. Se você estiver usando um SSD, verifique se está usando
agendadores NOOP ou Deadline I / O. Verifique também se há suporte para
TRIM .
● Faça o Dropbox e o Tracker funcionarem bem com o seu sistema. Configure
ambos para serem executados apenas quando você não estiver usando o
sistema (quando ocioso). Talvez instale o Ananicy e se alegre.
● Não escolha um Desktop Manager devido a questões de desempenho. Se
estiver usando o Chromium ou outros aplicativos baseados na web, você já
está condenado. Portanto, não entre em pânico e use o GNOME 3.22.

Quando instalei o Fedora 25 e o Arch Linux, senti que eles estavam lentos. Quando
usei o Ubuntu 14.04 por meses em um hardware melhor, também o achei lento em
comparação ao macOS em um hardware semelhante, mas nunca tentei esse nível
de ajuste antes.

O principal motivo é a sincronização inicial pesada de aplicativos como Dropbox,


Tracker, Gnome-Photos.

A segunda razão é o melhor ajuste do agendamento de E / S e configurações de


troca por causa do uso de um disco rígido mecânico. Se você usar um SSD,
provavelmente não sofrerá tanto.

Resumindo: se você puder, compre um bom SSD. Se você tem PCI Express x4,
faça ainda melhor e compre um SSD M.2 como o Samsung 950 EVO M.2 . A melhor
coisa que você pode fazer é ter mais de 8GB de RAM (16GB sendo um bom ponto
ideal) e um SSD muito rápido (de preferência com um BUS que não sofra de
gargalos do SATA 3).

Com todos os ajustes e ajustes, estou feliz em informar que minha velha torre
Lenovo está funcionando tão bem quanto pode, sendo responsiva o suficiente
mesmo em cargas mais altas, com este disco rígido mecânico lento. E como um
bônus, se você escolher permanecer no GNOME 3, instale o bom tema Flat Plat ,
fortemente inspirado no Material Design, e os conjuntos de ícones Paper ou Moka .

Você também pode gostar