Compilar kernel: Quais as vantagens e desvantagens?

Iniciado por brunofin, 11 de Novembro de 2008, 20:43

tópico anterior - próximo tópico

havocz

Citação de: Alakazan online 12 de Novembro de 2008, 13:03
Quanto será que levará nos Corei7?
Compilação instantânea?

kkkk pois é... antes você iniciava a compilação e ia pegar um café, hj vc inicia o café e vai fazer a compilação rsrsrs  ;D
°v°
/( )\\ Linux User #433307
^ ^   Debian 7

Branco

Olá à todos!

Apenas para relato:

Recentemente tive a minha própria experiência em compilar o Kernel. Utilizei a versão 2.6.30, e, obviamente, até obter um resultado satisfatório, cheguei a realizar 4 compilações. Entre uma compilação e outra evidentemente apareceram alguns problemas de funcionamento e identificação de hardware, e, inclusive, cheguei a postar uma dúvida em relação a um dos problema que tive em uma das compilações, cuja solução acabei de comentar há alguns minutos atrás.

No processo de compilação, aprendi muito sobre o sistema. Embora eu utilize Linux desde 1998, nunca havia me atrevido a tal procedimento. Pelo o que lia, achava trabalhoso demais (o que é, de fato), e, muito arriscado (nem tanto). Notei que o processo realmente é trabalhoso, e exige muito tempo, desde seu início até a sua finalização. Para um iniciante, eu diria que a probabilidade de ele obter sucesso na sua primeira compilação é de 1% de chance. Porem, este processo não oferece nenhum risco de perdas no sistema, desde que você mantenha a versão generic do Kernel após a compilação e instalação de sua própria imagem.

No entanto, ainda estou em dúvida quanto aos reais benefícios obtidos com a compilação de um Kernel específico para o nosso próprio hardware.

No meu caso, todo o meu hardware funcionava com o Kernel-Generic que acompanha o Ubuntu 9.04 (Jaunty), porem, eu queria tirar o máximo de proveito do meu hardware, e reduzir ao máximo o espaço em disco, e a utilização da memória, removendo componentes, e módulos que eu não utilizo e deixando o Kernel mais compacto, e, assim o fiz.

Como tenho profundo conhecimento em relação ao meu hardware, dispensei a utilização de patches pré-configurados, e, compilei minha própria imagem deixando apenas o essencial para o funcionamento do meu hardware, criei alguns módulos inativos caso eu precisasse conectar algum hardware antigo que há tempos eu não utilizava.

Como resultado final, não considero os "benefícios" obtidos satisfatório somado ao trabalho e a expectativa que eu tive.

Percebo que a inicialização não ficou tão rápida quanto eu imaginava, e, acho que eu poderia ter tido o mesmo resultado apenas desabilitando serviços e funções que eu não utilizo na inicialização do sistema e da sessão, assim como realizar ajustes no gerenciamento da Swap, etc. Em relação a memória RAM, tive um ganho considerável, entre 25% a 30% mais, e em disco acabei ganhando quase 2 gigas de dados. O que não é tanto para as configurações que temos atualmente no mercado, não é mesmo?

Porem, existe a parte que considero mais importante na compilação de um Kernel, e este foi o resultado que mais me decepcionou: - O sistema ficou claramente instável se comparado ao desempenho apresentado com a versão generic do Kernel. Sendo assim, o ganho que tive com a memória, não tinha muito efeito sobre o desempenho, uma vez que era apresentadas algumas interrupções no boot do sistema, por exemplo.

Como não sou experiente quanto ao procedimento de compilação de Kernels, acredito que isso pode ter influenciado no resultado final da minha própria compilação no que diz respeito a configuração do hardware em si. Mas acho isso muito pouco provável, pois as opções de configuração tais como as funções de cada módulo são muito bem descritas pelo programa de compilação de Kernel.

Fato que considero com muito mais lucidez é o fato de antes de ser lançada um nova versão de quaisquer distros, os desenvolvedores destas realizam inúmeros testes para determinar a compatibilidade, o desempenho e a estabilidade do sistema utilizando tal núcleo. E os ajustes devidos são feitos diretamente na compilação do kernel e dos seus respectivos módulos, e, se necessário, adaptações e correções em um ou outro pacote.

