Número de processadores em / proc / cpuinfo

26

Enquanto eu aprendia sobre a carga da CPU, soube que isso depende do número de núcleos. Se eu tiver 2 núcleos, o carregamento 2 fornecerá 100% de utilização da CPU.

Então eu tentei descobrir núcleos. (Eu já sei que o sistema tem 2 núcleos, 4 threads de modo 2 núcleos virtuais Confira aqui sobre o processador ) .Assim eu corri cat /proc/cpuinfo o que me deu

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 774.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 1600.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 1
initial apicid  : 1
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 2
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 800.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 1
cpu cores   : 2
apicid      : 2
initial apicid  : 2
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 774.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 1
cpu cores   : 2
apicid      : 3
initial apicid  : 3
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

Agora estou totalmente confuso. Ele mostra 4 processadores, com 2 núcleos de CPU. Alguém pode explicar essa saída?

Depois que minha carga da CPU era 3,70, essa carga é máxima? Ainda naquela época, a CPU estava em <50%.

E o turbo boost? Todos os núcleos são turbinados ou apenas físicos?

Algum método no Ubuntu para obter a frequência atual da CPU para ver se o processador está no turbo boost ou não?

A carga foi de 3,70 cerca de 100%. Mas o uso da CPU não foi 100% por causa do tempo de resposta de E / S. Isso não significa que o dispositivo IO estará na velocidade máxima, mas o dispositivo io estará 100% ocupado, o que às vezes afeta aplicativos usando IO ex: a música pode quebrar.

Madhurendra Sachan
fonte
2
Hyper Threading é porque você vê 4 em vez de 2.
derobert
11
A documentação e o cpuinfo informam que você tem dois núcleos de processador. Os processadores 0 e 1 estão no núcleo 0, enquanto os processadores 2 e 3 estão no núcleo 1 (veja a linha core id). O physical idte dá o chip (eu acho). Aqui, é 0 para todos os processadores, então você tem apenas um chip.
Lgeorget
Então, qual é a carga do processador para 100% ... 2 ou 4?
Madhurendra Sachan
O que é processador aqui?
Madhurendra Sachan
Observe que a definição de encadeamento da Intel ("Um encadeamento, ou encadeamento de execução, é um termo de software para a sequência ordenada básica de instruções que podem ser passadas ou processadas por um único núcleo de CPU ") pode fazer pensar que com 2 núcleos e 4 threads, conforme declarado nas especificações, 2x4 = 8 threads estão em execução. Na verdade, você tem 4 threads no total e 2 núcleos se parecem com 4. A definição da Tecnologia Intel® Hyper-Threading é mais clara: "fornece dois threads de processamento por núcleo físico " e explica melhor que o seu sistema vê 4 processadores / irmãos fora de 2 núcleos de CPU montados em um chip
XavierStuvw

Respostas:

35

As palavras "CPU", "processador" e "núcleo" são usadas de maneiras um tanto confusas. Eles se referem à arquitetura do processador. Um núcleo é a menor unidade independente que implementa um processador de uso geral; um processador é um conjunto de núcleos (em alguns sistemas ARM, um processador é um conjunto de clusters que são conjuntos de núcleos). Um chip pode conter um ou mais processadores (os chips x86 contêm um único processador, nesse sentido do processador de texto ).

Hyperthreading significa que algumas partes de um núcleo são duplicadas. Às vezes, um núcleo com hyperthreading é apresentado como um conjunto de dois "núcleos virtuais" - o que significa que cada núcleo não é virtual, mas que o plural é virtual porque na verdade não são núcleos separados e, às vezes, eles precisam esperar enquanto o outro núcleo é fazendo uso de uma parte compartilhada.

No que diz respeito ao software, existe apenas um conceito que é útil em quase toda parte: a noção de encadeamentos paralelos de execução. Portanto, na maioria dos manuais de software, os termos CPU e processador são usados ​​para designar qualquer peça de hardware que executa o código do programa. Em termos de hardware, isso significa um núcleo ou um núcleo virtual com hyperthreading.

Assim top, você mostra 4 CPUs, porque você pode ter 4 threads em execução ao mesmo tempo. /proc/cpuinfopossui 4 entradas, uma para cada CPU (nesse sentido). Os processornúmeros (que são o número das entradas ) correspondem a esses 4 threads.cpuNUMBER/sys/devices/system/cpu

/proc/cpuinfo é um dos poucos lugares onde você obtém informações sobre qual hardware implementa esses encadeamentos de execução:

physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2

significa que esse cpu0é um dos quatro threads dentro do componente físico (processador) número 0 e está no núcleo 0 entre os 2 deste processador.

