क्या एक VM के संपर्क में CPU कोर की संख्या के लिए एक इष्टतम सेटिंग है?


23

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

सहायता फ़ाइल यह बताती है कि उपलब्ध भौतिक कोर की संख्या से ऊपर इसे स्थापित नहीं करना चाहिए। यह समझ में आता है। तो, क्या यह सबसे अच्छा 1 या 2 सीपीयू कोर आवंटित कर रहा है? क्या यह पूरी तरह से देशी सीपीयू लोड पर निर्भर करता है?

जवाबों:


6

यह पूरी तरह से इस बात पर निर्भर करता है कि अतिथि ओएस क्या कर रहा है। मेरे व्यक्तिगत अनुभव में एक वीएम एकल प्रोग्राम (बिल्ड सर्वर, ट्रैक सर्वर, एसवीएन, आदि) चला रहा है, इसलिए इसे एक से ऊपर सेट करने का कोई कारण नहीं है।

एक संभावित मामला यह हो सकता है कि यह एक अंतिम उपयोगकर्ता है जो एक विश्वविद्यालय का कहना है कि अतिथि ओएस को एक थकाऊ (यानी टीएएस) के रूप में उपयोग कर रहा है, फिर शायद इसे एक से अधिक पर सेट करें।


तो, दूसरे शब्दों में: एक अस्थायी प्रणाली के लिए, आप सीपीयू कोर कोटा को अधिकतम कर सकते हैं; लेकिन "सामान्य" या विशिष्ट उपयोग के लिए, इसे एक कोर में सेट करें (ताकि होस्ट ओएस के प्रदर्शन में बहुत अधिक हस्तक्षेप न करें)?
21

18

इस उत्तर की जानकारी अब सही नहीं है । सख्त सह-समय निर्धारण के दिनों में यह सही था, लेकिन अब ऐसा नहीं है।

मैं समृद्धि की खातिर नीचे उत्तर रख रहा हूं, लेकिन कृपया आधुनिक हाइपरविजर्स के लिए सटीक होने के लिए इस पर भरोसा न करें।


आपको अपने सभी कोर को वर्चुअल मशीन में vCPUs के रूप में असाइन नहीं करना चाहिए ।

यदि कोई VM किसी CPU समय का अनुरोध करता है, तो VMWare को सभी vCPUs, या vCPUs में से कोई भी आवंटित करना होगा।

इसका मतलब क्या है, 4-कोर सिस्टम पर अगर आप सभी 4 कोर आवंटित करते हैं, तो केवल मेजबान, या अतिथि, प्रोसेसर समय आवंटित किया जा सकता है, दोनों एक ही समय में नहीं।

यह पूरी तरह से दोनों वातावरण में प्रदर्शन को बर्बाद कर देगा।

एक विषम संख्या में कोर आवंटित करने के लिए स्वतंत्र महसूस करें (कहते हैं, 3)। यह अजीब लगता है, लेकिन यह पूरी तरह से वैध विकल्प है।

आम तौर पर मैं कभी भी (n / 2) vCPU (आपके मामले में, 2) से अधिक आवंटित नहीं करता - लेकिन मैं सामान्य रूप से 12 और 32 कोर के बीच सर्वर पर कोर आवंटित कर रहा हूं जहां आप बड़ी संख्या में बिना बड़े प्रभाव के vCPUs आवंटित कर सकते हैं।


यह एकमात्र उत्तर है जो इस प्रकार किसी भी अधिकार प्राधिकरण के साथ लिखा गया है। अपने अनुभव साझा करने के लिए धन्यवाद।
G-Wiz

5
-1: मेरे अनुभव के अनुरूप नहीं। वीएम एक ऐसी प्रक्रिया है जिसका सीपीयू समय मेजबान की किसी अन्य प्रक्रिया की तरह ही निर्धारित किया जा सकता है। आप होस्ट पर VM प्रक्रिया (तों) की प्राथमिकता को समायोजित कर सकते हैं, और सिस्टम उचित रूप से लोड को संतुलित करेगा।
bwDraco

2
( जारी ) मान लें कि आपके पास 16-कोर सर्वर है। एक उदाहरण कॉन्फ़िगरेशन 4 VMs होगा, प्रत्येक 8 कोर के लिए कॉन्फ़िगर किया गया होगा। हालांकि यह बहुत अधिक आभासी कोर लग सकता है, यह व्यक्तिगत वीएम को भारी कार्यभार पर बेहतर पैमाने पर ले जाने की अनुमति देता है। क्या संयुक्त उपयोग भौतिक कोर की संख्या से अधिक होना चाहिए, मेजबान तदनुसार लोड को संतुलित करेगा। यह है कि वर्चुअलाइजेशन कैसे थ्रूपुट को बढ़ा सकता है और लागत को कम कर सकता है - मेजबान हार्डवेयर का अधिकतम लाभ उठाकर।
bwDraco

@DragonLord - यह उत्तर 2 साल से अधिक पुराने एक सवाल पर है जो लगभग 4 साल पुराना है, और पुरानी जानकारी पर आधारित हो सकता है। मैं ईएसएक्स से "स्ट्रिक्ट को-शेड्यूलिंग" की बात कर रहा हूं, लेकिन मुझे याद नहीं है कि वह जानकारी कितनी पुरानी है, और मैंने पिछले कुछ वर्षों में सीपीयू के शेड्यूलिंग में बदलाव नहीं किया है।
मार्क हेंडरसन

