SQL Server 2008 ट्रेस फ़्लैट 8048 में SQL Server 2008 R2 सिस्टम में एक गंभीर स्पिनलॉक विवाद समस्या को हल करने के लिए शामिल किया गया था।
उन लोगों से सुनने के इच्छुक हैं, जिन्होंने उपयोग के मामले पाए हैं, जहां प्रदर्शन मूल्य का पता लगाने वाले ध्वज 8048 (प्रति-एनयूएमए नोड से प्रति-कोर को क्वेरी मेमोरी अनुदान रणनीति को बढ़ावा देने), ट्रेस फ्लैग 8015 (एसक्यूएल सर्वर भौतिक एनयूएमए को अनदेखा करता है), या यूएमए ( interleaved पर्याप्त रूप से वर्दी स्मृति का उपयोग, कुछ NUMA मशीनों पर एक BIOS विकल्प)।
ट्रेस झंडा 8015 http://blogs.msdn.com/b/psssql/archive/2010/04/02/how-it-works-soft-numa-io-completion-thread-lazy-writer-workers-and-memory -nodes.aspx
सिस्टम कार्यभार का विवरण, परेशान प्रणाली से मैट्रिक्स एकत्र किया, और हस्तक्षेप के बाद सिस्टम से मैट्रिक्स एकत्र किया।
ट्रेस ध्वज 8048 एक 'फिक्स' था, लेकिन क्या यह सबसे अच्छा फिक्स था? क्या SQL सर्वर ट्रेस फ्लैग 8015 की वजह से भौतिक NUMA की अनदेखी कर रहा है? मेमोरी को इंटरमीडिएट करने के लिए BIOS को सेट करने के बारे में क्या है, सर्वर को NUMA व्यवहार के बजाय SMP-imitating SUMA व्यवहार के साथ छोड़ रहा है?
शांति! tw: @sql_handle
सिस्टम के बारे में: - 4 हेक्स कोर एक्सॉन E7540 @ 2.00GHz, हाइपरथ्रेडेड - 128 जीबी रैम - WS2008R2 - MSSQL 2008 R2 SP2 - मैक्सडोप 6
कार्यभार के बारे में: 2 रिपोर्ट एप्लिकेशन सर्वर से संचालित बैच की निर्धारित / कतारबद्ध रिपोर्ट का अधिकतम स्तर। - बैचों के 3 जायके: दैनिक, साप्ताहिक, मासिक - सभी रिपोर्ट अनुप्रयोग सर्वर कनेक्शन SQL सर्वर के लिए एक एकल सेवा खाते के रूप में किए जाते हैं - अधिकतम रिपोर्ट संक्षिप्तता = 90
परेशान प्रणाली पर मुख्य निष्कर्ष: - पर्फोमन से, 15 सेकंड का अंतराल - - सिस्टम 95% -100% सीपीयू में व्यस्त रहता है - - SQL सर्वर बफर पेज लुकअप <10000 प्रति / सेकंड
- प्रतीक्षा और स्पिनलॉक डीएमवी से, 5 मिनट के अंतराल
- उच्च CMEMTHREAD वेटर्स और प्रतीक्षा समय
- उच्च SOS_SUSPEND_QUEUE स्पिन और बैकऑफ़
ट्रेस ध्वज 8048 पर बॉब डोर का सीएसएस इंजीनियर ब्लॉग पोस्ट बताता है कि क्वेरी मेमोरी अनुदान में अड़चन के कारण NUMA नोड प्रति 8 से अधिक कोर वाले सिस्टम समान लक्षणों में चल सकते हैं। ट्रेस फ्लैग 8048 प्रति-नूमा नोड के बजाय रणनीति को प्रति-कोर में बदल देगा।
हस्तक्षेप
MSSQL को -8080 के साथ फिर से शुरू किया गया था। यह अंतर तुरंत स्पष्ट हो गया था: बफर पेज लुकअप दर 1 मिलियन और स्पाइक 8 मिलियन प्रति सेकंड से अधिक हो गई। परेशान बैच कार्यभार, जो पहले 24 घंटे में पूरा नहीं कर सकता था, 4 घंटे से कम समय में पूरा हुआ। एक और बैच वर्कलोड जो जांच या हस्तक्षेप का फोकस नहीं था, ट्रेस फ्लैग 8048 के सुधारात्मक मूल्य को सत्यापित करने के हिस्से के रूप में प्रस्तुत किया गया था (और यह सुनिश्चित करना कि इसके अवांछित दुष्प्रभाव कम से कम थे)। यह रिपोर्ट बैच पहले 2 घंटे में पूरी होती है; ट्रेस फ्लैग 8048 के साथ रिपोर्ट बैच लगभग 20 मिनट में पूरा हुआ।
रात्रिकालीन ईटीएल को भी लाभ मिला। ETL का समय लगभग 60 मिनट से घटकर 40 मिनट हो गया।
कई स्थानों से एक साथ जानकारी खींचते हुए, मैं अनुमान लगाता हूं कि रिपोर्ट कतार की उच्च डिग्री, समवर्ती रिपोर्ट हार्डवेयर थ्रेड काउंट से अधिक होती है, और सभी रिपोर्ट के लिए एकल उपयोगकर्ता खाता एक NUMA नोड पर दबाव डालने के लिए संयुक्त होता है जब तक कि कार्यकर्ता थ्रेड दबाव इसके कारण नहीं होता है उसी उपयोगकर्ता खाते के लिए अगले आने वाले कनेक्शन के अनुरोध के लिए तैयार रहें, जिस बिंदु पर अगले NUMA नोड को तुरंत पास के कुछ नंबर मिलेंगे। प्रत्येक NUMA नोड क्वेरी मेमोरी अनुदान टोंटी पर जोर देने की उच्च संभावना के साथ समाप्त होगा।
क्वेरी मेमोरी अनुदान के लिए अधिक लेन खोलने से अड़चन दूर हो गई। लेकिन, मुझे यकीन नहीं है कि लागत। बॉब डोरर की सीएसएस पोस्ट यह स्पष्ट करती है कि ट्रेस फ्लैग 8048 के साथ अतिरिक्त मेमोरी ओवरहेड है। क्या MSSQL 2008 R2 अधिकतम सर्वर मेमोरी द्वारा शासित सिंगल-पेज एलोकेटर क्षेत्र के भीतर ओवरहेड है? यदि ऐसा है, तो मुझे लगता है कि सिस्टम में बफर पूल कैश में कुछ कम डेटाबेस पेज होंगे। यदि नहीं, तो क्या अधिकतम सर्वर मेमोरी को समायोजित करने के लिए कम किया जाना चाहिए?