Por isso, como conclusão, tomo que, caso você utilize um hardware que não está sendo identificado pelo seu sistema é viável a compilação de um kernel para o funcionamento deste, porem, se a questão for desempenho, bem, ao meu modo de ver, o Ubuntu 9.04 já vem turbinado de fábrica, quanto a liberação de memória e otimização da inicialização, pode-se desabilitar alguns serviços não utilizados no boot do sistema e no carregamento da sessão, e, quanto ao espaço em disco, a instalação padrão do Ubuntu nos disponibiliza um série de aplicativos e pacotes, que, dificilmente será utilizado por todos os usuários da forma como são instalados por padrão, então, um bom começo seria logo de início fazer o uso do famoso apt-get remove (pacote), ou, simplesmente selecionar suas preferência no Synaptic.

Em todo o caso, é possível você montar sua própria distribuição, baixando o Kernel mais recente, instalando em sua máquina, e em seguida, escolhendo o Shell de sua preferência, instalando o gerenciador de janelas de sua preferências, assim como os pacotes, gerenciadores, e, tendo as dores de cabeças dignas de um usuário avançado. O que não deixa de ser uma excelente experiência para um estudante de TI, ou, entusiastas do meio. Rs...

Abs,

Hqxriven

#17
CitarComo tenho profundo conhecimento em relação ao meu hardware, dispensei a utilização de patches pré-configurados, e, compilei minha própria imagem deixando apenas o essencial para o funcionamento do meu hardware, criei alguns módulos inativos caso eu precisasse conectar algum hardware antigo que há tempos eu não utilizava.

Essa parte da sua mensagem demonstrou aonde foi que vc poderia ter melhorado!!!

Alguns patches são simplesmente remendos para consertar problemas do kernel, porém outros acrescentam funcionalidades e podem melhorar bastante a performance.

Nas minhas horas vagas eu compilo kernels (desde 2007 aqui no fórum e desde 2004 no Slackware 10.1) e apesar dele não ser perfeito sei que um kernel puro (vanilla) mais novo sem patches não dará uma performance muito boa de jeito nenhum e com uma configuração muito customizada dá problemas e nós aqui do fórum vimos na prática quando um colega compilou comigo online um kernel e por ter alterado a configuração teve super problemas e depois com a minha (minha nada... uma remodelada de outra distro para evitar problemas hehehe) tudo foi legal.

Vou só mostar algumas partes da minha configuração...

# Zen-Tune
#
# CONFIG_SET_CUSTOM_SCHED_LATENCY is not set
# CONFIG_SET_CUSTOM_SCHED_MIN_GRANULARITY is not set
# CONFIG_SET_CUSTOM_SCHED_WAKEUP_GRANULARITY is not set
# CONFIG_SET_CUSTOM_VM_SWAPPINESS is not set
# CONFIG_SET_CUSTOM_VM_DIRTY_RATIO is not set
CONFIG_BOOST_PRIVILEGED_TASKS=y
CONFIG_BOOST_RENICE_SETTING=-10

CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"


Essa aqui por exemplo aumenta a velocidade de execução das tarefas através do aumento de prioridade...

# Custom Build Flags
#
CONFIG_CUSTOM_CFLAGS=""
CONFIG_CUSTOM_MAKEFLAGS=""



Nem achei necessário usar... mas aqui é para compilar o kernel especificamente para o seu hardware!! Mas aqui já estava tão bom...

# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_FIFO=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_IOSCHED_BFQ=y
CONFIG_CGROUP_BFQIO=y
# CONFIG_IOSCHED_VR is not set

# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
CONFIG_DEFAULT_BFQ=y
# CONFIG_DEFAULT_VR is not set
# CONFIG_DEFAULT_NOOP is not set
# CONFIG_DEFAULT_FIFO is not set
CONFIG_DEFAULT_IOSCHED="bfq"