Gilles 'SO- parar de ser mau'
fonte
Boa explicação, você deixou 3 perguntas Once my cpu load was 3.70, Is this maximum load? Still at that time cpu was at <50%., What about turbo boost ? Are all cores are turbo boosted or only physical ?& #How to check frequency.
Madhurendra Sachan
@MADTerry Qual programa relatou que a “carga da CPU era 3,70”, em que termos exatamente? Você quer dizer a média de carga? O que você quer dizer com "CPU estava em <50%"? Em relação ao Turbo Boost, não estou familiarizado com isso, mas não vejo por que eles não seriam todos aprimorados. Todos os núcleos são físicos, a menos que você esteja executando em uma máquina virtual: como expliquei na minha resposta, em "núcleos virtuais", não são os núcleos que são virtuais, é a sua separação.
Gilles 'SO- stop be evil'
carga média. uptime.por cpu eu quis dizer cpu use.i entendi o porquê. Mas como verificar a frequência ou se a CPU é turbo impulsionada?
Madhurendra Sachan
Eu também argumentaria que, em termos de software de alto nível, você está bastante interessado em processos (ver top, uptime). Qual unidade de hardware lida com processos é, em última análise, uma questão de software de baixo nível (compilação, sistema operacional). O relatório da cpuinfo resume o fato de que cada processador físico (um dos vários processadores em uma matriz) pode expandir seus poderes de computação por proezas técnicas, como o multithreading. Ele considerará 'qualquer coisa' que possa cuidar de um processo de cada vez como um processador. Na visão contábil da cpuinfo, os recursos do dispositivo levam à contagem total de "processadores"
XavierStuvw
13

Apenas respondendo sua primeira pergunta. Na saída de cat /proc/cpuinfovocê pode ver as seguintes informações: -

physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2

Você pode ver a contagem de siblings is 4e cpu cores is 2. cpu coressendo 2 é o número total de núcleos no processador que pode ser verificado a partir das especificações fornecidas na URL da intel que você forneceu. Da mesma forma, siblingsé determinado pelo número de threads que é fornecido pelo HTT da Intel.

Da mesma forma, para o ID físico, o 0que indica que existe apenas um chip do processador e para os IDs principais, você pode ver 0 and 1que são 2 núcleos no processador.

Atualização: adicionando respostas às outras perguntas.

E o turbo boost? Todos os núcleos são turbinados ou apenas físicos?

Bem, eu vou dizer, todos os núcleos ativos são turbinados. Ei amigo, você deveria ter verificado os exemplos da nossa amada Wikipedia . Explicado com cálculos também.

Any method in ubuntu to get current cpu freq. if processor is on turbo boost or not.

Turbo boost ou não, você pode os detalhes de freq na saída de lscpu. E para uma saída refinada: -

lscpu | grep Hz
iniciante
fonte
Resposta curta e rápida, mas você pode explicar os 3 restantes?
Madhurendra Sachan
O @MADTerry agradece, mas os outros, não estou claro, farão algumas pesquisas e editarão minha resposta. Enquanto isso, vamos ver se alguém aparece.
Iniciante 24/07
11
+1 para lscpucomando.
Arda
8

Você pode tentar isso no terminal:

sudo lscpu

Isso lhe dará uma visão geral do seu traço físico da CPU. Quanto ao turbo boost ou não, esse é um controle puramente de hardware que o próprio sistema operacional; portanto, a menos que a Intel possua drivers específicos para Linux que possam ajustar a velocidade do processador, não há um caminho sólido para verificar o estado do turbo boost (a menos que haja um código de comando para Verifique outros fóruns se houver alguma pista sobre sua pergunta).

Quanto a mim, é isso que recebo quando digito o comando acima. Minha AMD disse que é um núcleo quádruplo, mas meu núcleo físico listado aqui é de apenas 2, com 2 threads por núcleo (soma até 4 núcleos). Estou usando o processador AMD A10 APU 5750m.

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             AuthenticAMD
CPU family:            21
Model:                 19
Stepping:              1
CPU MHz:               2500.000
BogoMIPS:              4990.51
Virtualization:        AMD-V
L1d cache:             16K
L1i cache:             64K
L2 cache:              2048K
NUMA node0 CPU(s):     0-3
user220402
fonte
0

Carga do sistema e% da CPU são duas maneiras diferentes de medir como a energia da CPU é usada.

  • carga do sistema: quantos processos por CPU estão no estado "pronto" - média em algum tempo. Até 1 * cpu (no seu caso, até 4), o sistema é considerado quase inativo (compare com um supermercado em que, em média, apenas um cliente está esperando em cada caixa). Você provavelmente não notará nenhum atraso de até 2 * cpu (no seu caso 8).
  • cpu%: quanto tempo o cpus faz o trabalho real executando um processo. É como o ponto de vista dos caixas - ou melhor, do supervisor deles - eles querem que eles estejam ocupados o tempo todo.

Ambas as medidas estão relacionadas, mas de nenhuma maneira idênticas.

Guntbert
fonte
eu não perguntei o diferente. Eu já li em artigos. De qualquer forma, sua resposta contradiz a resposta de Gilles.
Madhurendra Sachan
Onde você vê uma contradição?
guntbert