सीपीयू घड़ी की गति बनाम सीपीयू कोर गणना - उच्च गीगाहर्ट्ज, या SQL सर्वर के लिए अधिक कोर?


30

हम VMware के भीतर SQL Server 2016 नोड्स के एक वर्चुअल क्लस्टर के लिए भौतिक सर्वर का एक सेट का प्रावधान करने लगे हैं। हम एंटरप्राइज एडिशन लाइसेंस का उपयोग करेंगे।

हम 6 नोड्स स्थापित करने की योजना बना रहे हैं, लेकिन सीपीयू घड़ी की गति बनाम सीपीयू कोर काउंट के संबंध में भौतिक सर्वरों को व्यवस्थित करने का आदर्श तरीका क्या है, इस पर थोड़ी बहस है।

मुझे पता है कि यह बड़े पैमाने पर लेनदेन की मात्रा और अन्य सॉफ़्टवेयर-विशिष्ट कारकों के बीच संग्रहीत डेटाबेस की संख्या पर निर्भर करता है, लेकिन क्या अंगूठे का एक सामान्य नियम है जो सलाह दी जाती है?

उदाहरण के लिए, एक दोहरी 8-कोर, 3.2 गीगाहर्ट्ज भौतिक सर्वर (16 कोर) एक दोहरे 16-कोर, 2.6 गीगाहर्ट्ज सर्वर (32 कोर) के लिए अधिक तरजीह है?

क्या किसी को एक श्वेत पत्र मिला है जो इस प्रकार के विषय को आगे बढ़ाता है?


आपकी चिंता क्या है, अमूर्त या लाइसेंस और लागत प्रभावशीलता में प्रदर्शन?
इवान कैरोल

जवाबों:


40

अंगूठे का सामान्य नियम मूल गणना को यथासंभव कम रखना है, और प्रोसेसर की गति जितनी अधिक हो सके। उस पर लाइसेंसिंग गणित महँगा संस्करण के लिए ~ 7,500 USD प्रति कोर पर बिंदु साबित होता है।

सही हार्डवेयर खरीदना लाइसेंस की कम लागत में खुद के लिए भुगतान कर सकता है। ग्लेन बेरी द्वारा SQL सर्वर के लिए प्रोसेसर चयन देखें । यह SQL सर्वर के लिए एक प्रोसेसर का चयन करने के लिए एक महान संसाधन है।

एक बार जब आप SQL सर्वर के प्रति-कोर लाइसेंसिंग संरचना को ध्यान में रखते हैं, तो यह हमेशा काम के प्रकार की परवाह किए बिना उपलब्ध सबसे तेज प्रोसेसर गति के साथ जाने के लिए समझ में आता है, चाहे ओएलटीपी हो या एनालिटिक्स। सबसे तेज संभव कोर गति होने से कभी कोई समस्या नहीं होती है। आवश्यकतानुसार कोर गिनती बढ़ाएँ, लेकिन कोर गति को कम करके कभी ऐसा न करें।

दूसरे शब्दों में, 16 x 2.2Ghz के प्रोसेसर को 8 x 4.5Ghz प्रोसेसर के समान न समझें। 4.5Ghz प्रोसेसर पर 2.2Ghz प्रोसेसर का उपयोग करने की लागत बचत लगभग $ 10,000 USD (एक विशिष्ट एक्सोन-आधारित दो प्रोसेसर मशीन के लिए) होने की संभावना है। SQL सर्वर एंटरप्राइज़ संस्करण के साथ 8 कोर से 16 कोर तक कूदने पर लाइसेंस फीस में $ 60,000 USD से अधिक की लागत होने की संभावना है। दूसरे शब्दों में, आप हार्डवेयर लागतों में $ 10,000 बचा सकते हैं, लेकिन आप लाइसेंस में $ 50,000 अतिरिक्त खो देंगे।

यदि आप तय करते हैं कि आपको समानांतर प्रसंस्करण मांसपेशी की बहुत आवश्यकता है, और तय करें कि आपको हाथ में कार्य के लिए 32 कोर की आवश्यकता है, तो सबसे तेज कोर के साथ जाने से कम प्रसंस्करण समय में लाभांश का भुगतान करना होगा। कोई भी इसके लिए आपको दोष नहीं देगा।

