"com base nas informações da Intel tem 2 núcleos capazes de 4 threads cada"
Não é bem assim, ele diz que 2 núcleos e 4 segmentos não são 4 threads por núcleo, isso significa que ele tem 2 núcleos cada com 2 threads para um total de 4 threads.
Eu tenho um i3-2100 dual core, é comparável ao seu, o primeiro comando
sudo dmidecode |egrep "Socket Designation: Proc|((Thread|Core) Count)"
me dá o mesmo resultado, 2 núcleos de CPU, cada um com 2 threads
lscpu
diz que tenho
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Eu acho que você acabou de interpretar mal, porque diz 4 cpus
, mas isso significa que o total de tópicos, é uma má escolha de termos, fiquei confuso também quando olhei pela primeira vez :).
Você tem 1 soquete, 2 núcleos e 2 threads por núcleo e relata isso como um total de 4 cpus, o que está correto.
Quanto aos 16 núcleos lógicos em cat /proc/cpuinfo
o meu é o mesmo, 4 cpu cada com 4 irmãos mas eu não tinha ideia do que isso significa, então eu procurei e encontrei isto na falha do servidor
O número de irmãos em um processador é o número total de execuções unidades dentro desse processador. Isso incluirá os dois núcleos adicionais e hyperthreading.
Por exemplo,
A Core 2 Duo will list siblings : 2. Dual core, no hyperthreading. A Xeon E5420 will list siblings : 4. Dual core, with hyperthreading. A Pentium 4 with hyperthreading will list siblings : 2. Single core, with hyperthreading.
Assim, parece que as informações estão corretas, você tem 4 threads no total, então cada uma mais sua siblings
é 4 total e parece que isso é apenas relatado individualmente para cada thread.
Quanto a sudo lshw -C cpu
, minha saída foi muito diferente, apenas
*-cpu
product: Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz
vendor: Intel Corp.
physical id: 1
bus info: cpu@0
size: 1614MHz
capacity: 3100MHz
width: 64 bits
capabilities: fpu fpu_exception wp 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 rdtscp x86-64 constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer xsave avx lahf_lm arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid xsaveopt cpufreq
Tem certeza de que esse é o comando que você executou?
"Por que esses resultados parecem variar muito e quais devem ser confiável? "
Eles não variam, eles só têm maneiras diferentes de exibir as informações, eu usaria apenas lscpu
como o mais "confiável" porque é o mais fácil de ler e deveria ter qualquer informação que você precisa, mas todas são correto.
"Pergunta bônus: se eu tiver apenas 1 de 2 núcleos habilitados, como Eu habilito o segundo? "
Ambos os seus núcleos estão ativos e o hyper-threading está ativado, você pode desativar o hyper-threading em bios
na seção de hardware, isso deve ser metade da contagem de cpu para que você possa verificar a diferença facilmente em um terminal com lscpu
.
Para desativar e ativar um único núcleo, use esses comandos
Desativar:
echo 0 | sudo tee /sys/devices/system/cpu/cpu0/online
Ativar:
echo 1 | sudo tee /sys/devices/system/cpu/cpu0/online
A parte cpu0
é a primeira linha processor
em cat /proc/cpuinfo
, basta trocar 0 pelo núcleo / thread que você deseja desativar.