Eu tenho um Intel i7 2700k aqui e gostaria de saber como posso saber quais processadores são físicos e quais são virtuais (ou seja: hyperthreading). Atualmente, estou executando um script Conky para exibir meus temps, frequências e cargas de CPU, mas não tenho certeza se fiz corretamente:
Eu escrevi meu próprio script para obter temperaturas e frequências i7z
, mas elas correspondem apenas a núcleos físicos. Atualmente, estou exibindo cada núcleo assim:
${cpu cpu1} ${lua display_temp 0} ${lua display_load 0}
${cpu cpu2}
${cpu cpu3} ${lua display_temp 1} ${lua display_load 1}
${cpu cpu4}
# ...
Não tenho certeza se isso está correto, devido às cargas e temperaturas que vejo às vezes. Em /proc/cpuinfo
, como os núcleos são classificados? Primeiro tudo físico, depois tudo virtual? Cada núcleo físico, em seguida, seus núcleos virtuais? Como eles são classificados?
ht
sinalizador indica apenas que o multi-threading (HTT) é suportado pela CPU - não se estiver ativado ou não. Mesmo assim, nem sempre se pode confiar, por exemplo, indica falsamente que um i5 i5-6500 suporta HTT: ark.intel.com/content/www/us/en/ark/products/88184/…Resposta anterior é muito interessante.
Depois de pesquisar no Google, encontrei alguns assuntos relacionados:
/server/235825/disable-hyperthreading-from-within-linux-no-access-to-bios
/programming/7274585/linux-find-out-hyper-threaded-core-id
Verificando se o HyperThreading está ativado ou não?
No último link, o script python não funciona quando o host possui muitos IDs físicos. Tentei modificá-lo com uma condição diferente no final:
Alterando:
para
Mas não funciona como esperado, com base na mensagem anterior. A propósito, você pode fazer algo mais abrangente do que:
com:
[...]
O que é interessante em um host de muitos núcleos com o hyperthreading é a distribuição de núcleos lógicos no hardware.
Por exemplo, em um dos meus computadores (48 núcleos lógicos, 2 processadores físicos, 24 (12 * 2) 'núcleos reais' (também 24 núcleos virtuais)):
Isso significa que cpu0 e cpu24 compartilham o mesmo "endereço" de hardware físico. A mesma coisa para cpu1 e cpu25 ...
Então, basicamente, se eu quiser desativar o hyperthreading no meu sistema operacional linux, devo colocar '0' na CPU {24..47} / online com
Você notará o quão interessante meu sistema está numerando os núcleos.
fonte
você também pode usar o lscpu:
aqui os núcleos lógicos 0 e 4 vão para o núcleo 0
fonte