यदि दूसरे वर्चुअल कोर को योगदान करने की अनुमति दी जाती है जब पहली अन्यथा अन्यथा अटक जाएगी, तो यह बेहतर नहीं है , इसलिए आपको कम से कम अतिरिक्त काम मिलता है।
सवाल यह बन जाता है: जब दो अलग-अलग धागे होने से एक के खराब होने का कारण बनता है? निर्देशों के बीच शाखा की भविष्यवाणी और निर्भरता नहीं बदलेगी। मेमोरी एक्सेस पर प्रतीक्षा कर रहा है ... दोनों थ्रेड मेमोरी एक्सेस पर प्रतिस्पर्धा करते हैं, दोनों कैशे उपयोग और बैंडविड्थ में।
यदि आपके पास एचटी और अन्य के साथ चलने वाले कुछ सीपीयू हैं, तो इसका मतलब यह नहीं है कि आप विशिष्ट थ्रेड्स को एक प्रकार या दूसरे को निर्दिष्ट करेंगे? मुझे नहीं लगता: आपके कार्यक्रम यादृच्छिक आभासी कोर पर अपने धागे चलाएंगे। तो कॉन्फ़िगरेशन को विभाजित करने में कैसे मदद मिलती है? चूँकि प्रत्येक CPU का अपना कैश होता है, एकमात्र प्रभाव मेमोरी बैंडविड्थ और कैश कोहेरेंसी के बोझ के कारण होता है।
सामान्य तौर पर, आप एक बिंदु तक पहुँचने जहां होने कुछ अधिक तुम क्या कर किया जा सकता है दे कुछ सीपीयू निष्पादन इकाइयों निष्क्रिय जाना से ज्यादा महंगा है। यह सीधे थ्रेड्स की संख्या पर निर्भर नहीं करता है, लेकिन थ्रेड्स क्या कर रहे हैं , और विभिन्न घटकों के विस्तृत मेमोरी आर्किटेक्चर और प्रदर्शन की बारीकियों पर।
कोई आसान जवाब नहीं है। यहां तक कि एक विशिष्ट कार्यक्रम को ध्यान में रखते हुए, मशीन उन लोगों से भिन्न हो सकती है जो अपने स्वयं के अनुभवों से संबंधित हैं।
आपको इसे स्वयं आज़माना होगा और मापना होगा कि सबसे तेज़ क्या है, उस सटीक मशीन पर विशिष्ट कार्य के साथ। और फिर भी, यह समय के साथ सॉफ्टवेयर अपडेट और शिफ्टिंग उपयोग के साथ बदल सकता है।
एंगर के मैग्नम ओपस के वॉल्यूम 3 पर एक नज़र डालें । यदि आप कुछ विशिष्ट प्रोसेसर को ध्यान से देखते हैं, तो आप कोड को निष्पादित करने के लिए आवश्यक कई चरणों की गहरी पाइपलाइन के बीच संसाधनों को सीमित कर सकते हैं। आपको एक ऐसा मामला खोजने की जरूरत है, जहां अधिक काम करने के कारण विरोधाभासी धीमी गति से निष्पादित हो। सामान्य तौर पर इसका मतलब होता है किसी तरह का कैशिंग; और जहां संसाधन थ्रेड्स के बीच साझा किया गया है।
सीपीयू मीटर का क्या मतलब है: यह हर समय रिपोर्ट करता है कि बेकार धागा चलाने में खर्च नहीं होता है। कोर को सौंपे गए दोनों तार्किक धागे बेकार नहीं होंगे, हालांकि उनमें से किसी एक पर किया गया वास्तविक कार्य छोटा हो सकता है। परिणाम तैयार होने तक कुछ चक्रों के लिए अटक गई पाइपलाइन के साथ समय बिताया जाता है, स्मृति प्राप्त की जाती है, परमाणु संचालन में बाड़ लगाई जाती है, आदि इसी कारण से धागे को "तैयार नहीं" के रूप में आश्रय नहीं दिया जाता है, इसलिए यह निष्क्रिय नहीं होगा, और समय अभी भी उपयोग के रूप में दिखाता है। रैम पर वेटिंग बेकार नहीं दिखेगी। केवल I / O जैसी कोई चीज ही थ्रेड को ब्लॉक करेगी और उसकी ओर चार्जिंग टाइम रोक देगी। सामान्य तौर पर एक ऑपरेटिंग-सिस्टम म्यूटेक्स ऐसा करेगा, लेकिन मल्टीकोर सिस्टम के उदय के साथ यह सुनिश्चित नहीं रह जाता है कि "स्पिनलॉक" के रूप में धागा शेल्फ पर वापस नहीं जाएगा ।
तो, 100% का सीपीयू मीटर का मतलब यह नहीं है कि सभी चिकनी नौकायन है, अगर सीपीयू अक्सर मेमोरी के इंतजार में फंस जाता है। 90% दिखाने वाली कम संख्या में तार्किक कोर बहुत अधिक काम कर सकते हैं, क्योंकि यह संख्या की कमी को पूरा करता है और अब डिस्क पर प्रतीक्षा कर रहा है।
तो सीपीयू मीटर के बारे में चिंता मत करो। केवल की गई वास्तविक प्रगति को देखें ।