यह सब कहने के बाद, यदि पसंद एक सीपीयू या एक से अधिक सीपीयू है, तो हमेशा एक से अधिक के साथ जाएं । एक एकल CPU पर SQL सर्वर (या किसी DBMS) को चलाने से समवर्ती संचालन की क्षमता बहुत सीमित होने के कारण सभी प्रकार की समस्याएं हो सकती हैं।


11

होल्ड ऑन होल्ड ऑन होल्ड

हालांकि प्रदर्शन और लाइसेंसिंग पहलू दिलचस्प हैं, वे विचार करने के लिए केवल एक कार्यभार का पहलू नहीं हैं।

प्रोसेसर की पसंद पर असर डालने वाली एक चीज है श्रमिक सूत्र।

वर्कर थ्रेड्स?

हाँ दोस्त! वे चीजें हैं जो आपका SQL सर्वर आपके प्रश्नों को चलाने के लिए उपयोग करेगा और उन सभी पृष्ठभूमि सामानों को करेगा जो चीजों को आकार में रखने के लिए करने की आवश्यकता है।

जब आप वर्कर थ्रेड से बाहर निकलते हैं, तो आप THREADPOOL से टकराते हैं प्रतीक्षा करता है

धागा पूल?

धागा पूल। यह RESOURCE_SEMAPHORE और RESOURCE_SEMAPHORE_QUERY_COMPILE के साथ-साथ आपके सर्वर पर होने वाले सबसे कम इंतजार में से एक है । लेकिन वे मेमोरी वेट हैं, और यह एक सीपीयू प्रश्न है।

तो वापस क्यों यह wiggity wack है।

यह कैसे SQL सर्वर कार्यकर्ता सूत्र की गणना करता है :

पागल

ध्यान दें कि कोर कोर को दोगुना करना मैक्स वर्कर थ्रेड्स को दोगुना नहीं करता है, और आपको 1 कोर के साथ समान संख्या मिलती है जैसा कि आप 4 कोर के साथ करते हैं? समीकरण है:512 + ((logical CPUs - 4) * 16)

यह शर्म की बात है, क्योंकि जब कोर मायने रखता है, घड़ी की गति आमतौर पर एक पीढ़ी या दो वापस करने के लिए nosedives।

पागल

इंटेल चिप्स के किसी भी हालिया लाइन पर एक नज़र डालने से एक समान प्रवृत्ति दिखाई देगी।

मुझे कैसे पता चलेगा कि मुझे कितने धागे चाहिए?

यह बहुत कुछ पर निर्भर करेगा:

  • उपयोगकर्ताओं की संख्या
  • समानांतर प्रश्नों की संख्या
  • धारावाहिक प्रश्नों की संख्या
  • डेटाबेस और डेटा सिंक्रनाइज़ेशन की संख्या (लॉग शिपिंग के लिए मिररिंग, एजी, बैकअप)
  • यदि आप चूक पर MAXDOP और CTFP छोड़ देते हैं

यदि आप आज उनमें से नहीं चल रहे हैं, तो आप शायद ठीक हैं।

लेकिन आप कैसे जानते हैं कि आप क्या हैं?

अच्छे प्रश्न हैं, और बहुत अच्छे प्रश्न हैं, और lemme आपको कुछ बताते हैं, जो एक महान प्रश्न है

THREADPOOL कनेक्शन समस्याओं के रूप में प्रकट हो सकता है, और आप त्रुटि लॉग में संदेश देख सकते हैं कि कोई थ्रेड स्पॉन करने में सक्षम नहीं है

आप sp_Blitz या sp_BlitzFirst (पूर्ण प्रकटीकरण, मैं इस परियोजना में योगदान देता हूं) जैसे मुफ्त टूल का उपयोग करके अपने सर्वर के प्रतीक्षा आँकड़े देख सकता हूं।

EXEC sp_Blitz

पागल

EXEC sp_BlitzFirst @SinceStartup = 1

पागल

क्या मैं सिर्फ मैक्स वर्कर थ्रेड्स नहीं बढ़ा सकता?

MWT बढ़ने से वृद्धि हो सकती है SOS_SCHEDULER_YIELD

यह दुनिया का अंत नहीं है, लेकिन इसके बारे में सोचें जैसे कि एक शिक्षक की कक्षा में बंचा चिल्लाते हुए बच्चों को जोड़ना।

अचानक, यह ध्यान आकर्षित करने के लिए प्रत्येक बच्चे के लिए कठिन होने वाला है।

