तो वास्तव में, वर्चुअलाइजेशन का ओवरहेड क्या है और मुझे कब चिंतित होना चाहिए?


16

मैं समझने के लिए अंगूठे के अच्छे नियमों की खोज कर रहा हूं जब मशीन को वर्चुअलाइज नहीं करना है।

उदाहरण के लिए, मुझे पता है कि लगभग 100% उपयोग के साथ पूरी तरह से सीपीयू-बाउंड प्रक्रिया शायद वर्चुअलाइज करने के लिए एक अच्छा विचार नहीं है, लेकिन क्या किसी चीज को चलाने में कोई समझदारी है जो सीपीयू को ज्यादातर "पर्याप्त मात्रा" (40 का कहना है) का लाभ उठाता है या 50%)?

एक अन्य उदाहरण: यदि मैं 1000 मशीनों का वर्चुअलाइजेशन करता हूं, भले ही वे केवल हल्के या मध्यम उपयोग किए जाते हों, तो शायद यह बुरा होगा कि केवल 4 कोर वाले मेजबान पर ही चला जाए।

क्या मेजबान संसाधनों की तुलना में मशीन वर्कलोड या सरासर संख्या के आधार पर वर्चुअलाइजेशन के बारे में कोई संकेत दे सकता है?

मैं आमतौर पर वर्चुअलबॉक्स या VMWare का उपयोग करते हुए विंडोज होस्ट पर वर्चुअलाइज करता हूं, लेकिन मैं यह मान रहा हूं कि यह एक सामान्य प्रश्न है।


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

लेकिन कुछ बिंदु पर "वीएम निष्पादन" की समय-सारणी अनावश्यक ओवरहेड की तरह लगती है, जब पहले से ही एक वीएम के भीतर धागे शेड्यूल करना काफी मुश्किल होता है, क्या मैं सही हूं?

जवाबों:


13

डिस्क सबसिस्टम। यह आमतौर पर कम से कम साझा करने योग्य संसाधन है। स्मृति, ज़ाहिर है, लेकिन यह स्पष्ट है।

डिस्क सबसिस्टम सीमाएं दोनों तरीकों से काम करती हैं। यदि कोई सिस्टम बहुत सारे डिस्क I / O का उपयोग करता है तो अन्य मेहमान धीमा हो जाते हैं। यदि यह अतिथि उत्पादन में है तो इसे वेब प्रश्नों की तीव्र प्रतिक्रिया की आवश्यकता है। यह बहुत निराशाजनक हो सकता है और यह भी एक बड़ा कारण है कि वर्चुअल हार्डवेयर किराए पर क्यों नहीं लिया जाए। आप समर्पित डिस्क का उपयोग करके इस समस्या को कम कर सकते हैं।

मेहमानों में केवल 512 एमबी मेमोरी का उपयोग करना मेजबान पर सभी डिस्क कैश डालता है। और यह मेहमानों के बीच समान रूप से विभाजित नहीं है।

CPU IO के बारे में चिंता न करें। इस तरह वर्चुअलाइजेशन बहुत कुशल है, अक्सर एक ही सिस्टम पर चलने वाली कई प्रक्रियाओं से संबंधित है। मैं शायद ही कभी सीपीयू पर 100% चल रहे मल्टी-एक्सोन सिस्टम देखता हूं।

संपादित करें: टाइपो


3
भारी डिस्क I / O आवश्यकताओं का वर्चुअलाइजेशन न करने का # 1 कारण होगा - यह वर्चुअलाइजेशन पेनल्टीज़ द्वारा सबसे कठिन हिट किया जाने वाला संसाधन है, कोडिंगहोरर
जेफ एटवुड

धन्यवाद - दोनों टिप्पणियाँ सहायक हैं। अगर कोई जानता है कि हाई डिस्क का उपयोग वर्चुअलाइज करने के लिए समस्याग्रस्त है तो बस सोचें? वर्चुअलाइजेशन इंजीनियर उस अपेक्षाकृत बुनियादी मुद्दे की अनदेखी क्यों करेंगे? या यह सीपीयू वर्चुअलाइजेशन की तुलना में सिर्फ मौलिक रूप से अधिक जटिल है?
केविस्टा

