Como compreender Cpus_allowed e o número de identificação do segmento?

1

Ambiente: OS --debian + python3.
Todas as informações de saída abaixo omitem sem importância.
Obter informações de cpu do meu computador com cat / proc / cpuinfo:

cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model name  : Intel(R) Celeron(R) CPU G1840 @ 2.80GHz
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 2

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model name  : Intel(R) Celeron(R) CPU G1840 @ 2.80GHz
physical id : 0
siblings    : 2
core id     : 1
cpu cores   : 2

Aqui está o mthreads.py a ser testado.

import os
import threading
print(os.getpid())
def dead_loop():
    while True:
        pass

t = threading.Thread(target=dead_loop)
t.start()


dead_loop()

t.join()

Execute-o em um terminal com python3 mthreads.py , obtenha a saída 3455 , que é o ID do processo de python3 mthreads.py .

cat  /proc/3455/status
Name:   python3
Umask:  0022
State:  S (sleeping)
Tgid:   3455
Ngid:   0
Pid:    3455
PPid:   2205
Threads:    2
Cpus_allowed:   3
Cpus_allowed_list:  0-1

Execute-o no terminal.

python3 mthreads.py
3455

1.Existem 2 cpu no meu pc, porque o Cpus_allowed é 3, mais do que o meu cpu?

pstree  3455 -p
python3(3455)───{python3}(3456)

2.Atre 2 threads rodando agora, 3455 é o id do processo, 3456 é o id do thread, qual é o outro id do thread? Como obter o segundo número de identificação do segmento?

3.Eu quero saber qual ID do processo está sendo executado em qual cpu (cpu0, cpu1)?

    
por it_is_a_literature 25.01.2018 / 03:10

2 respostas

0

Às vezes, id do processo = id do thread.
Mostrar meu código

python3 mthreads.py
7761
cat /proc/7761/status|grep Threads
Threads:    2

pstree -p  7761
python3(7761)───{python3}(7762)

LWP significa o ID do processo leve (thread) da entidade despachável (alias spid, tid), NLWP significa o número de lwps (threads) no processo na página man ps.

ps -p 7761   -f -L
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
user   7761  2305  7761 48    2 19:28 pts/1    00:00:09 python3 mthreads.py
user   7761  2305  7762 51    2 19:28 pts/1    00:00:09 python3 mthreads.py

id do prsc - 7761 contém dois encadeamentos, um id de encadeamento é o mesmo valor de 7761 que o id de processo, outro id de encadeamento é 7762.

    
por 29.01.2018 / 10:48
1
  1. link
  • Cpus_allowed: Mask of CPUs on which this process may run
    (since Linux 2.6.24, see cpuset(7)).

Este não é o número de CPUs, mas simplesmente informa qual CPU seus encadeamentos de programas estão executando em

  1. PPID significa ID do processo pai. É o processo pai do processo que você está inspecionando.

  2. link

psr PSR processor that process is currently assigned to.

O exemplo direto da página do manual para referência: ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm

A maioria desses tipos de informações pode ser encontrada nas páginas man, mas eu entendo que elas contêm um lote de informações e pode ser difícil rastreá-las.

    
por 25.01.2018 / 03:33