अलग-अलग हाइपरवाइज़र (VMware, KVM, Hyper-V, आदि.) में वर्चुअल मशीन बनाते समय, आप देख सकते हैं कि कभी-कभी वर्चुअल मशीन को उसे आवंटित सभी वर्चुअल प्रोसेसर सॉकेट (vCPU) दिखाई नहीं दे सकते। हमारे मामले में, KVM वर्चुअल मशीन को 8 vCPUs आवंटित किए गए थे और उस पर Windows 10 गेस्ट OS के रूप में इंस्टॉल किया गया था। हालांकि, Windows ने इन vCPUs को अलग प्रोसेसर (कोर नहीं) के रूप में पहचाना और यह उनमें से केवल 2 का उपयोग कर सका।
Windows 10 वर्चुअल मशीन केवल 2 कोर उपयोग कर रही है
यदि आप Windows डिवाइस मैनेजर खोलते हैं, तो आप सुनिश्चित कर सकते हैं कि सभी आवंटित कोर 8 अलग वर्चुअल प्रोसेसर QEMU वर्चुअल CPU संस्करण 2.5+ के रूप में दिखाई दे रहे हैं।

साथ ही, Windows 10 गुण (कंप्यूटर → गुण) और टास्क मैनेजर दिखाते हैं कि केवल 2 QEMU वर्चुअल प्रोसेसर उपलब्ध हैं।

इसका मतलब है कि Windows 10 केवल 2 कोर का उपयोग कर पा रहा है चाहे आप कितने भी जोड़ लें। साथ ही, उसी हाइपरवाइज़र पर Windows Server 2016 चलाने वाला वर्चुअल सर्वर आवंटित सभी 16 vCPUs देख सकता है।
Windows में समर्थित प्रोसेसर की संख्या
समस्या यह है कि डेस्कटॉप Windows संस्करणों (Windows 10/8.1/7) में भौतिक प्रोसेसर (सॉकेट) की अधिकतम संख्या पर प्रतिबंध है जिसे कंप्यूटर उपयोग कर सकता है:
- Windows 10 Home – 1 CPU
- Windows 10 Professional – 2 CPU
- Windows 10 Workstation – 4 CPU तक
- Windows Server 2016 – 64 CPU तक
हालांकि, यह प्रतिबंध कोर की संख्या से संबंधित नहीं है। अपनी वर्चुअल मशीन के प्रदर्शन को बेहतर बनाने के लिए, आप अधिक कोर वाला प्रोसेसर उपयोग कर सकते हैं। अधिकांश हाइपरवाइज़र vCPUs को प्रोसेसर, प्रोसेसर कोर या यहां तक कि थ्रेड्स के रूप में प्रदान कर सकते हैं। इसका मतलब है कि 8 vCPUs के बजाय, आप 2 vCPUs (2 सॉकेट) 4 कोर प्रति सॉकेट के साथ जोड़ सकते हैं। आइए देखें कि विभिन्न हाइपरवाइज़र में वर्चुअल प्रोसेसर को कोर के रूप में कैसे असाइन करें और इसे आधुनिक प्रोसेसर में उपयोग की जाने वाली NUMA आर्किटेक्चर से कैसे बांधें।
KVM में वर्चुअल कोर और vCPU प्रबंधित करना
Windows 10 चल रही मेरी KVM वर्चुअल मशीन में, सभी आवंटित वर्चुअल कोर अलग प्रोसेसर माने जाते हैं।
वर्चुअल मशीन को आवंटित सभी CPU संसाधनों का उपयोग करने के लिए, इसे एक 8-कोर प्रोसेसर, 4 कोर वाले 2 vCPUs या दो थ्रेड में 4 कोर वाला 1 vCPU देखना चाहिए बजाय 8 vCPUs के। आइए KVM वर्चुअल मशीन के लिए वर्चुअल कोर के आवंटन को बदलने का प्रयास करें।
अपनी वर्चुअल मशीन बंद करें:
# virsh shutdown w10testvm – जहां w10testvm आपकी वर्चुअल मशीन का नाम है
कंसोल से virsh का उपयोग करके KVM वर्चुअल मशीन प्रबंधन के पहलू यहां दिए गए हैं।
KVM वर्चुअल मशीन की वर्तमान XML कॉन्फ़िगरेशन प्रदर्शित करें:
# virsh dumpxml w10testvm
हमें VM CPU सेटिंग्स का वर्णन करने वाला ब्लॉक चाहिए:
<vcpu placement='static'>8</vcpu> <cputune> <shares>1000</shares> </cputune> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-i440fx-rhel7.6.0'>hvm</type> <bootmenu enable='yes'/> </os> <features> <acpi/> <apic/> <pae/> </features>
जैसा कि आप देख सकते हैं, यहां 8 vCPUs सेट हैं। आइए कॉन्फ़िगरेशन बदलें:
# virsh edit w10testvm
</features> के बाद निम्न ब्लॉक जोड़ें:
<cpu mode='host-passthrough' check='none'> <topology sockets='1' cores='4' threads='2'/> </cpu>
जहां:
host-passthroughवह एमुलेशन मोड है जिसमें वर्चुअल मशीन क्लस्टर नोड के भौतिक प्रोसेसर को देखती हैsockets='1'इंगित करता है कि एक vCPU (सॉकेट) हैcores='4'प्रोसेसर में प्रति सॉकेट 4 कोर हैंthreads='2'प्रत्येक कोर में 2 थ्रेड हैं
कॉन्फ़िगरेशन फाइल सेव करें और वर्चुअल मशीन शुरू करें। Windows 10 गेस्ट VM में लॉगिन करें, टास्क मैनेजर या रिसोर्स मॉनिटर चलाएं, और सुनिश्चित करें कि Windows सभी आवंटित वर्चुअल कोर देखता है।

