Eu tenho acesso a um nó de 8 núcleos de um cluster Linux. Quando conectado ao nó, posso ver uma lista de processadores usando este comando:
more /proc/cpuinfo
No meu nó de 8 núcleos, os processadores são numerados de 0 a 7. Cada processador é uma CPU Intel Xeon (E5430 a 2.66GHz).
Agora, suponha que eu chame o programa foo
com alguns argumentos args
:
foo args
O programa foo
demora muito para ser executado (horas ou dias, por exemplo). Tendo chamado foo
, é possível determinar o processador específico (ou seja, 0 a 7) no qual foo
está sendo executado? O top
programa mostra o ID do processo e informações semelhantes, mas não vejo o número do processador . Essas informações estão disponíveis?
foo
a dois processadores diferentes. Quando ligofoo
uma vez, ele roda com%CPU
muito perto de 100% (de acordo comtop
). Mas quando ligofoo
pela segunda vez, ambos osfoo
processos são executados de forma que o valor%CPU
de ambos os processos chegue a menos de 100% (geralmente cerca de 45% para cadafoo
processo). Para mim, isso sugere que as duas chamadasfoo
estão em execução no mesmo processador (mesmo que haja oito processadores disponíveis); Eu gostaria de verificar se é esse o caso.Respostas:
ps
pode fornecer essas informações se você solicitar apsr
coluna (ou usar o-F
sinalizador que a inclui).Ex:
Ou:
Meu shell estava executando na CPU 2 quando executei o primeiro comando, na CPU 0 quando executei o segundo. Lembre-se de que os processos podem alterar as CPUs muito, muito rapidamente, para que as informações que você realmente vê já estejam obsoletas.
Mais algumas informações nas respostas desta pergunta do superusuário:
Linux: comando para saber o número do processador no qual um processo é carregado?
fonte
Com o
top
fromprocps
(geralmente o padrão nas distribuições Linux atualmente),top
pressione f, navegueP = Last User CPU (SMP)
e pressione Spacepara selecionar (você também pode mover o campo, por exemplo, antes doCOMMAND
campo com a Righttecla e, em seguida, mover para cima e para baixo). qpara retornar à tela principal (onde você verá seu processo passar de processador para processador, a menos que você o tenha configurado explicitamente para ficar com um). Você pode pressionar Wpara salvar isso como padrão.Pressione ?para obter ajuda.
fonte
O comando
taskset
é o que você está procurando:conjunto de tarefas - recuperar ou definir a afinidade da CPU de um processo
Exemplo
Uma máscara de
f
todos os processadores significa0x00000001
apenas o processador 0.Mostra as CPUs no formato de lista. Eu tenho 4 núcleos no meu laptop neste exemplo.
Veja a página de manual com mais detalhes .
fonte
Você também pode obter essas informações diretamente em
/proc/[pid]/stat
. É o 39º campo delimitado por espaço (desde o Linux 2.2.8).Por exemplo, para exibir em qual processador CPU o shell atual está sendo executado (nesta instância):
fonte