वर्चुअलबॉक्स: क्या भौतिक सीपीयू कोर की तुलना में अधिक वर्चुअल सीपीयू कोर को आवंटित करना एक बुरा विचार है


41

जैसा कि मेरे पास हाइपर-थ्रेडिंग सक्षम सीपीयू है, मुझे आश्चर्य है, क्या यह वास्तविक सीपीयू कोर की संख्या की तुलना में अधिक वर्चुअल सीपीयू कोर असाइन करने के लिए एक बुरा विचार है जैसा कि निम्नलिखित चेतावनी से पता चलता है:

वर्चुअलबॉक्स चेतावनी

ट्रांसक्रिप्ट:

होस्ट सिस्टम पर भौतिक सीपीयू की संख्या से अधिक वर्चुअल सीपीयू वर्चुअल मशीन को सौंपा गया है। यह आपके वर्चुअल मशीन के प्रदर्शन को ख़राब करने की संभावना है। कृपया वर्चुअल सीपीयू की संख्या को कम करने पर विचार करें।

क्या कोई इस विषय पर तर्क दे सकता है?

EDIT1:

प्रश्न में सीपीयू इंटेल कोर i7-4700HQ, आर्क इंटेल , सीपीयू बेंचमार्क है

EDIT2:

माना, कोई अप्रचलित HW नहीं है, जैसे HDD (SSD के बजाय), और / या लो रैम (16GB यहाँ, न्यूनतम vm.swappiness, इस VM के लिए 4GB), और इसी तरह।


2
चेतावनी यथोचित सटीक है, और इसे अनदेखा नहीं किया जाना चाहिए जब तक कि वास्तविक समय का प्रदर्शन महत्वहीन न हो, या यदि केवल न्यूनतम (सॉफ़्टवेयर) लोड वर्चुअल मशीन पर डाल दिया जाएगा। देखें कि तार्किक सीपीयू कोर क्या हैं (भौतिक सीपीयू कोर के विपरीत)?
एग्री

जैसा कि युद्धरत कहता है। वीएम में कम सीपीयू के साथ चीजें वास्तव में तेज हो सकती हैं।
रुई एफ रिबेरो

आपको कभी भी लाल रेखा में नहीं जाना चाहिए। 4 वास्तविक HT- सक्षम कोर CPU पर 4 "कोर" का उपयोग करना ठीक है। RAM के लिए, आपके RAM का 50% हिस्सा ऐसा होना चाहिए, भले ही वह हरे रंग का हिस्सा इससे परे हो।
8

वर्चुअलबॉक्स में, "कोर" सभी थ्रेड्स हैं, इसलिए यदि आपके पास 4 कोर और हाइपरथ्रेडिंग के साथ सीपीयू है, तो यह 8 "कोर" जैसा है, इसलिए आप वास्तव में एक वीएम में 4 वर्चुअल कोर तक सेट कर सकते हैं यदि आप इसे अकेले चलाते हैं; यही मैं हर समय करता हूं और यह बहुत अच्छा काम करता है।
सिल्गलड

मुझे क्या साबित करना है? लाल रेखा मेरे लिए 4 से अधिक "कोर" के लिए है, मैं कभी भी परे नहीं जाता, और मैं एक ही समय में 2 वीएम कभी नहीं चलाता। यदि आप VM को सभी CPU देकर अपने PC को क्रैश करने का जोखिम पसंद करते हैं और आप VM के बाहर कुछ भी नहीं करते हैं तो यह ठीक हो सकता है।
सिल्गलाड

जवाबों:


30

हार्डवेयर / ओएस / सॉफ्टवेयर

होस्ट : लिनक्स मिंट 18 दालचीनी 64-बिट (पूरी तरह से अद्यतन); कर्नेल संस्करण 4.4.0-47-जेनेरिक

अतिथि : विंडोज 8.1 प्रो 64-बिट (पूरी तरह से अद्यतन)

प्रोसेसर : इंटेल कोर i7-4700HQ , (6MB कैश, 4 भौतिक कोर या हाइपर-थ्रेडिंग का उपयोग करके 8), CPU बेंचमार्क

VirtualBox : संस्करण 5.1.10 r112026 (Qt5.5.1)

अतिथि परिवर्धन : स्थापित और अद्यतित

बेंचमार्क टूल # 1 : WinRAR संस्करण 5.40 अंतिम 64-बिट

बेंचमार्क टूल # 2 : VeraCrypt संस्करण 1.19 अंतिम 64-बिट


तैयारी

दोनों मामलों में मैंने सीपीयू, रैम तक बूट के बाद इंतजार किया, डिस्क-ड्राइव शून्य-बिंदु हिट के पास स्थिर है।


