Compilando o Kernel otimizado para o seu processador no Ubuntu!

Iniciado por galactus, 22 de Abril de 2011, 09:49

tópico anterior - próximo tópico

vampire_thunder

Citação de: xluisfernando online 28 de Setembro de 2011, 09:23
Aparentemente, com o Ubuntu 10.04, é complicado compilar a versão 3.0 do kernel
Atualiza o gcc que dá.

xluisfernando

Citação de: vampire_thunder online 28 de Setembro de 2011, 22:02
Citação de: xluisfernando online 28 de Setembro de 2011, 09:23
Aparentemente, com o Ubuntu 10.04, é complicado compilar a versão 3.0 do kernel
Atualiza o gcc que dá.
Estou usando o GCC 4.5. Revisei tudo o que fiz e vou tentar de novo. Acho que no momento em que instalei o kernel 3.0.0-8 via ppa eu acabei esquecendo de instalar o pacote headers. Instalei o image e o headers-generic.

Então, acredito que o problema aconteceu no momento em que o GCC consulta o headers para o kernel 3.0.0-9-14 do natty e encontra a referência do 2.6.32-37.
Samsung Ativ Book i3 - Ubuntu 20.04LTS

RonaldoRG

Fiz uma nova compilação, agora seguindo as dicas do galactus e tá aqui funcionando normal. Retirei também algumas coisas que não utilizo aqui.

Aparentemente não notei nenhuma melhora, mas vou continuar testando pra ver o que acontece.

T+.
Ubuntu 12.04

xluisfernando

#153
No repositório de onde baixei o pacote linux-source-3.0 existe a versão original do kernel e os patches. Pensei em tentar por esse pacote, mas nesse caso, considerando que vou compilar no ubuntu 10.04, devo simplesmente aplicar os patches disponibilizados no repositório ou existe algum outro patch a ser considerado?

Edit: Depois de um tempo refletindo, pensei numa solução mais óbvia. Se pretendo compilar a partir do linux-source e tenho instalado o kernel 3.0.0-8.11, por que não baixar e instalar manualmente o linux-source da mesma versão?

Além do mais tenho instalados o linux-headers, linux-headers-generic e linux-image-generic dessa versão, já com o GCC atualizado para 4.5 e build-essential

O tutorial do Hqxriven trata da compilação do kernel pelo código fonte e nos tutoriais sobre compilação pelo linux-source existe a referência de necessidade do pacote linux-kbuild, da mesma versão do kernel a ser compilado. Pesquisei sobre esse pacote e pelo que entendi ainda não existe versão dele para o kernel 3.0.

Então, posso seguir tranquilamente o tutorial do Hqxriven com o linux-source e ignorar esse linux-kbuild?
Samsung Ativ Book i3 - Ubuntu 20.04LTS

xluisfernando

Esse pacote linux-kbuild parece ser específico do debian. Mas, no ubuntu existe um pacote kbuild.
Numa nova instalação, com o sistema limpo de experiências anteriores e sem os pacotes gcc instalados, ao marcar para a instalação desse kbuild no synaptic, nenhuma dependência extra foi relacionada.
No debian, o pacote linux-kbuild segue a numeração do kernel, assim como o linux-source.

Afinal, qual seria a finalidade desse pacote kbuild?
Samsung Ativ Book i3 - Ubuntu 20.04LTS

mariojuniorjp

#155
No meu i7 920, ele retornou a linha --param l2-cache-size=8192, só que 8192 é o cache L3, e não o L2, que é 256. Devo colocar os 256 ou os 8192?

E no arquivo "/usr/src/linux-2.6.xx/arch/x86/Kconfig.cpu        - linha 300", não tem nenhuma opção citando march, mcpu ou mtune não "isso no kernel 3.2.0". Nesse kernel não seria em makefile_32.cpu não? Por que nesse arquivo cita um desses argumentos.

galactus