नोट - @ जेफ, मैं आपकी 2006 की ब्लॉग पोस्ट पढ़ रहा हूं और मैं मानता हूं कि यह बताएगा कि बेहतर (यानी, स्पिंडल आरक्षण) क्यों है, लेकिन वर्चुअलाइजेशन डिजाइनरों / कार्यान्वयनकर्ताओं के लिए मेरा प्रश्न समान है - क्या यह वर्चुअलाइजेशन के लिए मौलिक रूप से समस्याग्रस्त है एक तरह से CPU वर्चुअलाइजेशन नहीं है?
kvista

3
वहाँ केवल एक हार्डडिस्क कर सकते हैं बहुत से लोग चाहते हैं। 5ms हार्डडिस्क के लिए यह 200 सेकंड का समय होगा। और, एक सामान्य आधार पर, जब कोई ओएस फाइलों को स्कैन करता है या निर्देशिकाओं को स्कैन करता है तो यह हमेशा डिस्क io के 100% का उपयोग करता है। इस समय के दौरान डिस्क से सभी छोटे अनुरोधों में देरी हो रही है, और उनमें से बहुत कुछ है। इसके अलावा फाइलसिस्टम बफ़र्स कॉपी की वजह से बर्बाद हो जाते हैं। कोई कह सकता है कि काम करने वाले ओएस की हमारी अवधारणा एक बेकार हार्डड्राइव पर निर्भर करती है।
एंट्टी रयोटोला

1
धन्यवाद। मुझे लगता है कि यह देखना दिलचस्प होगा कि एसएसडी इस समीकरण को बदलते हैं या नहीं। लेकिन अब हम चर्चा मोड में बहुत दूर जा रहे हैं। मैं इसे प्राप्त करता हूं - सभी को धन्यवाद।
किवता

15

चीजें जो मैं एक वीएम में कभी नहीं डालूंगा:

  • कुछ भी जो विशिष्ट हार्डवेयर का उपयोग करता है जिसे वर्चुअलाइज्ड नहीं किया जा सकता है: आमतौर पर ग्राफिक्स, काफी कुछ हार्डवेयर सुरक्षा मॉड्यूल, अनुकूलित ड्राइवरों के साथ कुछ भी (विशेष उद्देश्य नेटवर्क ड्राइवर, उदाहरण के लिए)।

  • लाइसेंस मुद्दों के साथ सिस्टम। कुछ सॉफ़्टवेयर भौतिक सीपीयू या कोर के लिए शुल्क लेते हैं, चाहे आपने वीएम को कितना भी आवंटित किया हो। यदि आप एक 32-कोर सर्वर पर एक वीएम में चल रहे एक कोर के लिए लाइसेंस प्राप्त सॉफ्टवेयर था, तो आपको एक ऑडिट में मारा जाएगा।

चीजें जो मैं एक वीएम में डालने को हतोत्साहित करेगा:

  • सॉफ्टवेयर जो पहले से ही कमोडिटी हार्डवेयर में सभी संसाधनों का उपयोग करने का प्रयास करता है। हडूप जैसे "बड़े डेटा" प्रयास के हिस्से के रूप में काम करने वाली मशीनें आमतौर पर नंगे धातु पर चलने के लिए डिज़ाइन की जाती हैं।

  • संसाधनों का उपयोग करने के लिए जो कुछ भी बारीक किया जाना है। जब आप वास्तव में एक डेटाबेस को ट्यून करना शुरू करते हैं, तो संसाधनों के लिए संघर्ष करने वाले वीएम वास्तव में काम में एक रिंच फेंकने वाले हैं।

  • जो कुछ भी पहले से ही एक बड़ी अड़चन है। यह पहले से ही अपने आप से अच्छा नहीं खेलता, यह दूसरों के साथ अच्छा खेलने की संभावना नहीं रखेगा।