Possivelmente vc utiliza o CFQ e eu uso o BFQ que é um CFQ melhorado... O BFQ melhorou bastante e consegue hoje diminuir os delays do CFQ, para um desktop já dá para usar sem problemas...

CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_RAMZSWAP=m
CONFIG_BLK_DEV_RAMZSWAP_STATS=y


Compcache... Esse foi mais um motivo que vc não notou ganhos no seu kernel 2.6.30. (e olha que o Jaunty ainda usa uma versão antiga sem xvmalloc para ajudar no gerenciamento e acesso a memória)

O kernel do Jaunty vem com esse patch para aumentar a performance (se vc baixar o fonte do Jaunty vc vai notar) e com isso a partir do Jaunty toda a pessoa que compilar um kernel no Ubuntu e não usar patches vai dar um passo para trás... pois não utilizará os artifícios usados pela família ubuntu para aumentar a performance...

Espero que eu tenha conseguido passar a mensagem que sem patches não se consegue quase nenhum ganho de performance em relação ao kernel de sua distro (principalmente o Jaunty que é tunado)...

Bom Dia!!! e Muito Obrigado pelo relato foi bem inteligente e muito bem escrito!!!

Hqx
Sem distro Linux fixa - Kernel Omnislash
Meu objetivo nesse fórum é ajudar. Sou um mero humano mas desejo sempre aprender e melhorar em tudo o que faço em minha vida. Então, por favor, quando eu postar me notifique depois

Branco

Correto Hqxriven,

Compilação de Kernel parece ser sempre uma assunto polêmico, não é? Rs...

Você teria algum patch para indicar. Neste caso, penso em fazer uma nova compilação utilizando patches pré-configurados para experimentar esses benefícios, e claro, postar os resultados desta experiência.

Abs,

Hqxriven

#19
CitarCorreto Hqxriven,

Compilação de Kernel parece ser sempre uma assunto polêmico, não é? Rs...

Você teria algum patch para indicar. Neste caso, penso em fazer uma nova compilação utilizando patches pré-configurados para experimentar esses benefícios, e claro, postar os resultados desta experiência.

Abs,

Primeiro gostaria que vc conhecesse o Sidux (no link abaixo tem detalhes)

Sidux

http://www.guiadohardware.net/comunidade/acabou-sidux/987043/

http://www.gdhpress.com.br/blog/mini-review-sidux/

http://www.guiadohardware.net/artigos/entrevista-sidux/

Aí vc verá a velocidade dele...

Zen Kernel (Desvantagem - quer inserir coisas demais o que prejudica a compatibilidade por gerar instabilidade... mas em algumas máquinas funciona perfeitamente)

https://wiki.ubuntu.com/ZenKernel

E depois o http://zen-sources.org/project/Zen-Sources (bem mais atualizado)

E quando usá-lo fique atento nesse link http://forums.gentoo.org/viewforum-f-51.html e procure por zen sources pois esse kernel está sempre sendo atualizado (eles sempre acrescentam coisas)

DiamondMax

http://diamondmax.wordpress.com/

Funcionou bem aqui... não tenho o que reclamar nem sei te apontar uma desvantagem (é melhor perguntar para o desenvolvedor... ele com certeza vai saber explicar melhor) inclusive pedi umas dicas para ele!!!  (gosto muito de aprender com pessoas inteligentes como ele)

Omnislash

A idéia de ajudar a galera surgiu aqui http://ubuntuforum-br.org/index.php/topic,29799.0.html em 24 de dezembro de 2007 quando decidi compartilhar os meus kernels com a galera e a coisa foi evoluindo até chegar ao kernel omnislash... são 84 páginas no momento.

Vantagens

Esse é um dos menores patches que faz poucas modificações no kernel para conservar a sua estabilidade e para aumentar a sua performance. Na sua versão 2.6.30 http://ubuntuforum-br.org/index.php/topic,29799.msg303650.html#msg303650  existem versões de 32 ou 64 bits. Sua base é a do Sidux do kernel de Stefan Lippers-Hollmann (slh) onde adapto o kernel fonte dessa distribuição com o Zen Kernel mais o kernel chamado Sidux Underground (bem tunado mesmo) para criar um kernel que chegue o mais próximo do Vanilla e tenha mais performance.

