कोर बनाम थ्रेड्स: मुझे इस मशीन पर कितने धागे चलाने चाहिए?


41

इस मशीन पर मुझे कितने धागे चलाने चाहिए?

मेरा lscpuकहना है कि 96 कोर हैं। क्या वे भौतिक कोर हैं? अधिकतम और इष्टतम धागा क्या है जो मैं इस मशीन पर चला सकता हूं?

https://stackoverflow.com/a/10670440/610569 बताते हैं कि मैं प्रति कोर 20 से अधिक धागे चला सकता हूं। क्या ये ठीक है? क्या वह इष्टतम है?

alvas@server:~$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                96
On-line CPU(s) list:   0-95
Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             4
NUMA node(s):          4
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 62
Model name:            Intel(R) Xeon(R) CPU E5-4657L v2 @ 2.40GHz
Stepping:              4
CPU MHz:               2700.000
CPU max MHz:           2900.0000
CPU min MHz:           1200.0000
BogoMIPS:              4801.91
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              30720K
NUMA node0 CPU(s):     0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92
NUMA node1 CPU(s):     1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93
NUMA node2 CPU(s):     2,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94
NUMA node3 CPU(s):     3,7,11,15,19,23,27,31,35,39,43,47,51,55,59,63,67,71,75,79,83,87,91,95

कोर / थ्रेड्स में मेरी अच्छाई को क्षमा करें।

जवाबों:


52

यह आप जानना चाहते हैं

Thread(s) per core:    2
Core(s) per socket:    12
Socket(s):             4

आपके पास 4 सीपीयू सॉकेट हैं, प्रत्येक सीपीयू में 12 कोर और प्रत्येक कोर में दो धागे हो सकते हैं।

आपका अधिकतम थ्रेड काउंट है, 4 CPU x 12 कोर x 2 थ्रेड्स प्रति कोर, इसलिए 12 x 4 x 2 96 है। इसलिए अधिकतम थ्रेड काउंट 96 और अधिकतम कोर काउंट 48 है।

क्या बेहतर है ?

यह इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं, अधिक थ्रेड्स का अर्थ है कम आवृत्ति (अर्थात एक 3ghz दो में विभाजित हो जाता है), लेकिन बेहतर मल्टी-टास्किंग (अधिक थ्रेड्स) और पूर्ण कोर (कोई हाइपर-थ्रेडिंग) का उपयोग करना उच्च CPU उपयोग कार्यों के लिए बेहतर है यानी खेल)।

आशा है कि यह आपकी मदद करता है।


3
"अधिक थ्रेड्स का मतलब कम आवृत्ति है", यह कथन बहुत गलत है। हाइपरथ्रेडिंग के साथ भी, एक अकेली प्रक्रिया प्रोसेसर का पूरा उपयोग कर सकती है। हाइपरथ्रेडिंग अनुदेश पाइपलाइनों और रजिस्टरों का उपयोग कर सकता है जो अन्यथा समानांतर में विभिन्न प्रक्रियाओं / थ्रेड्स से कुछ निष्पादन करने के लिए निष्क्रिय होंगे, कुछ मामलों में प्रोसेसर के अधिकतम थ्रूपुट को बढ़ाते हुए। प्रदर्शन लाभ बहुत अनुप्रयोग / विन्यास हैं। पी 4 के बाद एचटी सक्षम (पी 4 जीन कोर कुछ मामलों में कुछ मुद्दे थे) के साथ कोई दस्तावेज प्रदर्शन का दंड नहीं है
एनजीआरहोड्स

2
मुझे यह कथन बहुत गलत नहीं लगता। यदि आप एक कोर पर दो प्रक्रियाएँ चलाते हैं, तो प्रत्येक प्रक्रिया के लिए कम आवृत्ति उपलब्ध होती है, जब प्रत्येक प्रक्रिया को अपने स्वयं के कोर पर चलाने की तुलना में। यह एक बहुत ही बुनियादी और सरल कथन है, लेकिन ओपी ने हाइपर-थ्रेडिंग या यह कैसे काम करता है, इसके बारे में कभी भी विस्तार से अनुरोध नहीं किया। यद्यपि आप सही हैं, हाइपर-थ्रेडिंग एक लंबा सफर तय कर चुकी है और 48 कोर के साथ मुझे यकीन है कि वे इसे बंद नहीं करना चाहेंगे।
मार्क किर्बी

2
@NGRhodes: Intel HT दो थ्रेड्स के बीच आउट-ऑफ-ऑर्डर निष्पादन को ओवरलैप करने के लिए पर्याप्त रूप से ठीक है। यह मूल रूप से HT का संपूर्ण बिंदु है, आउट-ऑफ-ऑर्डर कोर के लिए अधिक निर्देश-स्तरीय समानता को उजागर करने के लिए। (यानी उन निष्पादन इकाइयों को खिलाया जाता है, जबकि एक धागा एक शाखा की गड़बड़ी से उबर रहा है या कैश मिस का इंतजार कर रहा है।) फ्रंट-एंड इश्यू बैंडविड्थ 50/50 (जब एक धागा बंद हो जाता है को छोड़कर) विभाजित है, तो किस तरह के आधार पर आपके कोड में अड़चन होती है, HT आपको लगभग डबल थ्रूपुट, या लगभग कोई अतिरिक्त थ्रूपुट दे सकता है। (X264 वीडियो एन्कोडिंग के लिए 15% की तरह।)
पीटर कॉर्डेस

1
देखें agner.org/optimize microarchitectural जानकारी के लिए।
पीटर कॉर्डेस

1

प्रत्येक सीपीयू कोर थ्रेड (हार्डवेयर-आधारित थ्रेड) - आपके 96 कोर में से एक कुशलतापूर्वक मेरी थ्योरी राय में ज्यादातर मामलों में 16 थ्रेड्स (सॉफ्टवेयर-आधारित थ्रेड फे सी ++ थ्रेड) को संभाल सकता है।


1
आपको "कुशलता से 16 धागे कैसे मिल सकते हैं" आउटपुट "थ्रेड (ओं) को प्रति कोर: 2" कहता है
प्रतिबद्ध

0

आपको पता चल जाएगा कि आपके मशीन पर कितने थ्रेड्स चलाकर htop या ps कमांड चला सकते हैं जो आपके मशीन पर प्रक्रिया की संख्या लौटाते हैं।

आप 'ps' कमांड के बारे में मैन पेज का उपयोग कर सकते हैं।

man ps

यदि आप सभी उपयोगकर्ता प्रक्रिया की संख्या की गणना करना चाहते हैं, तो आप इनमें से किसी एक कमांड का उपयोग कर सकते हैं:

  1. ps -aux| wc -l
  2. ps -eLf | wc -l

एक उपयोगकर्ता प्रक्रिया की संख्या की गणना:

  1. ps --User root | wc -l

इसके अलावा, आप "htop" का उपयोग कर सकते हैं [संदर्भ] :

उबंटू या डेबियन पर स्थापित:

sudo apt-get install htop

Redhat या CentOS पर स्थापित करना:

yum install htop
dnf install htop      [On Fedora 22+ releases]

यदि आप स्रोत कोड से htop संकलित करना चाहते हैं, तो आप इसे यहां पाएंगे ।

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