Hangi işlemcilerin fiziksel çekirdek olduğunu nasıl bilebilirim?


15

Burada bir Intel i7 2700k var ve hangi işlemcilerin fiziksel ve hangilerinin sanal olduğunu nasıl anlatabileceğimi bilmek istiyorum (yani: hiper iş parçacığı). Şu anda CPU sıcaklıklarımı, frekanslarımı ve yüklerimi görüntülemek için bir Conky betiği çalıştırıyorum, ancak doğru yaptığımdan emin değilim:

müthiş

Sıcaklık ve frekansları almak için kendi senaryomu yazdım i7z, ancak bunlar sadece fiziksel çekirdeklere karşılık geliyor. Şu anda her çekirdeği şu şekilde gösteriyorum:

${cpu cpu1} ${lua display_temp 0} ${lua display_load 0}
${cpu cpu2}
${cpu cpu3} ${lua display_temp 1} ${lua display_load 1}
${cpu cpu4}
# ...

Bunun doğru olduğundan emin değilim, çünkü bazen gördüğüm yükler ve sıcaklıklar. İçinde /proc/cpuinfoçekirdekler nasıl sıralanır? Önce hepsi fiziksel sonra hepsi sanal? Her fiziksel çekirdek sonra sanal çekirdek (ler) i? Nasıl sıralanıyorlar?

Yanıtlar:


16

Her işlemci girişini inceleyerek her işlemci çekirdeği hakkında bilgi sahibi olabilirsiniz:

processor       : 0
[...]
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 0

processor       : 1
[...]
physical id     : 0
siblings        : 8
core id         : 1
cpu cores       : 4
apicid          : 2 

processor       : 2
[...]
physical id     : 0
siblings        : 8
core id         : 2
cpu cores       : 4
apicid          : 4 

processor       : 3
[...]
physical id     : 0
siblings        : 8
core id         : 3
cpu cores       : 4
apicid          : 6

processor       : 4
[...]
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 1

[and so on]

physical idişlemcinin tanımlayıcısını gösterir. Çok işlemcili bir kurulumunuz yoksa (bir makinede iki ayrı, fiziksel işlemciniz varsa), her zaman 0 olacaktır.

siblings aynı fiziksel işlemciye bağlı işlemci sayısını gösterir.

core idgeçerli çekirdeğin tanımlayıcısını toplam olarak gösterir cpu cores. Bu bilgileri, hangi sanal işlemcinin tek bir çekirdeğe girdiğini ilişkilendirmek için kullanabilirsiniz.

apicid(ve original apicid) bios tarafından verilen (sanal) işlemcinin sayısını gösterir.

8 kardeş ve 4 çekirdek olduğunu unutmayın, bu nedenle çekirdek başına 2 sanal işlemci vardır. Hiper iş parçacığında "sanal" veya "gerçek" arasında bir ayrım yoktur. Ancak bu bilgileri kullanarak aynı işlemciden hangi işlemcileri ilişkilendirebilirsiniz.


5

/sysDosya sistemi bu bilgilerin bir genel bakış tutar. Hyperthreading özellikli bir SMP quadcore kutusundan bir örnek:

# grep . /sys/devices/system/cpu/cpu{,1}?/topology/thread_siblings | tr : \\t | sed 's,^,    ,'
/sys/devices/system/cpu/cpu0/topology/thread_siblings   00000000,00000101
/sys/devices/system/cpu/cpu1/topology/thread_siblings   00000000,00000202
/sys/devices/system/cpu/cpu2/topology/thread_siblings   00000000,00000404
/sys/devices/system/cpu/cpu3/topology/thread_siblings   00000000,00000808
/sys/devices/system/cpu/cpu4/topology/thread_siblings   00000000,00001010
/sys/devices/system/cpu/cpu5/topology/thread_siblings   00000000,00002020
/sys/devices/system/cpu/cpu6/topology/thread_siblings   00000000,00004040
/sys/devices/system/cpu/cpu7/topology/thread_siblings   00000000,00008080
/sys/devices/system/cpu/cpu8/topology/thread_siblings   00000000,00000101
/sys/devices/system/cpu/cpu9/topology/thread_siblings   00000000,00000202
/sys/devices/system/cpu/cpu10/topology/thread_siblings  00000000,00000404
/sys/devices/system/cpu/cpu11/topology/thread_siblings  00000000,00000808
/sys/devices/system/cpu/cpu12/topology/thread_siblings  00000000,00001010
/sys/devices/system/cpu/cpu13/topology/thread_siblings  00000000,00002020
/sys/devices/system/cpu/cpu14/topology/thread_siblings  00000000,00004040
/sys/devices/system/cpu/cpu15/topology/thread_siblings  00000000,00008080

