Existe um comando no Linux para saber o número do processador no qual um processo está carregado?

26

Existe algum comando no Linux para descobrir, dado um processo, qual processador o processo está executando? Estou interessado em descobrir a CPU ocupada e o tempo ocioso da CPU desse processador.

kumar
fonte

Respostas:

32

Você pode usar o pscomando para consultar e exibir o processador ativo. Por exemplo, você pode executar:

$ ps -aF
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root         1     0  0  5971  1764   1 Sep15 ?        00:00:01 /sbin/init
ubuntu   28903  2975  0  3826  1208   0 09:36 pts/0    00:00:00 ps -aF

A PSRcoluna mostra que initestá sendo executado no processador 1 e psno processador 0. Consulte a página de manual do ps (1) para obter mais detalhes sobre como personalizar os campos que são exibidos.

Você pode configurar uma ferramenta gráfica como htoppara exibir o processador ativo atual. Além disso, htoppossui um gráfico de exibição de carga por CPU, que pode ser o que você está procurando. Veja, por exemplo, a seguinte captura de tela em http://htop.sourceforge.net/ .

captura de tela htop

Por fim, você pode usar a tasksetferramenta para forçar a afinidade com uma CPU específica.

Emil Sit
fonte
Lembre-se de que (a menos que você tenha usado o conjunto de tarefas para definir a afinidade para apenas uma CPU), essas informações podem ficar obsoletas antes da geração da tela, muito menos no momento em que você a ler.
Jamie Hanrahan
26

Existem muitas maneiras de descobrir. topo, ps.

htop

  • versão testada: 1.0.2
  • url: http://htop.sourceforge.net/

    1. Pressione F2 para entrar na janela de configuração
    2. selecione Colunas na coluna Configuração
    3. ir Colunas disponíveis
    4. adicionar PROCESSOR htop selecionando processador
    5. Verifique a coluna da CPU htop com coluna de CPU

topo

  • versão testada: procps 3.3.8
  • url: http://gitorious.org/procps

    1. Pressione f para entrar na janela Gerenciamento de Campos
    2. Selecione P (Última CPU usada)

aqui está um exemplo com a última coluna P

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND   P 
 5626 yashi     20   0 1926276 545964  47596 R  12.6  3.4 151:10.81 gnome-sh+ 2 
 5347 root      20   0  384788  73600  55708 S   8.7  0.5  55:10.09 Xorg      1 
 8125 yashi     20   0  646240  30776  21928 S   4.3  0.2  23:06.20 gnome-sy+ 0 
 1785 yashi     20   0  581180  29288  15560 R   4.0  0.2   0:25.55 gnome-te+ 1

ps

PSR é o código para exibir a identificação do processador. Você pode usar a opção de formato como ps -o pid,psrou simplesmenteps -eF

$ ps -eF|head
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root         1     0  0  3817   964   0 Aug14 ?        00:00:02 init [2]  
root         2     0  0     0     0   2 Aug14 ?        00:00:00 [kthreadd]
root         3     2  0     0     0   0 Aug14 ?        00:00:11 [ksoftirqd/0]
root         5     2  0     0     0   0 Aug14 ?        00:00:00 [kworker/0:0H]
root         7     2  0     0     0   0 Aug14 ?        00:00:00 [migration/0]
root         8     2  0     0     0   0 Aug14 ?        00:00:00 [rcu_bh]
root         9     2  0     0     0   3 Aug14 ?        00:00:39 [rcu_sched]
root        10     2  0     0     0   0 Aug14 ?        00:00:00 [watchdog/0]
root        11     2  0     0     0   1 Aug14 ?        00:00:00 [watchdog/1]
Yasushi Shoji
fonte
1

Apenas cito o conteúdo do homem ps:

O psr informará o processador em que o processo está sendo executado ou executado. O pcpu informará a porcentagem de tempo que o processo consumiu.

ps -eo pid, tid, classe, rtprio, ni, pri, psr , pcpu , stat, wchan: 14, comm

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm | tail
 9847  9847 TS       -   0  19   2  0.0 S    -              kworker/2:0
10061 10061 TS       -   0  19   2  0.6 Sl   futex_wait_que chrome
10208 10208 TS       -   0  19   3  0.0 S    -              kworker/3:3
10247 10247 TS       -   0  19   1  0.0 S    -              kworker/1:1
10381 10381 TS       -   0  19   1  4.6 Sl   futex_wait_que chrome
10452 10452 TS       -   0  19   0  0.0 S    -              kworker/0:1
10491 10491 TS       -   0  19   0  0.5 Sl   futex_wait_que chrome
10504 10504 TS       -   0  19   2  0.0 S    -              kworker/2:1
10505 10505 TS       -   0  19   0  0.0 R+   -              ps
10506 10506 TS       -   0  19   3  0.0 S+   pipe_wait      tail

Estilo BSD:

ps axo stat, euid, ruid, tty, tpgid, sess, pgrp, ppid, pid, psr , pcpu , comm

firo
fonte
Isso é meio enigmático. Você pode expandir sua resposta para elaborar o que é isso e como usá-lo para resolver o problema? da revisão
fixer1234 30/03