कार्यक्षेत्र मेमोरी के आवंटन के दौरान स्पिनलॉक विवाद
यह वह जगह है जहाँ यह मज़ा करने के लिए शुरू होता है। मैंने पहले ही वर्णन किया है कि कार्यक्षेत्र मेमोरी में सॉर्ट और हैश काम सीपीयू की खपत करता है, लेकिन बम्पर लुकअप संख्या में परिलक्षित नहीं होता है।
स्पिनलॉक विवाद इस विशेष मज़ा की एक और परत है। जब मेमोरी को बफर पूल से चुराया जाता है और एक क्वेरी मेमोरी अनुदान के खिलाफ उपयोग के लिए आवंटित किया जाता है, तो मेमोरी एक्सेस को स्पिनलॉक के साथ क्रमबद्ध किया जाता है। डिफ़ॉल्ट रूप से, यह NUMA नोड स्तर पर विभाजित संसाधन के साथ होता है। कार्यक्षेत्र स्मृति का उपयोग करते हुए समान NUMA नोड पर प्रत्येक क्वेरी संभावित रूप से अनुदान के विरुद्ध मेमोरी चोरी करते समय स्पिनलॉक विवाद का अनुभव कर सकती है। यह नोट करना बहुत महत्वपूर्ण है: यह "प्रति प्रश्न एक बार" विवाद जोखिम नहीं है, क्योंकि यह होगा कि विवाद का बिंदु वास्तविक अनुदान के समय था। इसके बजाय, जब इसकी मेमोरी अनुदान के खिलाफ चोरी हो जाती है - तो एक बहुत बड़ी मेमोरी अनुदान के साथ एक क्वेरी में स्पिनलॉक विवाद के लिए कई अवसर होंगे यदि यह अपने अनुदान का सबसे अधिक उपयोग करता है।
ट्रेस ध्वज 8048 कोर स्तर पर संसाधन को और अधिक विभाजित करके इस विवाद को दूर करने का एक बड़ा काम करता है।
माइक्रोसॉफ्ट का कहना है कि "ट्रेस फ्लैग 8048 पर विचार करें यदि प्रति सॉकेट 8 या अधिक कोर"। लेकिन ... यह वास्तव में नहीं है कि कितने सॉकेट प्रति सॉकेट (जब तक कि कई हैं), बल्कि एक ही NUMA नोड पर किए जा रहे काम में विवाद के लिए कितने अवसर हैं।
सरेस से जोड़ा हुआ AMD प्रोसेसर (12 कोर प्रति सॉकेट, 2 NUMA नोड प्रति सॉकेट) पर 6 कोर प्रति NUMA नोड था। मैंने उन सीपीयू में से 4 (इसलिए आठ एनयूएमए नोड्स, 6 कोर प्रत्येक) के साथ एक प्रणाली देखी जो स्पिनक काफिले में जाम हो गई थी जब तक कि ट्रेस ध्वज 8048 सक्षम नहीं था।
मैंने इस स्पिनलॉक विवाद को 4 वीसीपीयू के रूप में वीएम पर प्रदर्शन को नीचे खींचें। ट्रेस फ्लैग 8048 ने उन सिस्टमों पर सक्षम होने के समय क्या करना चाहिए था।
यह देखते हुए कि वहाँ अभी भी कुछ 4 कोर आवृत्ति अनुकूलित CPU हैं, सही कार्यभार के साथ, उन्हें ट्रेस फ्लैग 8048 से भी लाभ होगा।
CMEMTHREAD प्रतीक्षा के प्रकार के साथ आता है जो झंडा 8048 का पता लगाता है। लेकिन सावधानी का एक शब्द: CMEMTHREAD इंतजार एक विशेष लक्षण है, इस विशेष मुद्दे के लिए मूल कारण नहीं। मैंने उच्च CMEMTHREAD के साथ सिस्टम देखा है "प्रतीक्षा प्रारंभ" जहां ट्रेस फ्लैग 8048 और / या 9024 को तैनाती में देरी हुई थी क्योंकि संचित CMEMTHREAD प्रतीक्षा समय काफी कम था। स्पिनलॉक के साथ, संचित प्रतीक्षा समय आमतौर पर देखने के लिए गलत चीज है। बल्कि, आप व्यर्थ सीपीयू समय को देखना चाहते हैं - मुख्य रूप से स्वयं द्वारा स्पिन का प्रतिनिधित्व करते हैं, दूसरे से संबंधित वेट द्वारा जो संभावित अनावश्यक संदर्भ स्विच का प्रतिनिधित्व करते हैं।