मुझे कैसे पता चलेगा कि कौन से प्रोसेसर भौतिक कोर हैं?


15

मुझे यहां एक इंटेल i7 2700k मिला है, और मैं जानना चाहता हूं कि मैं कैसे बता सकता हूं कि कौन से प्रोसेसर भौतिक हैं और जो आभासी हैं (यानी: हाइपरथ्रेडिंग)। मैं वर्तमान में अपने CPU टेम्पों, फ़्रीक्वेंसी और लोड को प्रदर्शित करने के लिए एक Conky स्क्रिप्ट चला रहा हूं, लेकिन मुझे यकीन नहीं है कि मैंने इसे सही किया है:

बहुत बढ़िया

मैंने तापमान और आवृत्तियों से प्राप्त करने के लिए अपनी स्क्रिप्ट लिखी है i7z, लेकिन ये केवल भौतिक कोर के अनुरूप हैं। मैं वर्तमान में प्रत्येक कोर को इस तरह प्रदर्शित कर रहा हूं:

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

मुझे यकीन नहीं है कि यह सही है, क्योंकि लोड और तापमान के कारण मैं कभी-कभी देखता हूं। में /proc/cpuinfo, कोर कैसे छांटे जाते हैं? पहले सभी भौतिक फिर सभी आभासी? प्रत्येक भौतिक कोर फिर उसका वर्चुअल कोर? उनकी छंटनी कैसे की जाती है?

जवाबों:


16

आप प्रत्येक cpuinfo प्रविष्टि की जांच करके प्रत्येक प्रोसेसर कोर के बारे में जान सकते हैं:

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 idप्रोसेसर के पहचानकर्ता को दिखाता है। जब तक आपके पास एक मल्टीप्रोसेसर सेटअप (एक मशीन में दो अलग, भौतिक प्रोसेसर होने), यह हमेशा 0 होगा।

siblings उसी भौतिक प्रोसेसर से जुड़े प्रोसेसर की संख्या दिखाएं।

core idकुल के लिए वर्तमान कोर की पहचानकर्ता को दिखाएं cpu cores। आप इस जानकारी का उपयोग यह बताने के लिए कर सकते हैं कि कौन सा वर्चुअल प्रोसेसर सिंगल कोर में जाता है।

apicid(और original apicid) बायोस द्वारा दिए गए (आभासी) प्रोसेसर की संख्या दिखाते हैं।

ध्यान दें कि 8 भाई-बहन और 4 कोर हैं, इसलिए प्रति कोर 2 वर्चुअल प्रोसेसर है। हाइपरथ्रेडिंग में "वर्चुअल" या "वास्तविक" के बीच कोई अंतर नहीं है। लेकिन इस जानकारी का उपयोग करके आप कनेक्ट कर सकते हैं कि कौन से प्रोसेसर एक ही कोर से हैं।


5

/sysफाइल सिस्टम इस जानकारी का एक अच्छा सिंहावलोकन आयोजित करता है। हाइपरथ्रेडिंग के साथ एक एसएमपी क्वाडकोर बॉक्स का एक उदाहरण इस प्रकार है:

# 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

समान सामग्री धागे के मूल को दर्शाता है। अर्थात

  • cpu0 / cpu8
  • cpu1 / cpu9
  • आदि।

core_siblingsछद्म फाइल में इसी तरह की जानकारी है , साथ ही अधिक टोपोलॉजी की जानकारी भी है।


3

यदि आप ' ht' ध्वज देखते हैं /proc/cpuinfoतो आपके पास हाइपर-थ्रेडिंग सक्षम है और प्रत्येक वास्तविक कोर कई थ्रेड्स में विभाजित है, वास्तविक थ्रेड और वर्चुअल थ्रेड की कोई अवधारणा नहीं है: दोनों प्रभावी रूप से आभासी हैं।

आप जो जांच करना चाहते हैं, वह कोर और सॉकेट की तुलना कर रहा है, physical idसमूह कोर के लिए ' ' टोपोलॉजी आइडेंटिफ़ायर का उपयोग करें ।


htझंडा केवल इंगित करता है कि बहु सूत्रण (HTT) सीपीयू द्वारा समर्थित है - नहीं करता है, तो यह सक्षम है या नहीं। फिर भी, यह हमेशा पर भरोसा नहीं किया जा सकता है, उदाहरण के लिए, यह झूठा संकेत देता है कि एक i5 i5-6500 HTT का समर्थन करता है: ark.intel.com/content/www/us/en/ark/products/88184/…
एंथनी

1

पिछला उत्तर बहुत दिलचस्प है।

कुछ गुगली करने के बाद, मुझे कुछ संबंधित विषय मिले:

अंतिम लिंक पर, पायथन स्क्रिप्ट तब काम नहीं करती है जब आपके मेजबान के पास कई भौतिक आईडी हैं। मैंने अंत में इसे एक अलग स्थिति के साथ संशोधित करने का प्रयास किया:

बदल रहा है:

if p > 0:

सेवा

if p % 2 == 1:

लेकिन यह पिछले संदेश के आधार पर, अपेक्षा के अनुरूप काम नहीं करता है। वैसे, आप कुछ अधिक व्यापक कर सकते हैं:

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

साथ में:

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

[...]

हाइपरथ्रेडिंग सक्षम के साथ कई कोर होस्ट पर क्या दिलचस्प है हार्डवेयर पर तार्किक कोर का वितरण है।

उदाहरण के लिए, मेरे एक कंप्यूटर पर (48 तार्किक कोर, 2 भौतिक प्रोसेसर, 24 (12 * 2) 'असली कोर' (इसलिए, 24 वर्चुअल कोर)):

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

इसका मतलब है कि cpu0 और cpu24 एक ही भौतिक हार्डवेयर "पता" साझा करते हैं। Cpu1 और cpu25 के लिए एक ही बात ...

इसलिए, मूल रूप से, अगर मैं अपने लिनक्स ओएस से हाइपरथ्रेडिंग को अक्षम करना चाहूंगा, तो मुझे सीपीयू में '0' डालना चाहिए। 24..47} / ऑनलाइन

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

आप देखेंगे कि मेरा सिस्टम कोर को कितना दिलचस्प बना रहा है।


कृपया टर्मिनल पर चीजों के लिए उद्धरण के बजाय कोड ब्लॉक का उपयोग करें; यह पढ़ना बहुत सरल है।
हेलोसोच जूल

1

तुम भी lscpu का उपयोग कर सकते हैं:

# 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

यहाँ तार्किक कोर 0 और 4 कोर 0 पर जाते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.