Citação de: mariojuniorjp online 30 de Março de 2012, 19:36
No meu i7 920, ele retornou a linha --param l2-cache-size=8192, só que 8192 é o cache L3, e não o L2, que é 256. Devo colocar os 256 ou os 8192?

E no arquivo "/usr/src/linux-2.6.xx/arch/x86/Kconfig.cpu        - linha 300", não tem nenhuma opção citando march, mcpu ou mtune não "isso no kernel 3.2.0". Nesse kernel não seria em makefile_32.cpu não? Por que nesse arquivo cita um desses argumentos.

Você deve usar a saída do comando do gcc, os arquivos a serem modificados para o kernel 3.2 são:
Makefile, arch/x86/Makefile e arch/x86/Makefile_32.cpu.

Eu preciso atualizar esse tópico, mudou muita coisa para esses kerneis da série 3.0 em diante. Vou testar uma nova compilação hoje para ver se tudo dá certo e farei as alterações no tópico.
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

py8elo

#157
Senhores,
após inúmeras tentativas sem sucesso, finalmente acabo de compilar um kernel 3.xx no meu Ubuntu 10.10 LTS e ficou muito bom o desempenho...
Eu usei os fontes do kernel do BackTrack 5R2 (3.2.6-bt5r2 #1 SMP Fri Apr 27 08:32:06 BRT 2012 i686 GNU/Linux) e compilei de forma convencional(make localmodconfig, make -j4 all, make-kpkg clean, fakeroot make-kpkg --initrd --append-to-version=-bt5r2 kernel-image kernel-headers)
gerando os debs e depois os instalei (dpkg -i linux-*.deb)sem qualquer problema.
Se alguem estiver interessado, posso postar em algum repositório os fontes e ou o kernel já compilado...
O consumo de processamento com o Firefox aberto com inúmeras abas, o Adobe Acrobat Reader, o Eudora e mais um programa de comunicação (JT65-HF) é de apenas 6 ~ 9% de cada processador do meu E7500 rodando em over a 3.2GHz e o consumo de memória é de apenas 466 ~ 500Mb... Nesse momento enquanto digito esta msg, o consumo é de:27% de processadores e 786Mb de ram...
Este é o primeiro kernel 3.xx que eu consigo compilar e rodar no meu Super Ubuntu 10.10 LTS... Ainda está em testes mas, acredito que eu não terei problemas com ele...
A minha Nvidia GeForce 9500 GS teve seu driver instalado automaticamente pelo script daquela minha antiga dica, durande a instalação do novo kernel e funcionou perfeitamente....

[]'s,

Silva.
Ubuntu 16.04 LTS
G41M-S01 + E7500 + 4Gb Ram + Gforce GT610 2Tb SATA + 3x500Gb SATA
Linux registered user #521164

mariojuniorjp

Citação de: galactus online 22 de Abril de 2011, 09:51
Outra dica importante do vampire_thunder é que você pode compilar o kernel otimizado para um processador, mesmo não estando na máquina em que você vai usar o kernel!  Mas para isso é preciso executar o comando
$cc -march=native -E -v - </dev/null 2>&1 | grep cc1

Na máquina em que o kernel vai ser utilizado, copiar a saída do comando do que interessa e alterar tudo na outra máquina, assim você vai compilar tudo como se estivesse na maquina em que o kernel vai ser utilizado!
É uma mão na roda se você tem uma máquina poderosa para compilar o kernel e a outra máquina em que o kernel otimizado vai ser usado é muito ruim!  Então você pode usar um Core i7 ou um Phenon X4 para compilar kernel para um Atom 330 ou um K6-II da vida!!!!  É possível inclusive compilar um kernel 32bits em uma máquina 64bits, mas não o contrário, se não me engano!  Mas isso é outro tutorial que o tio vampire vai fazer!!!  :P


Nas páginas abaixo você vai encontrar muito mais informações do que coloquei aqui!  Muita coisa foi testada e agora sabemos que não funciona direito ou não vale a pena usar! Esteja a vontade para fazer os seus testes!
Qualquer erro é só avisar!  Se tiver novidades também serão bem vindas!

Este tutorial é fruto das seguintes páginas:

http://en.gentoo-wiki.com/wiki/Safe_Cflags
http://en.gentoo-wiki.com/wiki/Hardware_CFLAGS
http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel#Core_i7_and_Core_i5.2C_Xeon_55xx
http://ubuntuforum-br.org/index.php/topic,29799.3300.html
http://ubuntuforum-br.org/index.php/topic,29799.3210.html
http://ubuntuforum-br.org/index.php/topic,29799.3180.html
http://ubuntuforum-br.org/index.php/topic,29799.3120.html
http://ubuntuforum-br.org/index.php/topic,29799.3060.html
http://ubuntuforum-br.org/index.php/topic,29799.3480.html
http://ubuntuforum-br.org/index.php/topic,29799.3510.html

Obrigado a todos!

Atendendo ao pedido do Vampire, aqui vai um exemplo do que otimizações do sistema podem fazer por um PC antigo:
Pentium 4 1.5Ghz com 384MB de RAM, sendo 64MB para o Vídeo Onboard Matrox! É isso mesmo, Matrox!
HD de 20GB!  Placa mãe Fujitsu com Chipset Intel 845, e todo o restante do hardware, com exceção da "potente" placa de vídeo Matrox, eram Intel!
Portanto uma máquina com 10 anos de idade! Sua Bios é de 2001! Com isso ele consegue ter um poder de processamento ainda pior que um Atom moderno!

http://www.youtube.com/watch?v=OCevVWiZCks

Atendendo a mais uma pedido, aqui vai a versão deste tutorial em PDF: http://www.megaupload.com/?d=7KXGNLEK

Amigo, uma dúvida. Estou compilando o kernel para o meu Atom, no meu outro computador, rodando o Ubuntu dentro do virtualbox, com um core i7.

De acordo com suas informações, devemos substituir a parte "march=familia do processador" para "march=native", só que tem um porém:

Na minha máquina com o Atom, no mach saiu o nome da familia do processador "Atom". Mas como eu vou realizar a compilação em outro computador, o correto não seria eu deixar o nome da familia em vez de colocar o "native" não? Pois eu creio que, se eu colocar o "native", o compilador irá compilar para o processador da maquina que está realizando a compilação "no caso um core i7".

Ou estou enganado? Aguardo sua resposta!  :D

nomade

Ubuntu Studio 22.04 LTS

mariojuniorjp


galactus

Citação de: mariojuniorjp online 26 de Novembro de 2012, 18:06

Amigo, uma dúvida. Estou compilando o kernel para o meu Atom, no meu outro computador, rodando o Ubuntu dentro do virtualbox, com um core i7.

De acordo com suas informações, devemos substituir a parte "march=familia do processador" para "march=native", só que tem um porém:

Na minha máquina com o Atom, no mach saiu o nome da familia do processador "Atom". Mas como eu vou realizar a compilação em outro computador, o correto não seria eu deixar o nome da familia em vez de colocar o "native" não? Pois eu creio que, se eu colocar o "native", o compilador irá compilar para o processador da maquina que está realizando a compilação "no caso um core i7".

Ou estou enganado? Aguardo sua resposta!  :D

Mário. O trecho que você destacou já responde a sua pergunta.


Como o vampire_thunder disse, se você quiser compilar o kernel otimizado para um processador, mesmo não estando na máquina em que você vai usar o kernel, basta executar o comando a seguir no seu Atom

$cc -march=native -E -v - </dev/null 2>&1 | grep cc1


e depois usar a saída deste comando para ser colada no make file da máquina com Core i7 que vai compilar o kernel para o Atom! Passou o cartão agora?

Se você utilizar o march=native no core i7, esse kernel será otimizado para o seu Core i7 e não para o Atom.

Eu só compilava o kernel do Atom no Atom mesmo.

Quanto a fixar o tópico, acho que não precisa mais. O interesse neste assunto caiu muito. O pessoal quer praticidade. Os kerneis genéricos também melhoraram o desempenho em geral.

Outra dica importante, apesar da dica do make file do kernel ainda ser válida. Muita coisa mudou  no processo de compilação do kernel em relação ao tópico do HqxRiven. Portanto aconselho a vocês a procurar um tuto atualizado, existem vários em inglês,  para poder colocar essa parte do make file do kernel em um tuto atualizado.

Obrigado!
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

nomade

#162
Fala galera, então, instalei o omnislash num pentium III 750Mhz com Lubuntu 10.04 e realmente notei um ganho de desempenho. Mas o comando: $cc -march=native -E -v - </dev/null 2>&1 | grep cc1 não me retorna nada.

Como fazer para otimizar para esse processador?
Ubuntu Studio 22.04 LTS

galactus

#163
Citação de: nomade online 28 de Novembro de 2012, 12:45
Fala galera, então, instalei o omnislash num pentium III 750Mhz com Lubuntu 10.04 e realmente notei um ganho de desempenho. Mas o comando: $cc -march=native -E -v - </dev/null 2>&1 | grep cc1 não me retorna nada.

Como fazer para otimizar para esse processador?

Olá nomade. Tá faltando você instalar os pacotes para poder compilar o kernel!

Tenta um:  apt-get install build-essential bin86 kernel-package libqt3-mt-dev wget libncurses5 libncurses5-dev

E tente executar os comandos novamente!

Esse meu tutorial assume que você já sabia dessa nescidade!  ;)