1
बस यहां एक नोट छोड़ना चाहते थे कि उबंटू 14.04 और 16.04 दोनों पर, बूट मुद्दों के साथ-साथ क्रैश भी होते हैं यदि आप सीपीयू की संख्या को विषम संख्या में सेट करते हैं। मैं यह पता लगाने में सक्षम नहीं हो पाया हूं कि क्योंकि मैंने केवल मुद्दों से बचने के लिए इसे संख्याओं पर रखने का फैसला किया था।
डोरियन

3

अतिथि CPU के संपर्क में आने वाले कोर की संख्या प्रदर्शन को प्रभावित नहीं करती है जितना आप चाहते हैं। यह केवल अतिथि CPU "देखता है" कोर की मात्रा को समायोजित करता है।

एमुलेटर कैसे सेट किया जाता है, इसके आधार पर, यह वर्चुअल मशीन के आधे प्रदर्शन का शाब्दिक अर्थ हो सकता है, कुछ भी नहीं कर सकता है, या केवल उस तरह से प्रभावित कर सकता है जिस तरह से अतिथि OS / एप्लिकेशन उनके थ्रेड शेड्यूलिंग को विभाजित करते हैं।

इसे डिफ़ॉल्ट पर छोड़ना सबसे अच्छा है। यदि आप होस्ट पीसी पर प्रदर्शन समस्याओं का सामना करते हैं, तो आप बस विंडोज टास्क मैनेजर के साथ प्रक्रिया प्राथमिकता को समायोजित कर सकते हैं।


3

जैसा कि नैट ने उल्लेख किया है, जब तक आपका वीएम ज्यादातर एकल-थ्रेडेड प्रक्रिया को चलाने की सेवा करेगा, एक से अधिक कोर आवंटित करने का बहुत कम कारण है।

हालांकि, यदि आप इसे इस तरह से उपयोग करने की योजना बनाते हैं जो अधिक कोर (बहु-थ्रेडेड प्रोग्राम, कई समानांतर प्रोग्राम, ..) से लाभ उठा सकता है, तो कहानी अधिक जटिल है। मैंने पहले यह मान लिया था कि आपके वीपी के लिए आपके सीपीयू का आधा उपयोग करना एक अच्छा विचार है। यह हमेशा इष्टतम नहीं होता है।

सुनिश्चित करने का एकमात्र तरीका बेंचमार्क चलाना है .. मुझे नहीं पता कि क्यों, लेकिन मेरे Core2 क्वाड सिस्टम में (जिसमें VT-x सपोर्ट, नेस्टेड पेजिंग, ..) है, वास्तव में 4 कोर में से 1 का उपयोग करना बेहतर प्रदर्शन करता है। 2 या अधिक कोर का उपयोग करने से! मैं इसे केवल वीएम के स्टार्ट-अप समय में देखता हूं, लेकिन संकलन बेंचमार्क के दौरान भी।

अन्य हार्डवेयर परिणामों के साथ भिन्न हैं। मेरे पास 8 कोर के साथ एक i7 भी है, और प्रदर्शन वहाँ कोर की संख्या के साथ बहुत बेहतर लगता है (4 का उपयोग खुशी से)।

मेरी टिप: पहले एक नया हार्डवेयर बेंचमार्क करें।


1

मुझे OS के शेड्यूलर पर भरोसा है और जब तक आप वीएम में व्यस्त रहते हैं, तब तक आप यह जानते हैं कि जब तक आप हमेशा एक संभावित निष्क्रिय कोर नहीं चाहते, तब तक आप वीएम को भौतिक कोर के # सेट करें।


1

यह इस बात पर निर्भर करता है कि आप वर्चुअल मशीन के साथ-साथ भौतिक मशीन पर क्या करना चाहते हैं। यदि आपको वर्चुअल मशीन का उपयोग करने की आवश्यकता है जबकि होस्ट ऑपरेटिंग सिस्टम का उपयोग किसी अन्य गतिविधि के लिए किया जा रहा है, तो वीएम के लिए दो प्रोसेसर कोर का उपयोग करना बेहतर हो सकता है, ताकि वीएम पूर्ण लोड के तहत हो, तो मेजबान के पास दो शेष हैं। दूसरी ओर, यदि आप मुख्य रूप से वीएम पर काम कर रहे हैं, तो आप सभी प्रोसेसर कोर का उपयोग कर सकते हैं।

हालाँकि, जब तक अतिथि से सभी चार कोर का उपयोग करने की उम्मीद नहीं की जा सकती, तब तक आप होस्ट ओएस पर काम करना जारी रखते हुए सुरक्षित रूप से इन सभी का उपयोग कर सकते हैं। याद रखें कि जब आप होस्ट ऑपरेटिंग सिस्टम पर चल रहे होते हैं तो आप हमेशा VM प्रक्रिया की प्राथमिकता को समायोजित कर सकते हैं, और सिस्टम तदनुसार लोड को संतुलित करेगा।


यह VirtualBox के साथ मेरे अनुभव पर आधारित है। जैसा कि मैं VMware उत्पादों से परिचित नहीं हूं, मैं गलत हो सकता हूं; यदि हां, तो मैं इस उत्तर को हटा दूंगा।
bwDraco

0

हाँ, मैं यह भी कहूंगा कि यह निर्भर करता है। लेकिन मैं कहूँगा कि मैं क्या करना पसंद करता हूँ। काम में मेरे पास एक क्वाड कोर सीपीयू है। तो मेरी आभासी छवि (win7) के लिए, मैंने दो सीपीयू आवंटित किए हैं। इस तरह, मैं एक ही समय में मेजबान मशीन और वर्चुअल मशीन दोनों का उपयोग कर सकता हूं, और उनमें से प्रत्येक के पास समान सीपीयू संसाधन हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.