तरीका

  1. दो समान वाले मूल वर्चुअल मशीन का क्लोनिंग।
  2. मेरे पास दूसरे पास के लिए है, क्योंकि रिबूट अक्षम होने के बाद एंटीवायरस ने इस जवाब के नीचे बताया और बीटा से अंतिम संस्करण तक दोनों मामलों में WinRAR को अपडेट किया।
  3. मैंने पहले की तरह ही तैयारी की है।
  4. आभासी मशीन अग्रभूमि में चलती थी, बिना किसी अन्य सीपीयू समय के भूखे आवेदन के चलने के कारण, मैंने अक्षम कर दिया था कि मैं परीक्षण के उद्देश्य से क्या प्रभावित कर सकता था।
  5. सिस्टम के अंदर या बाहर संभावित कैशिंग को शामिल करने के लिए, मैंने उसी परीक्षा को दो बार परिणामी रूप से चलाया। लाभ लगभग कोई भी नहीं है।

परिणाम

WinRAR

  1. 4 कोर => 7.5 मिनट ( छोटा समय बेहतर है)

    4 कोर के साथ WinRAR सक्षम

    4 कोर के साथ WinRAR सक्षम, 1.5GiB 7.5 मिनट में संसाधित हुआ ।

  2. 8 कोर => 4.5 मिनट ( कम समय बेहतर है)

    8 कोर के साथ WinRAR सक्षम

    8 कोर के साथ WinRAR सक्षम, 1.5GiB 4.5 मिनट में संसाधित हुआ ।


VeraCrypt

  1. 4 कोर => गति 2.6 GiB / s ( उच्च गति बेहतर है)

    4 कोर के साथ VeraCrypt सक्षम

    4 कोर के साथ VeraCrypt सक्षम, HW-त्वरित एईएस (एईएस-एनआई) की गति 2.6 गीगा / एस।

  2. 8 कोर => गति 3.9 GiB / s ( उच्च गति बेहतर है)

    8 कोर के साथ VeraCrypt सक्षम

    8 कोर के साथ VeraCrypt सक्षम, HW-त्वरित एईएस (एईएस-एनआई) की गति 3.9 GiB / s।


निष्कर्ष

मैं आवश्यकतानुसार कई परीक्षण चला सकता था। लेकिन मुझे लगता है, अगर ये दोनों, जिनमें से एक बल्कि जटिल संपीड़न परीक्षण है, दूसरा बल्कि जटिल एन्क्रिप्शन परीक्षणों का एक सेट है, तो बिंदु क्या होगा।

दोनों बेंचमार्क एक चिह्नित अंतर दिखाते हैं। मुझे विश्वास करने का कोई कारण नहीं दिखता है, कि उनके परिणाम गलत हैं, जैसा कि मैंने एक कठोर तैयारी और विधि का पालन किया है, इसके अलावा RAM में I / O अड़चन को दूर करने के लिए ये परीक्षण किए गए हैं। मेरे दृष्टिकोण से, प्रश्न में उल्लिखित चेतावनी कुछ शर्तों पर लागू हो सकती है, लेकिन निश्चित रूप से उन सभी में नहीं। आपके साथ इन बहुत ही उल्लेखनीय परिणामों को साझा करने के बाद, आपके लिए मेरे साथ सहमत होने के लिए निश्चित है, कि इस चेतावनी को आधुनिक सीपीयू पर इतनी गंभीरता से नहीं लिया जाना चाहिए जिसमें नवीनतम वर्चुअलबॉक्स संस्करण के साथ हाइपर-थ्रेडिंग की विशेषता हो । सुनिश्चित करने के लिए एक बात: मुझे इस सेटिंग को स्थायी रूप से लागू करने का निर्णय लेने से पहले, शब्द के लिए मुझे न लें और अपनी शर्तों के तहत इसका परीक्षण करें।


क्या आपने इसे उसी वीएम पर चला दिया जिसमें कोर बदल गए, या दो अलग-अलग (लेकिन समान) वीएम? यदि वही वीएम, क्या आपने अतिथि ओएस कैशिंग एल्गोरिदम के संभावित प्रभाव को बाहर करने के लिए फिर से दूसरे अनुक्रम में प्रयास किया?
वाइल्डकार्ड

मज़े के लिए एक वास्तविक सीपीयू बर्न टेस्ट चलाने की कोशिश करें।
सिलेंडरलाड

प्राइम 95 जैसी कोई चीज कम से कम एक घंटे के लिए। और उसी समय होस्ट पर वेब ब्राउज़ करने का प्रयास करें। जैसा कि मैंने कहा, यह ठीक है यदि आप मेजबान पर कुछ नहीं करते हैं या एक समय में एक से अधिक वीएम नहीं चलाते हैं। यदि यह खराब था, तो सीमा को चेतावनी के बजाय वर्चुअलबॉक्स में लागू किया गया था।
सिल्गलड

एक और बात आप कोशिश कर सकते हैं लेकिन यह कठिन हो सकता है। स्क्रैच वीएम से एक जेंटू या लिनक्स स्थापित करें, और जांच लें कि जब यह सघन रूप से संकलित हो रहा है तो चीजें कैसे चलती हैं। या VM में क्रोमियम बनाने की कोशिश करें।
सिल्गलड