Özdeş içerik aynı çekirdeğin dişlerini ifade eder. yani

  • cpu0 / cpu8
  • cpu1 / cpu9
  • vb.

core_siblingsSözde dosyada benzer bilgiler ve daha fazla topoloji bilgisi vardır.


3

Eğer ' ht' bayrağını /proc/cpuinfogörürseniz hiper iş parçacığı etkinleştirilmiş ve her gerçek çekirdek birden çok iş parçacığına bölünmüşse, gerçek iş parçacığı ve sanal iş parçacığı kavramı yoktur: her ikisi de etkin bir şekilde sanaldır.

Araştırmak isteyebileceğiniz şey, çekirdekleri ve soketleri karşılaştırmaktır, physical idçekirdekleri bir araya getirmek için ' ' topoloji tanımlayıcısını kullanın.


htEtkin veya değil değilse - bayrak sadece çoklu iş parçacığı (HTT) CPU tarafından desteklendiğini göstermektedir. O zaman bile, her zaman güvenilemez, örneğin, i5 i5-6500'ün HTT'yi desteklediğini yanlış bir şekilde gösterir: ark.intel.com/content/www/us/en/ark/products/88184/…
Anthony Geoghegan

1

Önceki cevap çok ilginç.

Biraz googling yaptıktan sonra bazı ilgili konular buldum:

Son bağlantıda, ana makinenizde çok sayıda fiziksel kimlik varsa python betiği çalışmaz. Sonunda farklı bir koşulla değiştirmeye çalıştım:

Değiştirme:

if p > 0:

için

if p % 2 == 1:

Ancak, önceki iletiye göre beklendiği gibi çalışmaz. Bu arada, daha kapsamlı bir şey yapabilirsiniz:

grep . /sys/devices/system/cpu/cpu{,1}?/topology/thread_siblings | tr : \\\t | sed -r 's,^,\s\s\s\s,'

ile:

for file in /sys/devices/system/cpu/cpu[0-9]*/topology/thread_siblings_list; do echo -n "$file "; cat $file; done |sort -k2 -n

[...]

Hiper iş parçacığı olan birçok çekirdek ana bilgisayarda ilginç olan şey, mantıksal çekirdeklerin donanım üzerindeki dağılımıdır.

Örneğin, bilgisayarımdan birinde (48 mantıksal çekirdek, 2 fiziksel işlemci, 24 (12 * 2) 'gerçek çekirdek' (yani, 24 sanal çekirdek)):