Olha o link: http://ubuntuforum-br.org/index.php/topic,29799.msg375471.html#msg375471

BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

nomade

#164
Resultou no seguinte:

Citarbuild-essential já é a versão mais nova.
wget já é a versão mais nova.
libncurses5 já é a versão mais nova.
Alguns pacotes não puderam ser instalados. Isto pode significar que
você solicitou uma situação impossível ou, se você está usando a
distribuição instável, que alguns pacotes requeridos não foram
criados ainda ou foram retirados da "Incoming".
A informação a seguir pode ajudar a resolver a situação:

Os pacotes a seguir têm dependências desencontradas:
 libncurses5-dev: Depende: libncurses5 (= 5.7+20090803-2ubuntu3) mas 5.7+20101128-1 está para ser instalado
 libqt3-mt-dev: Depende: libxext-dev (>= 4.3.0.dfsg.1-4) mas não será instalado
                Depende: libxrandr-dev (>= 4.3.0.dfsg.1-4) mas não será instalado
                Depende: libsm-dev (>= 4.3.0.dfsg.1-4) mas não será instalado
                Depende: libxmu-dev (>= 4.3.0.dfsg.1-4) mas não será instalado
                Depende: libice-dev (>= 4.3.0.dfsg.1-4) mas não será instalado
                Depende: libxt-dev (>= 4.3.0.dfsg.1-4) mas não será instalado
                Depende: libxrender-dev mas não será instalado
                Depende: libxcursor-dev mas não será instalado
                Depende: libxinerama-dev mas não será instalado
                Depende: libxi-dev mas não será instalado
                Depende: zlib1g-dev mas não será instalado
                Depende: libjpeg62-dev mas não será instalado
                Depende: libmng-dev (>= 1.0.3) mas não será instalado
                Depende: libpng12-dev mas não será instalado ou
                         libpng12-0-dev
                Depende: libfontconfig1-dev mas não será instalado
                Depende: libfreetype6-dev mas não será instalado
                Depende: libxft-dev mas não será instalado
                Depende: libcups2-dev mas não será instalado
                Depende: libgl1-mesa-dev mas não será instalado ou
                         libgl-dev
                Depende: libglu1-mesa-dev mas não será instalado ou
                         libglu-dev
E: Pacotes quebrados

Não sei bem o que fazer... não dá pra remover com segurança o libncurses5 (5.7+20101128-1), para eu tentar um downgrade. O que você me sugere, meu camarada galactus?
Ubuntu Studio 22.04 LTS