क्या VirtualBox को और अधिक "कोर" आवंटित करने के लिए कोई वास्तविक लाभ हैं?


40

मेरे पास एक वर्चुअलबॉक्स के साथ 2.8 क्वाड कोर i7 है। मेरे पास एक अतिथि मशीन के लिए 4 कोर तक असाइन करने का विकल्प है, लेकिन मैं केवल दो कर रहा हूं। एक अतिथि को अधिक कोर असाइन करने के फायदे / नुकसान क्या हैं? BTW, मैं अभी भी दो अतिथि OS (Win 7 और Ubuntu) चलाते समय अल्ट्रा सेटिंग्स पर StarCraft 2 को खेलने में सक्षम हूं, और बीएफबीसी 2 (मेरे तनाव परीक्षक) के साथ भी ऐसा ही होता है। कोर के भार को असमान भार के लिए i7 कैसे प्रतिक्रिया करता है?

जवाबों:


62

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

4 सीपीयू के साथ मेजबान, अतिथि को 1 सीपीयू सौंपा गया

  • मेजबान मशीन 4 भौतिक कोर चल रही है
  • VM के भीतर क्लाइंट OS को 1 कोर सौंपा गया है

इस स्थिति में अतिथि OS केवल एक कोर का उपयोग करने में सक्षम होगा। इसलिए यदि आप एक बहु-थ्रेडेड एप्लिकेशन चलाते हैं जो कई कोर पर अच्छी तरह से स्केल करता है तो यह अभी भी केवल एक कोर पर चलेगा। इसलिए अतिथि ओएस पर सभी थ्रेड्स को एक भौतिक कोर साझा करना होगा।

इस सेटअप में एक अतिथि ओएस चलाने से जो पूरी तरह से सीपीयू को लोड करता है, उसे ~ 25% (मेजबान पर लोड 4 कोर में से एक) के एक मेजबान ओएस सीपीयू लोड मिलेगा।

बेशक, आप अभी भी अपने होस्ट ओएस के भीतर चल रहे सीपीयू-उपभोग कार्य कर सकते हैं और शेष 3 कोर का उपयोग कर सकते हैं।

4 सीपीयू के साथ मेजबान, अतिथि को 4 सीपीयू सौंपे गए

  • मेजबान मशीन 4 भौतिक कोर चल रही है
  • VM के भीतर क्लाइंट OS को 4 कोर सौंपे गए

इस स्थिति में आप अतिथि VM के भीतर बहु-थ्रेडिंग बहु-थ्रेडिंग एप्लिकेशन चला सकते हैं जो सभी 4 वर्चुअल सीपीयू का पूर्ण उपयोग कर सकते हैं। वर्चुअलबॉक्स वीएम के भीतर निर्धारित कार्यों को संसाधित करने के लिए 4 भौतिक कोर का उपयोग करेगा और इसलिए आपका होस्ट सीपीयू लोड अधिकतम 100% उपयोग तक पहुंच सकता है।

तो आपको कौन सी सेटिंग चुननी चाहिए?

इस सवाल का जवाब बहुत कुछ इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं। कुछ मामलों में सभी कोर को एक वीएम को सौंपना उपयोगी हो सकता है या यहां तक ​​कि कई वीएम को चलाने के लिए हर एक में पूरी सीपीयू सौंपी जा सकती है। ऐसे मामलों में एक वीएम मेजबान की पूरी प्रसंस्करण शक्ति का पूरा उपयोग कर सकता है। यदि अधिक सीपीयू वास्तव में भौतिक रूप से मौजूद वीएम को सौंपे जाते हैं तो वीएम विभिन्न वीएम पर लोड से प्रभावित होंगे। इसे रोकने के लिए आप कुछ कोर को विशिष्ट वीएम को समर्पित कर सकते हैं। उदाहरण के लिए, 2 CPU के साथ 2 VMs को चलाने पर प्रत्येक को 4 कोर नोड पर असाइन किया जा सकता है, जिससे प्रत्येक VM को 2 समर्पित CPU मिल सकते हैं (यह मानते हुए कि होस्ट OS द्वारा लगाया गया कोई लोड नहीं है जो प्रोसेसिंग-पावर का एक हिस्सा भी लेता है)।

क्या वीएम को सभी कोर आवंटित करने के लिए मेरे मेजबान पर नकारात्मक प्रभाव पड़ता है?

फिर से यह सॉफ्टवेयर रन पर निर्भर करता है। यदि आप एक VM चलाते हैं जो निष्क्रिय है (कोई सीपीयू-गहन कार्यक्रम नहीं चलता है) तो इस VM द्वारा लगाया गया लोड 0% के पास होगा। तुम भी समानांतर में 10 VMs चला सकते हैं और अभी भी एक मेजबान CPU लोड 0% के करीब अनुभव कर रहे हैं अगर सभी VMs निष्क्रिय हैं।

