Otimizando aplicações com o Apt-Build.


Hoje a maioria dos usuários Linux utilizam o Ubuntu. Na sua versão 12.04 está bastante estável e rápido, batendo de frente com qualquer sistema operacional existente. Mas pensando em Linux onde se tem opções para otimizar o sistema especificamente para o seu computador fica a pergunta... será que o ubuntu e seus pacotes genéricos pré-compilados são realmente rápidos? não poderiam ser mais?

Quando pensamos em performance para Linux, logo pensamos na possibilidade de compilarmos do software. Porém entre compilar o fonte de um software ou baixar um genérico pelo apt a comodidade fala mais alto e utilizamos quase sempre o APT. Mas... nós que buscamos performance temos uma salvação!

O apt-build baixa os fontes dos pacotes, compilando e instalando igual ao método tarball mantendo a árvore criada pelo apt-get. Assim nós podemos modificar a forma de compilação do pacote.

A importância do GCC


O GNU Compiller Collection, produzido pelo projeto GNU é a base do sistema Linux, quase tudo é compilado por ele. Quanto mais atual a versão do GCC, mais opções de processadores e otimizações nós temos. Assim sendo é muito recomendável acompanhar o desenvolvimento do GCC e suas melhorias, também é recomendado ler o manual do GCC e qual a forma mais correta e precisa que podemos utilizar na compilação dos pacotes.

Níveis de otimização:


Vamos ao que nos interessa no gcc. Ao compilar um pacote, existem níveis de otimização utilizados pelo gcc. Vamos explicar quais níveis são utilizados pelo apt-build:

Baixo ou O1: Esse é um modo mais genérico. Compila o pacote mais rápido e usa menos instruções. Pacotes genéricos são compilados com esse nível de otimização.

Médio ou O2: Esse é um meio termo, usa algumas instruções especificas do processador de forma mais segura na hora da compilação. Aqui podemos observar um ganho de performance e mantemos a segurança de ter um pacote compatível que dificilmente apresentará algum erro.

Alto ou O3: Aqui o bicho pega!!! Esse nível é o mais lento de ser compilado, porém recompensa essa lentidão com o uso de instruções específicas do seu processador. O pacote no final da compilação é otimizado ao extremo.

Defina o seu nível. Eu recomendo utilizar o nível O2... mas eu utilizo o O3! heheh Não é mole baixar 400 MB de código fonte do chromium.

Processador:


É aqui a chave para entrar no mundo da alta performance. Cada processador tem suas particularidades e vamos trabalhar em cima dela. Desse modo é possível retirar o máximo de um software. Aqui nesse link temos todas as opções de processadores que o gcc suporta:

http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html

Não fique apenas nesse site, pesquise sobre seu processador. Essa opção define até mesmo se um pacote irá funcionar ou não. Escolhendo errada ele pode compilar com instruções que seu processador não suporta por exemplo.

O APT-BUILD

O apt-build, trabalha com os repositórios "deb-src" onde está localizado todos os códigos fontes dos programas. Assim ao utilizarmos o apt-build ele baixa o código fonte e compila utilizando o seu processador.

Instalação: 
De modo simples, a utilizamos o próprio apt-get na instalação. rodando o comando:

sudo apt-get install apt-build

Durante a instalação ele vai te perguntar sobre o nível de otimização dos pacotes e também qual é o seu processador. Toda a pesquisa anterior vale agora.

Na minha configuração optei por: O3  e  `corei7-avx'.

Pronto. Está configurado. Agora vamos a sintaxe do apt-build:

Após instalar, vamos atualizar o repositório:
sudo apt-build update

Para instalar um pacote utilize o comando:
sudo apt-build install <pacote>

Para compilar um pacote que já está instalado no seu computador:
sudo apt-build --reinstall <pacote>

Para atualizar os pacotes instalados:
sudo apt-build upgrade

Apaga os pacotes compilados
  sudo apt-build clean-build

Apaga os pacotes fontes
  sudo apt-build clean-sources

Finalizando, para recompilar todos os pacotes:

apt-build world
Esse processo pode demorar dias, dependendo do nível de compilação. E ainda corre o risco de gerar vários erros.

Prova final:


Depois de instalar o apt-build e recompilar o evolution. Fiz alguns testes para ver a melhora no desempenho. Utilizando o comando time, marquei o tempo que demorava para abrir e fechar o evolution pelo terminal.

Evolution antes do apt-build:

real 0m10.465s
user 0m3.704s
sys 0m0.396s

Evolution depois do apt-build:

real 0m6.661s
user 0m3.004s
sys 0m0.284s

Podemos ver uma melhora no desempenho de mais ou menos 40%. Fora a fluidez que o programa roda. No meu computador pessoal, recompilei alguns aplicativos que eu utilizava mais, como o chromium, o gimp, o eclipse entre outros. 

E isso aí. Agora é fazer os testes e retirar o máximo de todos os softwares do seu computador.

Comentários

Postagens mais visitadas deste blog

Servidor de Email Seguro com Postfix - Amavis - Opendkim - Opendmarc

Script de Checagem de Serviço.

Convertendo servidores Linux do Xen para VmWare ESX.