Se não funcionar legal vc pode falar direto comigo!!! Se quiser sugerir algo, pedir ajuda ou apenas conversar é só ir no dicas e truques!!!

Desvantagens

Tudo tem o seu lado bom e ruim... o patch do Zen Kernel tem 9.9 MB (versão 2.1) e eu reduzi ele para 300 e poucos KB aproximadamente retirando tudo que pudesse de alguma forma deixar o kernel instável. Também retirei a compatibilidade com hardwares novos que usam patches não muito estáveis, retirei o Reiser4, etc...

O meu kernel tem poucas atualizações porque prefiro deixar tudo estável e o mais seguro possível e como o patch é pequeno não é sempre que aparece uma atualização para o que está ali...

O meu kernel não está em formato deb...

Meu tutorial e a minha configuração são para distros debian e para outras distros vc terá que alterar algumas coisas... para isso indico o trabalho derivado do omnislash -
BDMod - Compilar o Linux nunca foi tão fácil! em http://www.guiadohardware.net/comunidade/script-gerador/865908/ (ele demora um pouco para atualizar em relação a mim, mas faz um trabalho fantástico com scripts)

-------------
EDIT 1
Mensagem do bernardo0cd0...

Mas, apenas uma correção, eu demorava pra atualizar, não mais. Com o BDMod Fuuton as atualizações são praticamente simultâneas, pois basta eu empacotar e fazer upload; inclusive já estão as versões 32 e 64 no servidor (no BETA somente).
---------------

Caramba... simultaneamente... Bem que eu disse... é um trabalho fantástisco com scripts!!!



--------------------------------------

Agora é com vc!!!

Ótimos desenvolvedores (que infelizmente quase ninguém conhece...)
-----------------------------------------------------------------------------------------------

Buli
-----

http://www.guiadohardware.net/comunidade/member.php?u=86609

Infelizmente ele ainda não faz kernels para galera... mas ele fez contribuições incríveis para o omnislash, fez coisas que nem eu sonhava em fazer. Sou muito grato pelo trabalho dele...

Grobsch
-----------

Criador do Goblinx (http://www.goblinx.com.br/) faz um trabalho fabuloso e me ensinou bastante sobre kernels junto com o TonySP do fórum Slackware Brasil do qual fui membro por dois anos.

Esses dois no fórum do Slackware eram feras... e mexiam no kernel com extrema facilidade. O grobsch faz um excelente trabalho na distro dele.Foi uma época muito legal!!!
--------------------


Super Galera (o mais importante do omnislash)
---------------------------------------------------------------

Bernardo (BDMOD), Gato humano, Ilkyest, vampire-thunder, buli, carlos, galactus, dtomadon, pinduvoz, Freud jr, DiamondMax, DJ e mais uma boa galera daqui do fórum e do fórum gdh (me perdoe quem eu não lembrei é que é muita gente que contribuiu ou está contribuindo de alguma forma!!!)

Não sei o que seria do omnislash sem eles!!! Que me apoiam, me dão sugestões, críticas e que fazem tanto por mim e pelo omnislash. Eles fazem tanto que eu sinto que o omnislash é feito não apenas por mim, mas por uma grande equipe de pessoas com diversas habilidades onde juntos fazemos o nosso melhor... e isso me deixa tão feliz!!!

O tópico fala por si mesmo: http://ubuntuforum-br.org/index.php/topic,29799.0.html com 84 páginas, um tópico fixo com mais de 95.000 visitas

Eu acho que esse é o diferencial do omnislash... é a aceitação da comunidade e a colaboração da mesma!!!

E a eles, a toda essa galera do fórum ubuntu, gdh e de outros pelo brasil é que sou muito grato mesmo!!!

Obrigado a todos e Boa Noite!!

Hqx
Sem distro Linux fixa - Kernel Omnislash
Meu objetivo nesse fórum é ajudar. Sou um mero humano mas desejo sempre aprender e melhorar em tudo o que faço em minha vida. Então, por favor, quando eu postar me notifique depois