Autor Tópico: tem como fazer o make-kpkg executar em multithread?[resolvido]  (Lida 2261 vezes)

Offline sboorbou

  • Usuário Ubuntu
  • *
  • Mensagens: 385
  • LPIC 2 - LPI 000180523 - Linux user 490229 - MCITP
    • Ver perfil
tem como fazer o make-kpkg executar em multithread?[resolvido]
« Online: 26 de Outubro de 2009, 09:03 »
Boas!!!
Pode parecer boba a pergunta... mas ainda não consegui satisfazer minha curiosidade....
Por exemplo, com make poderia colocar um -j2 -j4 enfim.... um numero de thread simultaneos que gostaria de executar.
Porem com o make-kpkg o -j num funfa.. e na documentação, caso exista algo sobre isso lá, não devo ter percebido, mas não descobri ainda....

para deixar claro... quando vou compilar um novo kernel, a maneira antiga, com o make, posso colocar o -j4 no final e aproveitar os 4 nucleos de meu processador ( bem, quase, mas fica muito mais rápido )... com o make-kpkg como faço isso????



Quem responder ganha um peixe!!! xP

« Última modificação: 27 de Outubro de 2009, 15:39 por sboorbou »
duvida eu em você sinto... duvida a raiva leva, raiva ao ódio leva, ódio é o lado negro da força - Mestre Yoda

Offline Renato Krause

  • Usuário Ubuntu
  • *
  • Mensagens: 314
    • Ver perfil
Re: tem como fazer o make-kpkg executar em multithread?
« Resposta #1 Online: 26 de Outubro de 2009, 17:29 »
Conforme o man make-kpkg:

Citar
       CONCURRENCY_LEVEL
              If defined, this environment variable sets the concurrency level
              of make used to compile the kernel and the modules set using  -j
              flags  to the sub make in the build target of make-kpkg.  Should
              be a (small) integer, if used. You can get the current number of
              CPUs using the command:
               "grep -c '^processor' /proc/cpuinfo" WARNING: Do NOT set the -j
              option in MAKEFLAGS directly, this shall call the build to fail.

Utilizando o env (run a program in a modified environment) poderíamos otimizar da seguinte forma:

Código: [Selecionar]
env CONCURRENCY_LEVEL=`grep -c '^processor' /proc/cpuinfo` make-kpkg [...]
Te serve?  Entendeu?

Abraço,

Offline sboorbou

  • Usuário Ubuntu
  • *
  • Mensagens: 385
  • LPIC 2 - LPI 000180523 - Linux user 490229 - MCITP
    • Ver perfil
Re: tem como fazer o make-kpkg executar em multithread?
« Resposta #2 Online: 27 de Outubro de 2009, 08:51 »
1° Obrigado por responder minha duvida.

deixa ver se entendi... para usar o make-kpkg em multithread é necessário colocar ""env CONCURRENCY_LEVEL=`grep -c '^processor' /proc/cpuinfo` make-kpkg "" e o resto do comando após isso?

Nossa, se funcionar, me ajudou muito mesmo.... agora, que é muiiiiiitooooooooooo mais trabalhoso que usar um -j e numero que precisa... isso é sim


Obrigado pela ajuda, vou testar para ver se funciona, se funcionar posto aqui....

Aproveitando a deixa.... tem uma forma mais facil? ( desculpa, sou humano adepto a facilidades!!! )
duvida eu em você sinto... duvida a raiva leva, raiva ao ódio leva, ódio é o lado negro da força - Mestre Yoda

Offline Renato Krause

  • Usuário Ubuntu
  • *
  • Mensagens: 314
    • Ver perfil
Re: tem como fazer o make-kpkg executar em multithread?
« Resposta #3 Online: 27 de Outubro de 2009, 09:53 »
Desculpe-me, acho que fiz uma brincadeira sem graça, vamos por partes.

Pelo o que eu entendi o make-kpkg utiliza a variavel de ambiente CONCURRENCY_LEVEL. Ele pegaria o valor numérico inteiro dessa variável e utilizaria como se fosse o -j.
O env é um comando que cria um ambiente próprio para o programa que você vai executar, exemplo:

Código: [Selecionar]
env a=1 ls
Isso cria uma variavel de ambiente a com o valor 1 só para a execução do ls. Sendo assim, caso você queira que o -j seja 4, bastaria:

Código: [Selecionar]
env CONCURRENCY_LEVEL=4 make-kpkg [...]
A parte:

Código: [Selecionar]
grep -c '^processor' /proc/cpuinfo
foi pura frescura pois esse comando serve para retornar o número de núcleos que você possui.

Dai eu uni tudo em um comando que verificaria quantos nucleos você possui e já passa para a variável de ambiente para ser utilizado com -j.
Mais uma vez desculpa a confuzão.

Grande abraço e boa sorte (depois me conta como foi pra eu te passar o endereço pra tu me mandar o meu salmão  ;D),

Offline sboorbou

  • Usuário Ubuntu
  • *
  • Mensagens: 385
  • LPIC 2 - LPI 000180523 - Linux user 490229 - MCITP
    • Ver perfil
Re: tem como fazer o make-kpkg executar em multithread?
« Resposta #4 Online: 27 de Outubro de 2009, 13:50 »
eu executei
$ env CONCURRENCY_LEVEL=`grep -c '^processor' /proc/cpuinfo`
$ export CONCURRENCY_LEVEL
$ printenv CONCURRENCY_LEVEL
2
$ env |grep CONCURRENCY_LEVEL
CONCURRENCY_LEVEL=2
$

agora qualquer vez que eu executar o make-kpkg ele usaria 2 processos? correto???
sendo uma váriavel global, o make-kpkg pegaria ele automaticamente, correto?

P.S. você quer o salmão pintado ou o vermelho? ( Xp to inventando, nem sei se existe isso!! )
duvida eu em você sinto... duvida a raiva leva, raiva ao ódio leva, ódio é o lado negro da força - Mestre Yoda

Offline Renato Krause

  • Usuário Ubuntu
  • *
  • Mensagens: 314
    • Ver perfil
Re: tem como fazer o make-kpkg executar em multithread?
« Resposta #5 Online: 27 de Outubro de 2009, 13:58 »
P.S. você quer o salmão pintado ou o vermelho? ( Xp to inventando, nem sei se existe isso!! )

 ;D ;D ;D ;D ;D ;D Nem eu...

Você utilizando o export vai ficar global durante sua seção.

Para que quando você reinicialize a máquina isso persista você deve adicionar ao arquivo /home/usuario/.bash_profile (somente para usuario) ou em /etc/profile (para todos usuários) a seguinte linha:

Citar
export CONCURRENCY_LEVEL=`grep -c '^processor' /proc/cpuinfo`

Abraço,

Offline sboorbou

  • Usuário Ubuntu
  • *
  • Mensagens: 385
  • LPIC 2 - LPI 000180523 - Linux user 490229 - MCITP
    • Ver perfil
Re: tem como fazer o make-kpkg executar em multithread?[resolvido]
« Resposta #6 Online: 27 de Outubro de 2009, 15:35 »
ahhhh Saquei!!!!!!!!!!!!!!

Muito obrigado!!!1

agora ta tudo ok
duvida eu em você sinto... duvida a raiva leva, raiva ao ódio leva, ódio é o lado negro da força - Mestre Yoda

Offline Renato Krause

  • Usuário Ubuntu
  • *
  • Mensagens: 314
    • Ver perfil
Re: tem como fazer o make-kpkg executar em multithread?
« Resposta #7 Online: 27 de Outubro de 2009, 15:38 »
Feitoria!