जब एक प्रक्रिया अपने 4ms क्वांटम को समाप्त करती है , तो संभवतः सीपीयू पर प्राप्त होने के इंतजार में इसके आगे और धागे होंगे।

प्रदर्शन उसी के बारे में महसूस कर सकता है।

मैं कम वर्कर थ्रेड्स का उपयोग कैसे कर सकता हूं?

आप एक [संज्ञा] के क्रूर [संज्ञा], समर्थन के लिए परिवारों के साथ कार्यकर्ता हैं! बंधक! सपने!

लेकिन ठीक है, नीचे की रेखा का सम्मान करेंगे। तुम मालिक हो।

शुरू करने के लिए सबसे आसान जगह चूक से समानांतरता के लिए MAXDOP और कॉस्ट थ्रेशोल्ड फॉर पैरेललिज़्म जैसी सेटिंग्स बदल रही है।

यदि आपके पास उन लोगों को सेट करने के बारे में प्रश्न हैं, तो यहां से जाएं:

उसके बाद, आपकी नौकरी बहुत मुश्किल हो जाती है। आपको पता चल जाएगा कि उन सभी थ्रेड्स का उपयोग क्या है। आप कभी-कभी अपने प्रतीक्षा आँकड़े देखकर ऐसा कर सकते हैं।

विशेष रूप से, यदि आपको समानांतरवाद पर उच्च प्रतीक्षा ( CXPACKET) और ताले पर उच्च प्रतीक्षा ( LCK_) है, तो आप समानांतर प्रश्नों को शामिल करते हुए लंबी अवरुद्ध श्रृंखलाओं में दौड़ सकते हैं।

तुम्हें पता है क्या बदबू आ रही है? जबकि उन सभी समानांतर प्रश्नों को उनके ताले प्राप्त करने की प्रतीक्षा कर रहे हैं, वे अपने आवंटित धागे वापस नहीं देते हैं।

आप लगभग चार कोर वीएम सुन सकते हैं कि आपके व्यवस्थापक ने आश्वासन दिया था कि आप किसी भी कार्यभार को हवा, हुह के लिए पर्याप्त से अधिक थे?

दुर्भाग्य से, उस सामान को हल करने के लिए आपको किस प्रकार की क्वेरी और इंडेक्स ट्यूनिंग करनी है, यह सवाल के दायरे से परे है।

उम्मीद है की यह मदद करेगा!


2

सामुदायिक विकि उत्तर :

इसका लंबा और छोटा होना: SQL सर्वर के लिए अधिकांश कार्यभार OLTP हैं जो उच्चतर घड़ी की गति से लाभान्वित होते हैं क्योंकि यह एक धारावाहिक ऑपरेशन है।

जब तक आप विशेष रूप से एक व्यापक समानांतर प्रणाली के लिए डिज़ाइन नहीं कर रहे हैं, घड़ी की गति हमेशा जीत जाएगी। बढ़त के मामले मौजूद हैं, लेकिन यह 95% समय का जवाब है। तथ्य यह है कि यह कम लागत समाप्त होता है यह भी एक अच्छी बात है।


-3

इसका उत्तर नीचे आता है: यह आपके उपयोग के मामले पर निर्भर करता है।

  • क्या आप एक या कई बड़े अनुरोधों पर कई छोटे अनुरोधों को संसाधित कर रहे हैं?
  • क्या आपके द्वारा चलाया गया प्रोग्राम मल्टी-कोर के लिए भी अनुकूलित है?

उदाहरण के लिए, मेरे पास एक क्वाड कोर कंप्यूटर है लेकिन ESP8266 कंपाइलर केवल मेरे सीपीयू के 25% का उपयोग करता है क्योंकि यह केवल इस कोर का उपयोग करने के लिए डिज़ाइन किया गया है। अगर मेरे पास 1 तेज कोर होता तो वह अधिक इष्टतम होता।


6
नमस्कार और dba.stackexchange.com पर आपका स्वागत है ! आपका उत्तर बहुत सामान्य मामले के लिए सही है, लेकिन यह SQL या डेटाबेस मामलों में ओपी के बारे में पूछ रहा है पर ध्यान केंद्रित नहीं करता है। उस मामले में गहराई तक जाकर इसे सुधारने की कोशिश करें! :)
xDaizu
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.