हम एक सक्रिय सर्वर को एक नए सर्वर (4 सॉकेट इंटेल ज़ीऑन, 512 जीबी मेमोरी) में माइग्रेट कर रहे हैं। तैनाती के बाद हमने अपना आवेदन बेंचमार्क लॉन्च किया (यह वास्तविक समय लेनदेन के समवर्ती बड़े ओलाप प्रश्नों का मिश्रण है)। मापा गया प्रदर्शन हमारे पिछले सर्वर की तुलना में लगभग दोगुना धीमा है, जिसमें समान प्रोसेसर हैं लेकिन दो बार कम कोर और दो बार कम स्मृति है।NUMA आर्किटेक्चर ActivePivot के प्रदर्शन को कैसे प्रभावित करता है?
हम दो सर्वर के बीच मतभेद की जांच की है, और ऐसा लगता है बड़ा एक NUMA वास्तुकला (गैर वर्दी स्मृति acccess) है। प्रत्येक सीपीयू सॉकेट भौतिक रूप से स्मृति के 1/4 के करीब है, लेकिन इसके बाकी हिस्सों से आगे ... हमारे आवेदन को चलाने वाला जेवीएम एक बड़ा वैश्विक ढेर आवंटित करता है, प्रत्येक NUMA नोड पर उस ढेर का एक यादृच्छिक अंश होता है। हमारा विश्लेषण यह है कि मेमोरी एक्सेस पैटर्न बहुत यादृच्छिक है और सीपीयू कोर अक्सर रिमोट मेमोरी तक पहुंचने में समय बर्बाद कर देता है।
हम NUMA सेवर्स पर ActivePivot का लाभ उठाने के बारे में अधिक प्रतिक्रिया की देखभाल कर रहे हैं। क्या हम ActivePivot cubes, या थ्रेड पूल कॉन्फ़िगर कर सकते हैं, हमारे प्रश्नों को बदल सकते हैं, ऑपरेटिंग सिस्टम को कॉन्फ़िगर कर सकते हैं?
numactl का उपयोग करते समय, मैं उस नोड को स्मृति को सीमित करने के लिए '--cpodeodebind = nodes, -N nodes' के साथ स्विच' --membind = nodes, -m nodes' स्विच का उपयोग करने की अनुशंसा करता हूं। अन्यथा स्मृति के एक छोटे हिस्से को आम तौर पर विदेशी नोड्स पर आवंटित किया जाता है (यहां तक कि '-XX: + UseNUMA' के साथ) –