सीपीयू असमान लोड पर कैसे व्यवहार करता है?

खैर, सीपीयू लोड वितरण भारी रूप से ओएस-विशिष्ट अंतर्निहित घटक पर निर्भर करता है जिसे अनुसूचक कहा जाता है। Windows XP के लिए शेड्यूलर ने सभी CPU कोर को राउंड-रॉबिन लोड करने का प्रयास किया। इसलिए क्वाड-कोर सीपीयू पर पूर्ण भार के साथ एकल-थ्रेडेड कार्य चलाने से प्रत्येक कोर पर ~ 25% भार उत्पन्न होता।
दुर्भाग्य से यह आधुनिक सीपीयू बिजली प्रबंधन के लिए बुरा साबित हुआ है। आधुनिक प्रणालियों के लिए यह एक फायदा भी है अगर एक सिंगल कोर दूसरे कोर से पहले ही 100% तक लोड हो जाता है। कारण यह है कि जब तक एक कोर को पूरी तरह से उपयोग करने के लिए पर्याप्त भार नहीं है तब तक अन्य कोर ऊर्जा को बचाने और गर्मी लंपटता को कम करने के लिए गहरी-नींद मोड में रह सकते हैं।

इंटेल कोर आई-सीरीज़ और नए एएमडी (बुलडोज़र) जैसे कुछ सीपीयू के लिए यह और भी दिलचस्प है क्योंकि केवल कोर के एक उपसमुच्चय का उपयोग किया जाता है अप्रयुक्त को बंद कर दिया जाता है। यह CPU की बिजली की खपत को कम करता है। दोनों (इंटेल और एएमडी) थर्मल और बिजली की खपत के बजट का उपयोग करना शुरू करते हैं, फिर कोर को ओवरक्लॉक करने के लिए जो सक्रिय हैं। तो यह एकल-पिरोया अनुप्रयोगों को दे सकता है (जो समानांतर में एक कार्य पर काम करने के लिए एकाधिक कोर को वितरित नहीं किया जा सकता)। हालाँकि जब सभी कोर सक्रिय होते हैं तो इनमें से अधिकांश "बूस्ट" प्रौद्योगिकियां प्रसंस्करण शक्ति पर केवल एक छोटा प्रभाव डालती हैं क्योंकि "सभी कोर सक्रिय" स्थिति बिल्कुल सीपीयू के लिए डिज़ाइन की गई स्थिति है।

तो इसका उत्तर यह है कि आपका कोर i7 बहुत अच्छी तरह से सिंगल कोर पर असमान भार को संभालता है और एकल-थ्रेडिंग अनुप्रयोगों के लिए एक प्रदर्शन को बढ़ावा भी दे सकता है। हालाँकि, यह बढ़ावा कुछ प्रतिशत की सीमा के भीतर है, जबकि वास्तव में बहु-थ्रेडेड अनुप्रयोग जो कई सीपीयू कोर पर लोड वितरित कर सकते हैं, उन्हें कारकों द्वारा बढ़ाया जा सकता है (दोहरे कोर पर x2, क्वाड-कोर पर 4x ...) । इसलिए मल्टी-थ्रेडिंग हमेशा CPU बूस्टिंग के साथ-साथ क्लॉक बूस्टिंग के साथ संयुक्त CPU पावर के संदर्भ में अधिक शक्ति प्रदान करता है।


1
वाह, यह वास्तव में मुझे मल्टी-कोर व्यवहार को समझने में मदद करता है, न कि यह कैसे vms को प्रभावित करता है।
दान एलन

2
मैं अपने Ubuntu 12.04 LTS क्लाइंट के साथ वास्तव में मेरी मैकबुक एयर w / 2 gh i7 दोहरे कोर पर धीमी गति से चलने में समस्या आ रही थी। मैंने ग्राहक की सेटिंग को दो cpus में बदल दिया और अब यह धुंधला हो गया। मैं अडॉप्टिमल सेटिंग्स के चेतावनी संदेश को नजरअंदाज कर रहा हूं।
माइक ग्राफ

यह बहुत जटिल है क्योंकि VirtualBox कोर के प्रोसेसर का उपयोग नहीं करता है और हर किसी के पास 1 प्रोसेसर हो सकता है 2 .. भले ही यह क्वाड-कोर या ऑक्टा-कोर हो, जब तक कि वे कोरस प्रोसेसर को नहीं कहते हैं?
SSpoke

0

मैंने VB साइट पर मैनुअल में देरी नहीं की है, लेकिन मुझे लगता है कि एक अतिथि मशीन को कोर आवंटित करना अतिथि ओएस को कई कोर देखने की अनुमति देगा और इस प्रकार उन अनुप्रयोगों को अनुमति दे सकता है जो अतिरिक्त कोर के अतिरिक्त गति का लाभ उठा सकते हैं / शक्ति / दक्षता, यह मेजबान ओएस के लिए के रूप में ही होगा।

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