कुछ चीजें हैं जो वीएम में डालने के लिए बहुत बढ़िया हैं:

  • जो कुछ भी काफी समय बेकार में खर्च करता है। मेल और डीएनएस जैसी यूटिलिटी होस्ट के पास समर्पित सर्वरों को वारंट करने के लिए आधुनिक हार्डवेयर पर पर्याप्त लोड उत्पन्न करने में मुश्किल समय होता है।

  • अनुप्रयोग जो अपने दम पर अच्छी तरह से (या आसानी से) स्केल नहीं करते हैं। लिगेसी कोड काफी बार इस श्रेणी में आता है। यदि ऐप सर्वर का विस्तार करने के लिए विस्तार नहीं करेगा, तो बहुत कम वर्चुअल सर्वर का उपयोग करें।

  • परियोजनाएँ / अनुप्रयोग जो छोटे लेकिन शुरू होते हैं। वीएम पर संसाधनों को जोड़ना बहुत आसान है (साथ ही नए, बड़े हार्डवेयर के लिए कदम) नंगे धातु पर शुरू होने के विपरीत।

इसके अलावा, मुझे यकीन नहीं है कि यदि आप एक ही मेजबान पर बड़ी संख्या में VMs लगाने के बारे में अतिशयोक्ति कर रहे हैं, लेकिन यदि आप एक बड़े VM: HW अनुपात के लिए प्रयास कर रहे हैं, तो आप इसके बजाय ESX, Xen, KVM पर विचार करना चाह सकते हैं। आप Windows पर VMware या वर्चुअलबॉक्स का उपयोग करने की तुलना में बहुत बेहतर किराया करेंगे।


1
+1 बहुत उपयोगी संगठित टिप्पणियाँ - धन्यवाद!
केविस्टा

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

1
वीएमवेयर के लिए, आप यहां शुरू कर सकते हैं: vmware.com/technology/whyvmware/calculator
कैकेमॉक्स

संदर्भ के लिए: ऊपर दिए गए VMWare लिंक के अनुसार आप प्रति CPU 30 VMs तक कॉन्फ़िगर कर सकते हैं। डिफ़ॉल्ट 6 VMs प्रति CPU है।
एलेक्स युरशा

4

वर्चुअलाइजेशन प्रदर्शन के दो बिंदु हैं।

  • साझा अड़चन
  • अनुकरण

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

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


1
मैंने देखा कि संख्याएँ 96-97% पर सीपीयू, 70-90% पर नेटवर्क, और 40-70% पर डिस्क (नंगे धातु की)
जेफ एटवुड

1
अंगूठे की टिप्पणी का +1 नियम सहायक है।
किवता

2

अंततः, किसी भी उच्च प्रदर्शन लोड को वर्चुअलाइज्ड नहीं किया जाना चाहिए। वर्चुअलाइजेशन के प्रदर्शन ओवरहैड गैर-तुच्छ हैं। मेरे परीक्षणों के परिणाम यहाँ देखें:

http://www.altechnative.net/2012/08/04/virtual-performance-part-1-vmware/

OTOH, यदि आप ऐसी कई मशीनों को समेकित करना चाह रहे हैं जो हर समय निष्क्रिय रहती हैं, तो वर्चुअलाइजेशन ही आगे का रास्ता है।


1

एंटटीआर से अच्छा जवाब।

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


तारांकन एक ऐसा ही अनुप्रयोग है। जब आप कल्पना करते हैं तो आपको कॉन्फ्रेंस कॉल के दौरान कुछ बहुत ही मजेदार चीजें मिलती हैं।
15

डेटा रिकॉर्डिंग के लिए मुझे घड़ी की स्थिरता के साथ समस्या है;) धन्यवाद स्वर्ग मुझे डेटा फीड से एक विश्वसनीय टाइमस्टैम्प मिलता है, लेकिन सिस्टम घड़ी स्थिर नहीं होने पर यह पता लगाना कि नेटवर्क की समस्याएं हैं या नहीं।
टॉमटॉम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.