for file in /sys/devices/system/cpu/cpu[0-9]*/topology/thread_siblings_list; do echo -n "$file "; cat $file; done |sort -k2 -n

 /sys/devices/system/cpu/cpu0/topology/thread_siblings_list 0,24
 /sys/devices/system/cpu/cpu24/topology/thread_siblings_list 0,24
 /sys/devices/system/cpu/cpu1/topology/thread_siblings_list 1,25
 /sys/devices/system/cpu/cpu25/topology/thread_siblings_list 1,25
 /sys/devices/system/cpu/cpu26/topology/thread_siblings_list 2,26
 /sys/devices/system/cpu/cpu2/topology/thread_siblings_list 2,26
 /sys/devices/system/cpu/cpu27/topology/thread_siblings_list 3,27
 /sys/devices/system/cpu/cpu3/topology/thread_siblings_list 3,27
 /sys/devices/system/cpu/cpu28/topology/thread_siblings_list 4,28
 /sys/devices/system/cpu/cpu4/topology/thread_siblings_list 4,28
 /sys/devices/system/cpu/cpu29/topology/thread_siblings_list 5,29
 /sys/devices/system/cpu/cpu5/topology/thread_siblings_list 5,29
 /sys/devices/system/cpu/cpu30/topology/thread_siblings_list 6,30
 /sys/devices/system/cpu/cpu6/topology/thread_siblings_list 6,30
 /sys/devices/system/cpu/cpu31/topology/thread_siblings_list 7,31
 /sys/devices/system/cpu/cpu7/topology/thread_siblings_list 7,31
 /sys/devices/system/cpu/cpu32/topology/thread_siblings_list 8,32
 /sys/devices/system/cpu/cpu8/topology/thread_siblings_list 8,32
 /sys/devices/system/cpu/cpu33/topology/thread_siblings_list 9,33
 /sys/devices/system/cpu/cpu9/topology/thread_siblings_list 9,33
 /sys/devices/system/cpu/cpu10/topology/thread_siblings_list 10,34
 /sys/devices/system/cpu/cpu34/topology/thread_siblings_list 10,34
 /sys/devices/system/cpu/cpu11/topology/thread_siblings_list 11,35
 /sys/devices/system/cpu/cpu35/topology/thread_siblings_list 11,35
 /sys/devices/system/cpu/cpu12/topology/thread_siblings_list 12,36
 /sys/devices/system/cpu/cpu36/topology/thread_siblings_list 12,36
 /sys/devices/system/cpu/cpu13/topology/thread_siblings_list 13,37
 /sys/devices/system/cpu/cpu37/topology/thread_siblings_list 13,37
 /sys/devices/system/cpu/cpu14/topology/thread_siblings_list 14,38
 /sys/devices/system/cpu/cpu38/topology/thread_siblings_list 14,38
 /sys/devices/system/cpu/cpu15/topology/thread_siblings_list 15,39
 /sys/devices/system/cpu/cpu39/topology/thread_siblings_list 15,39
 /sys/devices/system/cpu/cpu16/topology/thread_siblings_list 16,40
 /sys/devices/system/cpu/cpu40/topology/thread_siblings_list 16,40
 /sys/devices/system/cpu/cpu17/topology/thread_siblings_list 17,41
 /sys/devices/system/cpu/cpu41/topology/thread_siblings_list 17,41
 /sys/devices/system/cpu/cpu18/topology/thread_siblings_list 18,42
 /sys/devices/system/cpu/cpu42/topology/thread_siblings_list 18,42
 /sys/devices/system/cpu/cpu19/topology/thread_siblings_list 19,43
 /sys/devices/system/cpu/cpu43/topology/thread_siblings_list 19,43
 /sys/devices/system/cpu/cpu20/topology/thread_siblings_list 20,44
 /sys/devices/system/cpu/cpu44/topology/thread_siblings_list 20,44
 /sys/devices/system/cpu/cpu21/topology/thread_siblings_list 21,45
 /sys/devices/system/cpu/cpu45/topology/thread_siblings_list 21,45
 /sys/devices/system/cpu/cpu22/topology/thread_siblings_list 22,46
 /sys/devices/system/cpu/cpu46/topology/thread_siblings_list 22,46
 /sys/devices/system/cpu/cpu23/topology/thread_siblings_list 23,47
 /sys/devices/system/cpu/cpu47/topology/thread_siblings_list 23,47

Yani cpu0 ve cpu24 aynı fiziksel donanım "adresini" paylaşır. CPU1 ve CPU25 için aynı şey ...

Bu nedenle, temel olarak, linux işletim sistemimden hyperthreading özelliğini devre dışı bırakmak istersem, '0' değerini cpu {24..47} / online ile

for fake_cpu in {24..47}; do echo 0 > /sys/devices/system/cpu/cpu$fake_cpu/online;done

Sistemimin çekirdekleri numaralandırmasının ne kadar ilginç olduğunu göreceksiniz.


Terminaldeki şeyler için lütfen tırnak yerine kod blokları kullanın; okumak çok daha basit.
HalosGhost

1

Ayrıca lscpu kullanabilirsiniz:

# lscpu --all --extended
CPU NODE SOCKET CORE L1d:L1i:L2:L3:L4 ONLINE MAXMHZ    MINMHZ
0   0    0      0    0:0:0:0:0        yes    3200.0000 800.0000
1   0    0      1    1:1:1:0:0        yes    3200.0000 800.0000
2   0    0      2    2:2:2:0:0        yes    3200.0000 800.0000
3   0    0      3    3:3:3:0:0        yes    3200.0000 800.0000
4   0    0      0    0:0:0:0:0        yes    3200.0000 800.0000
5   0    0      1    1:1:1:0:0        yes    3200.0000 800.0000
6   0    0      2    2:2:2:0:0        yes    3200.0000 800.0000
7   0    0      3    3:3:3:0:0        yes    3200.0000 800.0000

burada mantıksal çekirdekler 0 ve 4 çekirdek 0'a gider

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.