विभिन्न हाइपरविजर (VMWare, KVM, Hyper-V, आदि) में वर्चुअल मशीन बनाते समय, आप देख सकते हैं कि कभी-कभी एक वर्चुअल मशीन सभी वर्चुअल प्रोसेसर सॉकेट (vCPU) को नहीं देख सकती है। हमारे मामले में, 8 वीसीपीयू को केवीएम वर्चुअल मशीन को सौंपा गया था और विंडोज 10 को अतिथि ओएस के रूप में स्थापित किया गया था। हालांकि, विंडोज़ ने इन वीसीपीयू को अलग प्रोसेसर (कोर नहीं) के रूप में पाया और यह उनमें से केवल 2 का उपयोग कर सका।
Windows 10 वर्चुअल मशीन केवल 2 करोड़ का उपयोग कर रही है
यदि आप Windows डिवाइस मैनेजर खोलते हैं, तो आप सुनिश्चित कर सकते हैं कि सभी आवंटित कोर 8 अलग वर्चुअल प्रोसेसर के रूप में दिखाई दे रहे हैं QEMU वर्चुअल CPU संस्करण 2.5+ ।
वहीं, विंडोज 10 प्रॉपर्टीज (कंप्यूटर -> प्रॉपर्टीज) और टास्क मैनेजर से पता चलता है कि केवल 2 क्यूईएमयू वर्चुअल प्रोसेसर उपलब्ध हैं।
इसका मतलब है कि विंडोज 10 केवल 2 कोर का उपयोग करने में सक्षम है, चाहे आप उनमें से कितने भी जोड़ दें। उसी समय, एक ही हाइपरवाइजर पर विंडोज सर्वर 2016 चलाने वाला एक वर्चुअल सर्वर इसे आवंटित सभी 16 वीसीपीयू देख सकता है।
Windows में समर्थित प्रोसेसर की संख्या
समस्या यह है कि डेस्कटॉप विंडोज संस्करण (विंडोज 10/8.1/7) में भौतिक प्रोसेसर (सॉकेट) की अधिकतम संख्या पर प्रतिबंध है। एक कंप्यूटर उपयोग कर सकता है:
- विंडोज 10 होम - 1 सीपीयू
- विंडोज 10 प्रोफेशनल - 2 सीपीयू
- विंडोज 10 वर्कस्टेशन - 4 सीपीयू तक
- विंडोज सर्वर 2016 - 64 सीपीयू तक
हालांकि, यह प्रतिबंध कोर की संख्या से संबंधित नहीं है। अपनी वर्चुअल मशीन के प्रदर्शन को बेहतर बनाने के लिए, आप अधिक कोर . वाले प्रोसेसर का उपयोग कर सकते हैं . अधिकांश हाइपरविजर vCPU को प्रोसेसर, प्रोसेसर कोर या यहां तक कि थ्रेड के रूप में प्रदान कर सकते हैं। इसका मतलब है कि 8 वीसीपीयू के बजाय, आप 4 प्रति सॉकेट के साथ 2 वीसीपीयू (2 सॉकेट) जोड़ सकते हैं। आइए देखें कि विभिन्न हाइपरविजर में वर्चुअल प्रोसेसर को कोर के रूप में कैसे असाइन किया जाए और इसे आधुनिक प्रोसेसर में उपयोग किए जाने वाले NUMA आर्किटेक्चर से कैसे जोड़ा जाए।
केवीएम में वर्चुअल कोर और वीसीपीयू प्रबंधित करना
मेरे KVM वर्चुअल मशीन में Windows 10 चल रहा है , सभी असाइन किए गए वर्चुअल कोर को अलग प्रोसेसर माना जाता है।
वर्चुअल मशीन को आवंटित सभी CPU संसाधनों का उपयोग करने के लिए, इसे एक 8 कोर प्रोसेसर, प्रत्येक में 4 कोर के साथ 2 वीसीपीयू या 8 वीसीपीयू के बजाय दो थ्रेड में 4 कोर के साथ 1 वीसीपीयू देखना होगा। आइए KVM वर्चुअल मशीन के लिए वर्चुअल कोर के आवंटन को बदलने का प्रयास करें।
अपनी वर्चुअल मशीन बंद करें:
# virsh shutdown w10testvm
- जहां w10testvm आपकी वर्चुअल मशीन का नाम है
virsh
. का उपयोग करके कंसोल से KVM वर्चुअल मशीन प्रबंधन के पहलू दिए गए हैं . KVM वर्चुअल मशीन का वर्तमान XML कॉन्फ़िगरेशन प्रदर्शित करें:
# virsh dumpxml w10testvm
हमें VM CPU सेटिंग्स का वर्णन करने वाले ब्लॉक की आवश्यकता है:
8 1000 / Machine <टाइप आर्क='x86_64' मशीन='पीसी-i440fx-rhel7.6.0'>एचवीएम . के बाद निम्न ब्लॉक जोड़ें : सुविधाएँ>पूर्व> जैसा कि आप देख सकते हैं, 8 वीसीपीयू यहां सेट हैं। आइए कॉन्फ़िगरेशन बदलें:
# virsh edit w10testvm
कहां:
host-passthrough
अनुकरण मोड है जिसमें वर्चुअल मशीन क्लस्टर नोड के भौतिक प्रोसेसर को देखती हैsockets='1'
इंगित करता है कि एक vCPU (सॉकेट) हैcores='4'
प्रोसेसर में 4 कोर प्रति सॉकेट होता हैthreads='2'
ieach कोर में 2 धागे होते हैंकॉन्फ़िगरेशन फ़ाइल सहेजें और वर्चुअल मशीन प्रारंभ करें। Windows 10 अतिथि VM में लॉग इन करें, कार्य प्रबंधक या संसाधन मॉनिटर चलाएँ, और सुनिश्चित करें कि Windows सभी आवंटित वर्चुअल कोर देखता है।
होस्ट का एक भौतिक प्रोसेसर, Intel(R) Xeon(R) Silver 4114 CPU , अब सिस्टम गुणों में वर्चुअल के बजाय प्रदर्शित होता है।
यहां बताया गया है कि कैसे हम VM के लिए हैवी लोड की समस्या को हल करने में कामयाब रहे क्योंकि दो कोर ऐप्स के ठीक से काम करने के लिए पर्याप्त नहीं हैं।
VMWare VM के लिए प्रति वीसीपीयू में कोर की संख्या निर्धारित करना
आप vSphere क्लाइंट इंटरफ़ेस में VMWare वर्चुअल मशीन के लिए vCPU प्रस्तुति के तरीके को बदल सकते हैं।
- VM को शट डाउन करें और उसकी सेटिंग खोलें;
- CPU का विस्तार करें अनुभाग;
- VM कॉन्फ़िगरेशन बदलें ताकि अतिथि OS 4 कोर वाले 2 प्रोसेसर देख सके। मान बदलें कोर प्रति सॉकेट से 4 . तक . इसका मतलब है कि अतिथि ओएस दो 4-कोर सीपीयू (प्रति सॉकेट 4 कोर के साथ 2 सॉकेट) देखेगा;
- परिवर्तन सहेजें और VM चलाएँ।
वर्चुअल मशीन vCPU और NUMA आर्किटेक्चर
वर्चुअल मशीन को vCPU और कोर असाइन करने के कुछ और पहलू हैं जिन्हें आपको अवश्य समझना चाहिए।
प्रति सॉकेट कोर की संख्या निर्दिष्ट करते समय, सुनिश्चित करें कि आपके पास NUMA आर्किटेक्चर . है या नहीं (अधिकांश आधुनिक सीपीयू में प्रयुक्त)। आपके भौतिक सॉकेट (NUMA नोड) पर उपलब्ध कोर की संख्या की तुलना में VM को प्रति सॉकेट (और vCPU की कुल संख्या) से अधिक कोर असाइन करने की अनुशंसा नहीं की जाती है। जब एक भौतिक NUMA नोड पर रखा जाता है, तो एक वर्चुअल मशीन विशिष्ट NUMA नोड पर उपलब्ध तेज़ स्थानीय RAM का उपयोग करने में सक्षम होगी। अन्यथा, प्रक्रियाओं को किसी अन्य NUMA नोड (जिसमें अधिक समय लगता है) से प्रतिक्रिया के लिए प्रतीक्षा करनी होगी।
यदि आप VM को दो अलग-अलग वर्चुअल सॉकेट असाइन करते हैं, तो हाइपरविजर उन्हें अलग-अलग NUMA नोड्स पर चला सकता है। यह VM के प्रदर्शन को प्रभावित करेगा।
यदि आवश्यक वीसीपीयू की संख्या 1 भौतिक सॉकेट (NUMA नोड) पर कोर की संख्या से अधिक है, तो आवश्यक संख्या में कोर के साथ कई वर्चुअल सॉकेट (प्रोसेसर) बनाएं। इसके अलावा विषम संख्या में प्रोसेसर का उपयोग करने की अनुशंसा नहीं की जाती है (यह 1 vCPU जोड़ना बेहतर है)।
यह वर्चुअल मशीन के प्रदर्शन को बनाए रखने की अनुमति देता है।
उदाहरण के लिए, 10 कोर प्रति सॉकेट के साथ 2-प्रोसेसर होस्ट के लिए निम्न कॉन्फ़िगरेशन का उपयोग करने की अनुशंसा की जाती है (हाइपर सहित कुल मिलाकर 40 vCPU उपलब्ध हैं) —थ्रेडिंग ) जब आप किसी VM के लिए vCPU को कॉन्फ़िगर करते हैं:
एक मुफ्त ESXi संस्करण में आप 8 से अधिक vCPU के साथ VM नहीं बना सकते।
vCPU नंबर चाहिए VM सेटिंग में वर्चुअल सॉकेट की संख्या VM सेटिंग्स में एक वर्चुअल प्रोसेसर प्रति कोर की संख्या 1 1 1 …… 10 1 10 11 इष्टतम नहीं 12 2 6 …… 20 2 10 उदाहरण के लिए, 16 vCPU के साथ Microsoft SQL Server 2016 एंटरप्राइज़ संस्करण चलाने वाला VM (8 सॉकेट के साथ 2 कोर प्रति सॉकेट के कॉन्फ़िगरेशन में) ) का प्रदर्शन उतना ही खराब होगा जितना कि 2 सॉकेट x 8 करोड़ प्रति सॉकेट वाला VM .
आधुनिक विंडोज सर्वर संस्करण एक विशेष तरीके से वर्चुअल वातावरण में लाइसेंस प्राप्त हैं। VMWare vSphere में प्रोसेसर लाइसेंसिंग के कुछ पहलू भी हैं।
यह भी याद रखें कि कुछ अनुप्रयोगों को भौतिक सॉकेट की संख्या के आधार पर लाइसेंस दिया जाता है (जैसे कि यह पहले SQL सर्वर संस्करणों में था)। कभी-कभी कम कोर वाले कई प्रोसेसर की तुलना में एक मल्टीकोर प्रोसेसर को लाइसेंस देना अधिक लाभदायक होता है।