kernel Linux otimizado - Compilação e teste
Obtenção, configuração, compilação e instalação de um novo kernel Linux otimizado na distribuição Debian Wheezy, com posterior teste de desempenho comparativo entre kernel com e sem alterações. Inclusive, com overclock simples.
Introdução
Vamos começar com a boa e velha máxima:
O Debian tem uma forma única de lidar com a construção de novos núcleos para a sua instalação, porém, como se trata da compilação de um kernel Linux, a otimização em si, pode ser utilizada em qualquer distribuição, bastando encontrar os arquivos certos.
Se tal otimização compensa, veremos ao longo do artigo e nas conclusões.
Informações necessárias:
Este artigo surgiu na mesa de um bar, onde velhos amigos e antigos programadores, para não dizer programadores velhos (que já não programam mais profissionalmente, mas que acompanham as "novidades" da gurizada em diversos fóruns), sentiram a necessidade de ter alguma comprovação técnica sobre o real efeito das tais "otimizações" de kernel.
Não obstante o efeito da bebida, porém, o álcool é um lubrificante social desde que o mundo é mundo e, havendo um equilíbrio sem excessos, numa mesa de um bar surgem diversos assuntos.
Ao final, seguem os links de onde tiramos algumas "otimizações" do kernel Linux, inclusive aquele imbróglio entre Linus Torvalds e Lennart Poettering, a respeito de um patch de otimização de 200 linhas, o qual Lennart alegou que conseguiria o mesmo efeito com seis linhas modificando o arquivo ".bashrc".
No final, também estão os links para quem quiser ver toda a conversa travada entre os dois.
Veremos através do Phoronix Test Suite e do Hardinfo, os resultados do kernel 3.10.7 com e sem alterações para otimizá-lo.
Aproveitamos o ensejo, pois estávamos prestes a construir um Cluster e, como se tratou de uma instalação em oito máquinas para fins de composição desse Cluster, foi utilizado na instalação do sistema operacional, somente o CD 01. No servidor, foi instalado o sistema com a parte gráfica e nos nós, sem a parte gráfica. O processador do servidor é o Core 2 Quad, descrito anteriormente.
Foi feita também uma instalação Desktop com o DVD 01, em uma máquina pessoal com processador Dual Core. Os processadores dos nós são dois Core 2 Quad, um Core 2 Duo e quatro Pentium 4.
Os particionamentos dos sistemas foram feitos manualmente e ficaram com 7 partições cada. O servidor e os nós ficaram com uma partição "/boot" em ext4 e as outras cinco, com btrfs, mais a SWAP. O desktop ficou com seis partições ext4, mais a SWAP.
Para os testes, foram usados o servidor e o Desktop, sendo que não importa as diferenças entre as configurações, pois os testes foram comparados entre o antes e o depois da compilação, em cada própria máquina e serviram para comprovar se houve realmente um ganho de desempenho com a compilação "otimizada".
Não perderemos tempo em explicações sobre comandos, uma vez que o escopo do artigo não é esse.
Preparando a compilação:
# apt-get update
# aptitude safe-upgrade
# aptitude install vim vim-doc # Não é necessário
Instalando os pacotes necessários:
# aptitude install build-essential module-init-tools kernel-package initramfs-tools libaal-dev wget liblzo2-dev gzip libncurses5 libncurses5-dev dpatch udev
# cd /usr/src
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.7.tar.xz
# tar -x --xz -f Linux-3.10.7.tar.xz
# cd linux-3.10.7 # Não utilizamos link simbólico
# make mrproper # Limpa prováveis compilações anteriores e deleta o arquivo .config
# make-kpkg clean i# Limpa prováveis compilações anteriores, provavelmente aparecerá "sem regra para processar o alvo...", esse aviso é normal, pois deve ser uma compilação "limpa"
Agora vamos descobrir qual o processador da máquina:
# cat /proc/cpuinfo
Porém, a informação deste comando não é suficiente, execute:
# cc -march=native -E -v - </dev/null 2>&1 | grep cc1
Veja a figura abaixo com a saída desse comando:
Na última opção (-mtune=xxxxx), está a informação que precisamos junto com a de cima, para saber o que colocar na opção do menuconfig. No caso do Core 2 Duo, do Dual Core e dos Pentium 4, foi marcada a opção Core 2/newer Xeon, por eles terem dois núcleos (cores).
A saída do comando anterior será mais amplamente utilizada adiante. Capture a tela, ou execute o comando novamente depois de configurar o kernel pelo make menuconfig.
Leia todo o artigo antes de sair executando comandos.
O Debian tem uma forma única de lidar com a construção de novos núcleos para a sua instalação, porém, como se trata da compilação de um kernel Linux, a otimização em si, pode ser utilizada em qualquer distribuição, bastando encontrar os arquivos certos.
Se tal otimização compensa, veremos ao longo do artigo e nas conclusões.
Informações necessárias:
- Kernel Linux-3.10.7, que possui o estranho nome de "TOSSUG Baby Fish" e pode ser encontrado em:
- Debian Wheezy 7.1.0 64 bits, com kernel padrão Linux-3.2.0-4-amd64
- Phoronix-test-suite_4.8.1_all.deb, pode ser encontrado no seguinte link:
- Hardinfo versão 0,51, System Information and Benchmark Tool, instalado através do Synaptic
- Processador Intel Core 2 Quad Q8300, 2.50 GHz, cache L2 4 MB, FSB 1333 MHZ, 4 cores (núcleos) e 4 threads
Este artigo surgiu na mesa de um bar, onde velhos amigos e antigos programadores, para não dizer programadores velhos (que já não programam mais profissionalmente, mas que acompanham as "novidades" da gurizada em diversos fóruns), sentiram a necessidade de ter alguma comprovação técnica sobre o real efeito das tais "otimizações" de kernel.
Não obstante o efeito da bebida, porém, o álcool é um lubrificante social desde que o mundo é mundo e, havendo um equilíbrio sem excessos, numa mesa de um bar surgem diversos assuntos.
Ao final, seguem os links de onde tiramos algumas "otimizações" do kernel Linux, inclusive aquele imbróglio entre Linus Torvalds e Lennart Poettering, a respeito de um patch de otimização de 200 linhas, o qual Lennart alegou que conseguiria o mesmo efeito com seis linhas modificando o arquivo ".bashrc".
No final, também estão os links para quem quiser ver toda a conversa travada entre os dois.
Veremos através do Phoronix Test Suite e do Hardinfo, os resultados do kernel 3.10.7 com e sem alterações para otimizá-lo.
Aproveitamos o ensejo, pois estávamos prestes a construir um Cluster e, como se tratou de uma instalação em oito máquinas para fins de composição desse Cluster, foi utilizado na instalação do sistema operacional, somente o CD 01. No servidor, foi instalado o sistema com a parte gráfica e nos nós, sem a parte gráfica. O processador do servidor é o Core 2 Quad, descrito anteriormente.
Foi feita também uma instalação Desktop com o DVD 01, em uma máquina pessoal com processador Dual Core. Os processadores dos nós são dois Core 2 Quad, um Core 2 Duo e quatro Pentium 4.
Os particionamentos dos sistemas foram feitos manualmente e ficaram com 7 partições cada. O servidor e os nós ficaram com uma partição "/boot" em ext4 e as outras cinco, com btrfs, mais a SWAP. O desktop ficou com seis partições ext4, mais a SWAP.
Para os testes, foram usados o servidor e o Desktop, sendo que não importa as diferenças entre as configurações, pois os testes foram comparados entre o antes e o depois da compilação, em cada própria máquina e serviram para comprovar se houve realmente um ganho de desempenho com a compilação "otimizada".
Não perderemos tempo em explicações sobre comandos, uma vez que o escopo do artigo não é esse.
Instalação
As instalações seguiram o básico:- Instalar o sistema;
- Particionar manualmente;
- Configurar o arquivo sources.list;
- Atualizar o sistema.
Preparando a compilação:
# apt-get update
# aptitude safe-upgrade
# aptitude install vim vim-doc # Não é necessário
Instalando os pacotes necessários:
# aptitude install build-essential module-init-tools kernel-package initramfs-tools libaal-dev wget liblzo2-dev gzip libncurses5 libncurses5-dev dpatch udev
# cd /usr/src
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.7.tar.xz
# tar -x --xz -f Linux-3.10.7.tar.xz
# cd linux-3.10.7 # Não utilizamos link simbólico
# make mrproper # Limpa prováveis compilações anteriores e deleta o arquivo .config
# make-kpkg clean i# Limpa prováveis compilações anteriores, provavelmente aparecerá "sem regra para processar o alvo...", esse aviso é normal, pois deve ser uma compilação "limpa"
Agora vamos descobrir qual o processador da máquina:
# cat /proc/cpuinfo
Porém, a informação deste comando não é suficiente, execute:
# cc -march=native -E -v - </dev/null 2>&1 | grep cc1
Veja a figura abaixo com a saída desse comando:
Na última opção (-mtune=xxxxx), está a informação que precisamos junto com a de cima, para saber o que colocar na opção do menuconfig. No caso do Core 2 Duo, do Dual Core e dos Pentium 4, foi marcada a opção Core 2/newer Xeon, por eles terem dois núcleos (cores).
A saída do comando anterior será mais amplamente utilizada adiante. Capture a tela, ou execute o comando novamente depois de configurar o kernel pelo make menuconfig.
É isso mesmo?
Não sei nada de servidor, uma vez que não sou profissional de informática, apenas gosto de multimedia por diletantismo.
O artigo é interessante pela lucidez. O software não faz milagre no hardware. Pelo menos para os usuários domésticos os resultados não compensam a ginástica, exceto para quem está a procura de emoções fortes.
Vai para os favoritos.