होस्ट का भौतिक प्रोसेसर, Intel(R) Xeon(R) Silver 4114 CPU, अब सिस्टम गुणों में वर्चुअल के बजाय प्रदर्शित होता है।

यहां बताया गया है कि हम VM के लिए भारी लोड समस्या को कैसे हल करने में कामयाब रहे क्योंकि दो कोर ऐप्स को ठीक से काम करने के लिए पर्याप्त नहीं थे।
VMware VM के लिए प्रति vCPU कोर की संख्या सेट करना
आप vSphere क्लाइंट इंटरफ़ेस में VMware वर्चुअल मशीन के लिए vCPU प्रस्तुति का तरीका बदल सकते हैं।
- VM बंद करें और इसकी सेटिंग्स खोलें;
- CPU सेक्शन का विस्तार करें;
- VM कॉन्फ़िगरेशन बदलें ताकि गेस्ट OS 4 कोर वाले 2 प्रोसेसर देख सके। Cores per Socket मान को 4 पर बदलें। इसका मतलब है कि गेस्ट OS दो 4-कोर CPU देखेगा (4 कोर प्रति सॉकेट के साथ 2 सॉकेट);

- परिवर्तन सेव करें और VM चलाएं।
वर्चुअल मशीन vCPU और NUMA आर्किटेक्चर
vCPUs और कोर को वर्चुअल मशीनों को असाइन करने के कुछ और पहलू हैं जिन्हें आपको समझना चाहिए।
प्रति सॉकेट कोर की संख्या असाइन करते समय, सुनिश्चित करें कि आपके पास NUMA आर्किटेक्चर है (अधिकांश आधुनिक CPUs में उपयोग किया जाता है)। अपने भौतिक सॉकेट (NUMA नोड) पर उपलब्ध कोर की संख्या से अधिक कोर प्रति सॉकेट (और vCPUs की कुल संख्या) VM को असाइन न करने की सिफारिश की जाती है। एक ही भौतिक NUMA नोड पर रखे जाने पर, वर्चुअल मशीन विशिष्ट NUMA नोड पर उपलब्ध तेज़ लोकल RAM का उपयोग कर पाएगी। अन्यथा, प्रक्रियाओं को दूसरे NUMA नोड से प्रतिक्रिया की प्रतीक्षा करनी होगी (जिसमें अधिक समय लगता है)।
यदि आप VM को दो अलग वर्चुअल सॉकेट असाइन करते हैं, तो हाइपरवाइज़र उन्हें अलग NUMA नोड्स पर चला सकता है। यह VM प्रदर्शन को प्रभावित करेगा।
यदि आवश्यक vCPUs की संख्या 1 भौतिक सॉकेट (NUMA नोड) पर कोर की संख्या से अधिक है, तो आवश्यक कोर संख्या के साथ कई वर्चुअल सॉकेट (प्रोसेसर) बनाएं। विषम संख्या में प्रोसेसर उपयोग न करने की भी सिफारिश की जाती है (1 vCPU जोड़ना बेहतर है)।
यह वर्चुअल मशीन प्रदर्शन को बनाए रखने की अनुमति देता है।

उदाहरण के लिए, 2-प्रोसेसर होस्ट के लिए जिसमें प्रति सॉकेट 10 कोर हैं (कुल 40 vCPUs उपलब्ध हैं हाइपर-थ्रेडिंग सहित) जब आप VM के लिए vCPUs कॉन्फ़िगर करते हैं तो निम्न कॉन्फ़िगरेशन उपयोग करने की सिफारिश की जाती है:
| आवश्यक vCPU संख्या | VM सेटिंग्स में वर्चुअल सॉकेट की संख्या | VM सेटिंग्स में प्रति वर्चुअल प्रोसेसर कोर की संख्या |
| 1 | 1 | 1 |
| …… | ||
| 10 | 1 | 10 |
| 11 | इष्टतम नहीं | |
| 12 | 2 | 6 |
| …… | ||
| 20 | 2 | 10 |
मुफ़्त ESXi संस्करण में आप 8 vCPUs से अधिक वाली VM नहीं बना सकते।
उदाहरण के लिए, 8 सॉकेट्स 2 कोर प्रति सॉकेट कॉन्फ़िगरेशन में 16 vCPU वाली Microsoft SQL Server 2016 एंटरप्राइज़ एडिशन चलाने वाली VM का प्रदर्शन 2 सॉकेट्स x 8 कोर प्रति सॉकेट वाली VM से खराब होगा।
यह भी याद रखें कि कुछ एप्लिकेशन भौतिक सॉकेट की संख्या के आधार पर लाइसेंस प्राप्त होते हैं (जैसे पहले SQL Server संस्करणों में था)। कभी-कभी एक मल्टीकोर प्रोसेसर को लाइसेंस देना कम कोर वाले कई प्रोसेसर की तुलना में अधिक लाभदायक होता है।
आधुनिक Windows Server संस्करण वर्चुअल वातावरण में विशेष तरीके से लाइसेंस प्राप्त होते हैं। VMware vSphere में प्रोसेसर लाइसेंसिंग के कुछ पहलू भी हैं।