Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Fixar processo em um núcleo de processador
Linux user
Publicado por Ricardo Brito do Nascimento em 26/09/2011

Login: rbn_jesus, 534550 pontos | Blog: http://brito.blog.incolume.com.br
[ Hits: 1560 ]

Fixar processo em um núcleo de processador

Talvez você nunca tenha precisado. Mas como fixar um processo de algum aplicativo a um determinado processador, ou núcleo de processador em um determinado hardware?

Sim, há uma luz no fim do túnel, e o Linux traz aplicativos nativos para fazê-lo.

Estou a mencionar o pacote util-linux (debian-like) ou util-linux-ng (redhat-like), são os responsáveis pela maioria dos binários de controle sistema operacional, e já são nativos nas distribuições mais conhecidas, Debian, CentOS, Fedora, Ubuntu, e por aí a fora.

Se por ventura não houver um destes dois pacotes em teu sistema operacional, proceda conforme abaixo:

Debian-like:

$ sudo aptitude install schedutils

Redhat-like:

$ sudo yum install util-linux-ng

O comando que gerencia em qual cpu rodará o processo é o taskset, que possui a seguinte sintaxe:

taskset [options] [mask | list ]
[pid | command [arg]...]; sendo:
taskset [mask] [command] [arguments]; ou
taskset [list] [command]; ou
taskset -p [pid]; ou
taskset -p [mask] [pid]


As opções(options) são:
  • -p, --pid; identificador do processo
  • -c, --cpu-list; array de cpu
  • -h, --help
  • -v, --version

As máscaras (mask) são as representações hexadecimais dos processadores físicos, por ser complexo e sujeita a falhas não irei tratá-las, mas segue uma representação de exemplo:

0x00000001 processador #0
0x00000003 processador #0 e #1
0xFFFFFFFF todos os processadores (#0 até #31)

A lista (list) é a representação da cpu por sua posição. Tomemos por base um processador Intel Xeon CPU E5310 @ 1.60GHz; cache 4096 KB; 64b. Este processador possui 8 núcleos, e a sua representação será respectivamente:

#0, #1, #2, #3, #4, #5, #6 e #7

O pid ou comando, referem-se ao aplicativo que deseja-se fixar a respectiva CPU, o pid pode ser localizado com o comando ps, ou em vez de utilizar-se do pid execute o aplicativo diretamente com o taskset.

Para fixar o processo proceda da seguinte forma:

$ taskset -c 0-2 -p 1507

$ taskset -c 0,1,2 /etc/init.d/ssh start
  • "-c 0-2" é a lista de CPU 0, 1 e 2;
  • "1507" é o pid do ssh;
  • "-c 0,12" é a lista de CPU 0, 1 e 2;
  • "/etc/init.d/ssh start" é o comando privilegiado;

E uma aplicação Zope/Plone ficaria assim:

$ taskset -c 0 $ZOPE_INSTANCE/bin/zopectl start

Referências:

$ man taskset
$ taskset --help


Atualizações desta dica em:

Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Substituir o hotplug pelo udev no Debian
   Dica Linux recomendada Recuperando o lilo pelo DOS
   Dica Linux recomendada Descobrindo o SO de hosts com o nmap
   Dica Linux recomendada Transferência manual de arquivo de zona em um DNS server
   Dica Linux recomendada Instalando o pacote ZEOS Access no Lazarus 0.9.24

Comentários
[1] Comentário enviado por Thalysson S em 26/09/2011 - 02:31h:

Boa dica rapaz !

Sabia ainda não dessa, valeu !

Abraço.

[2] Comentário enviado por julio_hoffimann em 27/09/2011 - 11:18h:

Oi Ricardo, ótima dica!

Estou começando a procurar o que não é possível no Linux. :-P

Abraço!

[3] Comentário enviado por edps em 30/09/2011 - 19:34h:

Excelente dica, favoritos!


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.