Número de processadores em / proc / cpuinfo

22

Enquanto eu estava aprendendo sobre carga de CPU, fiquei sabendo 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, então 2 núcleos virtuais Verifique aqui sobre o processador ) .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. Mostra 4 processadores, com 2 núcleos de cpu. Alguém pode explicar essa saída?

Uma vez que meu carregamento da CPU foi de 3,70, esta é a carga máxima? Ainda naquela época, a cpu estava em < 50%.

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

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

A carga foi de 3,70 a 100%. Mas o uso da CPU não foi de 100% por causa do tempo de resposta do IO. 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 os aplicativos usando o IO ex: a música pode quebrar.

    
por Madhurendra Sachan 23.07.2014 / 09:27

4 respostas

29

As palavras "CPU", "processador" e "core" 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, neste sentido da palavra processador ).

Hyperthreading significa que algumas partes de um núcleo são duplicadas. Um núcleo com hyperthreading é algumas vezes apresentado como um conjunto de dois “núcleos virtuais” - significando não que cada núcleo é virtual, mas que o plural é virtual porque eles não são realmente núcleos separados e eles terão que esperar enquanto o outro núcleo é fazendo uso de uma parte compartilhada.

No que diz respeito ao software, existe apenas um conceito útil em quase todos os lugares: a noção de threads paralelos de execução. Portanto, na maioria dos manuais de software, os termos CPU e processador são usados para significar 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 mostra 4 CPUs, porque você pode ter 4 threads em execução ao mesmo tempo. /proc/cpuinfo tem 4 entradas, uma para cada CPU (nesse sentido). Os números processor (que são o número das entradas cpuNUMBER em /sys/devices/system/cpu ) correspondem a esses 4 segmentos.

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

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

significa que cpu0 é um dos 4 segmentos dentro do componente físico (processador) número 0, e isso é no núcleo 0 entre 2 neste processador.

    
por 24.07.2014 / 02:25
11

Apenas respondendo sua primeira pergunta. Na saída de cat /proc/cpuinfo você 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 4 e cpu cores is 2 . cpu cores sendo 2 é o número total de núcleos no processador que podem ser verificados a partir da especificação dada na URL da informação que você forneceu. Da mesma forma siblings é o determinado pelo número de threads que é fornecido pelo HTT da Intel.

Da mesma forma, para o ID físico, seu 0 indica que há apenas um chip do processador e, para os IDs principais, é possível ver 0 and 1 , ou seja, 2 núcleos no processador.

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

What about turbo boost ? Are all cores are turbo boosted or only physical ?

Bem, eu vou dizer, todos os núcleos ativos são turbo-impulsionados. Ei amigo, você deveria ter verificado os exemplos pela nossa Wikipedia amada. 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 da freq na saída de lscpu . E para uma saída refinada: -

lscpu | grep Hz
    
por 23.07.2014 / 09:50
8

Você pode tentar isso no terminal:

sudo lscpu

Isso lhe dará uma visão geral do seu atributo físico de CPU. Quanto ao turbo boost ou não, este é um controle puramente de hardware do que o próprio SO, portanto, a menos que a Intel possua drivers específicos para Linux que possam ajustar a velocidade do seu processador, não há nenhuma pista sólida 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 é quad core, mas meu núcleo físico listado aqui é 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
    
por 25.07.2014 / 08:12
0

O carregamento do sistema e o cpu% são duas maneiras diferentes de medir como o seu poder de CPU é usado.

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

Ambas as medidas estão relacionadas mas não são idênticas.

    
por 23.07.2014 / 23:13