@Vlastimil पूरी तरह से सहमत हैं। मेरे मामले में मैं C ++ संकलन (जो एक सीपीयू बाउंड कार्य है) के लिए वीएम का उपयोग करता हूं और एकमात्र कारण मुझे 16-कोर सीपीयू मिला है जो तेजी से संकलित करने में सक्षम था। यह चेतावनी उचित स्पष्टीकरण के बिना पूरी तरह से बकवास है और इस गलत निष्कर्ष की ओर ले जाती है जैसे "चीजें वास्तव में वीएम में कम सीपीयू के साथ तेज हो सकती हैं"
पावेल पी

16

एक ओएस डिजाइनर के रूप में मैं पूरी तरह से माप के परिणाम से सहमत हूं। विषय वस्तु के बारे में अन्यत्र उत्पन्न बकवास की मात्रा अविश्वसनीय है।

संख्या के समानांतर धागे / प्रक्रियाओं के रूप में तार्किक कोर की संख्या देखें जो कि HW द्वारा निष्पादित की जा सकती हैं। कि एक CPU कोर के रजिस्टरों और अनुदेश संकेत जैसे डुप्लिकेट द्वारा प्राप्त किया जाता है। सीपीयू कोर अब खुद तय करता है कि किस थ्रेड (इंस्ट्रक्टर पॉइंटर) को इस्तेमाल करना है। यह दूसरे धागे का उपयोग करने का निर्णय करेगा क्योंकि वर्तमान धागे का निर्देश कैश में उपलब्ध नहीं है और उदाहरण के लिए मेमोरी या एल 3 कैश से प्राप्त करने की आवश्यकता है। यह तंत्र निर्देशों / सेकंड या सीपीयू प्रदर्शन में 10% -30% संभावित सुधार पैदा करेगा।

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

वर्चुअलबॉक्स केवल उन थ्रेड्स की संख्या को सीमित करता है जो प्रत्येक वर्चुअल मशीन (वीएम) के समानांतर चल सकते हैं, लेकिन मेजबान प्रक्रिया अनुसूचक तार्किक प्रोसेसर (एस) और इस प्रकार भौतिक प्रोसेसर (एस) को बदल देगा, जिस पर वीएम प्रक्रिया गतिशील रूप से चलती है। यदि आप एक VM पर एक उच्च लोड अनुप्रयोग चलाते हैं, तो अतिरिक्त तार्किक कोर आपको 10% -30% का समान लाभ देंगे। लोड एक एकल बहु-थ्रेडेड अनुप्रयोग या विभिन्न अनुप्रयोगों का एक सेट हो सकता है।

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

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


0

मेरा सबसे अच्छा दो सेंट सभी कोर / धागे का उपयोग कभी नहीं करना है, बस एक या दो मेजबान के लिए।

तो आपके मामले में, एक छह कोर अतिथि को देना है, कभी भी एक ईगथ कोर नहीं है (क्योंकि आपके पास मेजबान पर केवल 8 धागे हैं)।

यदि उपलब्ध थ्रेड्स की संख्या (कोर के साथ भ्रमित नहीं होना है) मेजबान पर है:

  • यदि <2, तो बेहतर है कि आभासी मशीनों का उपयोग न करें
  • यदि 2, मोनो-कोर मोड पर वर्चुअल मशीन का उपयोग करते हैं या जोखिम लेते हैं और दोहरे कोर अतिथि का उपयोग करते हैं
  • यदि> 2, तो सूत्र का बेहतर उपयोग करें

दो से अधिक सूत्र के लिए मैं इस सूत्र का उपयोग करता हूं:

  • एन = मेजबान के लिए धागे की संख्या
  • M = समवर्ती आभासी मशीनों की संख्या जिन्हें मैं चलाना चाहता हूं (समान संतुलन को मानते हुए, प्रत्येक अतिथि के लिए समान अतिथि कोर)
  • फॉर्मूला = (एन -1) / एम यदि होस्ट में केवल 4 धागे या कम हैं
  • फॉर्मूला = (एन -2) / एम यदि होस्ट में 4 से अधिक धागे हैं

मेरा अनुभव मुझे बताता है कि इस तरह की सूत्र सीमा को पार नहीं करने के लिए यह बहुत चिकनी और कम जोखिम भरा है।

चेतावनी: अतिथि को चलाने के दौरान अतिथि कोर की संख्या को बदलने की अनुमति नहीं है, लेकिन यह सीपीयू के उपयोग को 100% से घटाकर 75% या 50% करने की अनुमति है, अतिथि से कम असफल नहीं हो सकता है।

इसलिए कभी-कभी मैं 8 थ्रेड होस्ट पर दो मेहमानों को 6 छह कोर (सूत्र की संख्या जैसे कि दो अतिथि के बजाय केवल एक अतिथि) देता हूं, लेकिन उन्हें सीपीयू की गति के 50% तक सीमित किया जाता है (इसलिए दोनों अतिथि 1 का उपयोग कर सकते हैं) / 2 समय के सीपीयू), लेकिन केवल जब मैं जानता हूं कि मेहमान उन ऐप्स को चलाएंगे जिनमें समानांतर का एक से अधिक अनुपात होता है, जैसे कि छवि की तुलना / संयुक्त, आदि।


1
आपने स्वयं ये सूत्र बनाए थे? या आप उद्धरण जोड़ सकते हैं?
LinuxSecurityFreak
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.