vSphere शिक्षा - * * बहुत * RAM के साथ VMs को कॉन्फ़िगर करने के डाउनसाइड क्या हैं?


57

VMware स्मृति प्रबंधन एक मुश्किल संतुलन अधिनियम लगता है। क्लस्टर रैम, रिसोर्स पूल, वीएमवेयर की प्रबंधन तकनीकों (टीपीएस, बैलूनिंग, होस्ट स्वैपिंग) के साथ, इन-गेस्ट रैम उपयोग, स्वैपिंग, आरक्षण, शेयर और सीमाएँ, बहुत सारे वैरिएबल हैं।

मैं ऐसी स्थिति में हूं जहां ग्राहक समर्पित vSphere क्लस्टर संसाधनों का उपयोग कर रहे हैं। हालाँकि, वे वर्चुअल मशीनों को कॉन्फ़िगर कर रहे हैं जैसे कि वे भौतिक हार्डवेयर पर थे। बदले में, इसका मतलब है कि मानक वीएम बिल्ड में 4 वीसीपीयू और 16 जीबी या अधिक रैम हो सकते हैं। मैं छोटी (1 वीसीपीयू, न्यूनतम रैम) शुरू करने के स्कूल से आता हूं, वास्तविक दुनिया के उपयोग की जांच कर रहा हूं और आवश्यकतानुसार समायोजित कर रहा हूं। दुर्भाग्य से, कई विक्रेता आवश्यकताएं और वर्चुअलाइजेशन से अपरिचित लोग आवश्यकता से अधिक संसाधनों का अनुरोध करते हैं ... मुझे इस निर्णय के प्रभाव को बढ़ाने में रुचि है।


"समस्या" क्लस्टर से कुछ उदाहरण।

संसाधन पूल सारांश - लगभग 4: 1 दिखता है। गुब्बारे की उच्च मात्रा पर ध्यान दें। यहाँ छवि विवरण दर्ज करें

संसाधन आवंटन - सबसे खराब स्थिति आवंटन कॉलम से पता चलता है कि इन वीएम को विवश परिस्थितियों में अपने कॉन्फ़िगर किए गए रैम के 50% से कम तक पहुंच होगी। यहाँ छवि विवरण दर्ज करें

ऊपर सूचीबद्ध में शीर्ष वीएम का वास्तविक समय मेमोरी उपयोग ग्राफ। 4 वीसीपीयू और 64 जीबी रैम आवंटित। यह 9GB उपयोग के तहत औसत है। यहाँ छवि विवरण दर्ज करें

उसी वीएम का सारांश यहाँ छवि विवरण दर्ज करें


  • ओवरस्मिटिंग और ओवरकॉन्फिगरिंग संसाधनों (विशेष रूप से रैम) के vsphere वातावरण में डाउनसाइड क्या हैं?

  • यह मानते हुए कि वीएम कम रैम में चल सकते हैं, क्या यह कहना उचित है कि वर्चुअल मशीनों को अधिक रैम के साथ कॉन्फ़िगर करने के लिए ओवरहेड है, जो वास्तव में उनकी आवश्यकता है?

  • प्रतिवाद क्या है: "अगर एक वीएम में 16 जीबी रैम आवंटित है, लेकिन केवल 4 जीबी का उपयोग करता है, तो समस्या क्या है? "? जैसे कि ग्राहकों को शिक्षित करने की आवश्यकता है कि वीएम भौतिक हार्डवेयर के समान नहीं हैं?

  • मीटर रैम के उपयोग के लिए क्या विशिष्ट मेट्रिक का उपयोग किया जाना चाहिए। "सक्रिय" बनाम समय की चोटियों पर नज़र रखना? "उपभोक्ता" देख रहे हैं?


अपडेट: मैंने इस वातावरण को प्रोफाइल करने और ऊपर सूचीबद्ध क्लस्टर आंकड़ों पर कुछ विवरण प्राप्त करने के लिए vCenter के संचालन प्रबंधक का उपयोग किया । हालांकि चीजें निश्चित रूप से overcommitted हैं, VM वास्तव में अनावश्यक रैम के साथ इतने अधिक संपर्क में हैं कि वास्तविक (छोटे) मेमोरी पदचिह्न क्लस्टर / होस्ट स्तर पर कोई स्मृति विवाद नहीं दिखाता है ...

मेरा उपाय यह है कि VMs वास्तव में ओएस-स्तरीय कैशिंग के लिए थोड़ा सा बफर के साथ सही आकार का होना चाहिए। अज्ञानता या विक्रेता "आवश्यकताओं" से बाहर निकलने के कारण यहां प्रस्तुत स्थिति पैदा होती है। मेमोरी बैलूनिंग हर मामले में खराब लगती है, क्योंकि इसमें परफॉर्मेंस इफेक्ट होता है, इसलिए राइट-सिजिंग से इसे रोकने में मदद मिल सकती है।

अपडेट 2: इनमें से कुछ वीएम दुर्घटनाग्रस्त होने लगे हैं:

kernel:BUG: soft lockup - CPU#1 stuck for 71s! 

वीएमवेयर इसे भारी मेमोरी ओवरकोमिटमेंट के लक्षण के रूप में वर्णित करता है । इसलिए मुझे लगता है कि इस सवाल का जवाब है।

यहाँ छवि विवरण दर्ज करें


vCops "Oversized Virtual Machines" की रिपोर्ट ... यहाँ छवि विवरण दर्ज करें

vCops "पुनर्प्राप्त करने योग्य अपशिष्ट" ग्राफ़ ...

यहाँ छवि विवरण दर्ज करें

जवाबों:


45

vSphere का मेमोरी मैनेजमेंट काफी सभ्य है, हालांकि इस्तेमाल की जाने वाली शर्तें अक्सर बहुत भ्रम पैदा करती हैं।

सामान्य तौर पर, मेमोरी ओवर-कम से बचना चाहिए क्योंकि यह इस प्रकार की समस्या पैदा करता है। हालांकि, ऐसे समय होते हैं जब इसे टाला नहीं जा सकता है, इसलिए पूर्वाभास का पूर्वाभास हो जाता है!

VSphere वातावरण में ओवरकमिटिंग और ओवर-कॉन्फिगरिंग संसाधनों (विशेष रूप से RAM) के डाउनसाइड क्या हैं?

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

गुब्बारे के लिए, vSphere एक चुने हुए VM के भीतर RAM का एक "गुब्बारा" फुलाएगा, फिर उस गुब्बारे को RAM को उस अतिथि को दें जिसे इसकी आवश्यकता है। यह वास्तव में "खराब" नहीं है - वीएम एक-दूसरे की रैम चुरा रहे हैं, इसलिए कोई डिस्क स्वैपिंग नहीं चल रही है - लेकिन यह गलत तरीके से चेतावनी और तिरछी मेट्रिक्स को जन्म दे सकता है अगर ये वीएम की रैम के उपयोग का विश्लेषण करने पर भरोसा करते हैं, जैसे कि रैम जीता। OS के द्वारा "गुब्बारा" के रूप में चिह्नित नहीं किया जाता है, बस यह "उपयोग में" है।

दूसरी सुविधा जो vSphere उपयोग कर सकती है, वह ट्रांसपेरेंट पेज शेयरिंग (TPS) है - जो अनिवार्य रूप से RAM de-दोहराव है। vSphere समय-समय पर डुप्लिकेट किए गए पृष्ठों की तलाश में, सभी आवंटित रैम को स्कैन करेगा। जब यह पाया जाता है, तो यह नकली पृष्ठों को डी-डुप्लिकेट और मुक्त कर देगा।

VSphere's Memory Management whitepaper (PDF) - विशेष रूप से "ESXi में मेमोरी रिक्लेमेशन" (पृष्ठ 8) पर एक नज़र डालें - यदि आपको अधिक गहराई से स्पष्टीकरण की आवश्यकता है।

यह मानते हुए कि वीएम कम रैम में चल सकते हैं, क्या यह कहना उचित है कि वर्चुअल मशीनों को अधिक रैम के साथ कॉन्फ़िगर करने के लिए ओवरहेड की जरूरत है?

कोई दृश्यमान ओवरहेड नहीं है - आप 16 जीबी के साथ एक होस्ट पर 100 जीबी रैम आवंटित कर सकते हैं (हालांकि, इसका मतलब यह नहीं है कि आपको उपरोक्त कारणों के लिए चाहिए )।

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

इस VMWare कम्यूनिटी थ्रेड में "Active" और "Consumer" रैम के बीच अंतर पर चर्चा की गई है ।

प्रतिवाद क्या है: "अगर एक वीएम में 16 जीबी रैम आवंटित है, लेकिन केवल 4 जीबी का उपयोग करता है, तो समस्या क्या है?" ? जैसे ग्राहकों को शिक्षित करने की आवश्यकता है?

इसका संक्षिप्त उत्तर हां है - ग्राहकों को हमेशा अपने निपटान में साधनों की परवाह किए बिना सर्वोत्तम प्रथाओं में शिक्षित किया जाना चाहिए ।

ग्राहकों को उनके वीएम को आकार देने के लिए शिक्षित किया जाना चाहिए जो वे उपयोग करते हैं , बल्कि वे जो चाहते हैं उसके बजाय । बहुत बार, लोग अपने वीएम को केवल इसलिए निर्दिष्ट करेंगे क्योंकि उन्हें 16 जीबी रैम की आवश्यकता हो सकती है, भले ही वे ऐतिहासिक रूप से 2 जीबी दिन के बाद दिन के साथ टकरा रहे हों। एक vSphere व्यवस्थापक के रूप में, आपके पास उन्हें चुनौती देने के लिए ज्ञान, मैट्रिक्स और शक्ति है और उनसे पूछें कि क्या उन्हें वास्तव में RAM की आवश्यकता है जो उन्हें आवंटित किया गया है।

कहा कि, यदि आप vSphere के मेमोरी प्रबंधन को सावधानी से नियंत्रित ओवरकम सीमा के साथ जोड़ते हैं, तो आपको अभ्यास में शायद ही कोई समस्या होनी चाहिए, समय की विस्तारित अवधि के लिए रैम से बाहर चलने की संभावना अपेक्षाकृत दूरस्थ है।

इसके अलावा, स्वचालित vMotion (जिसे VMware द्वारा डिस्ट्रीब्यूटेड रिसोर्स शेड्यूलिंग कहा जाता है ) अनिवार्य रूप से आपके वीएम के लिए एक लोड-बैलेंसर है - यदि एक एकल वीएम एक संसाधन हॉग बन रहा है, तो डीआरएस को क्लस्टर के संसाधनों का सबसे अच्छा उपयोग करने के लिए वीएम के चारों ओर माइग्रेट करना चाहिए।

मीटर रैम के उपयोग के लिए किस विशिष्ट मीट्रिक का उपयोग किया जाना चाहिए। "सक्रिय" बनाम समय की चोटियों पर नज़र रखना?

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

मेमोरी ओवर-कमिट पर कुछ अच्छे लेख / चर्चाएँ:


मेरी समझ यह है कि VM को आवंटित अधिक RAM का मतलब है कि DRS के लिए VM को स्थानांतरित करना कठिन है - नोड्स के बीच प्रवास करने में अधिक समय लगता है क्योंकि RAM को पार करने में अधिक समय लगता है; और अधिक RAM की आवश्यकता होती है, कम संभावना यह है कि DRS एक बड़ा पर्याप्त चंक ढूंढने में सक्षम होने जा रहा है। यह विशेष रूप से परेशानी भरा हो सकता है (मुझे विश्वास करने के लिए नेतृत्व किया गया है) यदि आपके पास एक घटना है (उदाहरण के लिए, हार्डवेयर विफलता) जो क्लस्टर में क्षमता कम कर देता है। छोटे VMs फेरबदल करने में आसान होते हैं और अधिक आउटेज को नोटिस करने की संभावना नहीं होती है, बड़ा VMs मुश्किल हो सकता है। क्या मुझे सही तरीके से सूचित किया गया है?
जेम्स पोली

2
@ जेम्स - केवल सक्रिय (उपयोग में) मेमोरी vMotion के दौरान माइग्रेट की जाती है, इसलिए आपके VM को आपके द्वारा आवंटित की गई RAM उतनी मायने नहीं रखती है। संदर्भ: vmware.com/files/pdf/VMware-VMotion-DS-EN.pdf
क्रेग वॉटसन

बहुत बढ़िया जवाब। मैंने इस विशेष क्लस्टर से अधिक विस्तार से अपना प्रश्न अपडेट किया है। हालांकि आपके अंक अच्छे हैं। यह पता चला है कि इस सेटअप में VM भारी ओवरकॉन्फ़िगर्ड हैं। सक्रिय रैम का उपयोग क्लस्टर के भौतिक संसाधनों से काफी नीचे है, इसलिए कोई विवाद नहीं है ... बस भारी गुब्बारा / स्वैपिंग / कुरूपता। मुझे संदेह है कि VMs के दाएं-आकार में इस दबाव को कम किया जाएगा।
ewwhite

21

क्रेग वाटसन के उत्कृष्ट उत्तर के अलावा मैं निम्नलिखित जोड़ना चाहूंगा:

VMware में ओवर-कमिंग मेमोरी कुछ ऐसा नहीं है जिसे आपको उद्देश्य से करना चाहिए। यह आम तौर पर दिखाता है कि या तो आप या आपके ग्राहक हार्डवेयर की देखरेख कर रहे हैं।

यदि ओवर-कमिटिंग एकमात्र विकल्प है तो मैं दृढ़ता से सलाह देता हूं कि आप प्राथमिकता नियमों को लागू करते हैं। अगर कोई गैर-महत्वपूर्ण VM 16GB vRam देने पर तुला हुआ है, जब उसे केवल 4GB की आवश्यकता होती है - कम से कम उस VM को कम संसाधन पूल में रखें या उसे कम प्राथमिकता दें। आप वास्तव में नहीं चाहते हैं कि एक महत्वपूर्ण उत्पादन डेटाबेस को हाइपरविजर द्वारा स्वैप किया जाए। न केवल प्रदर्शन नाली के नीचे जाएगा, यह आपके बैकएंड स्टोरेज के खिलाफ आई / ओ कतारों को भी खाएगा।

यदि आप तेज भंडारण (फ्यूजनियो, वायलिन, स्थानीय एसएसडी आदि) पर धधक रहे हैं, तो स्वैपिंग एक बड़ी चिंता का विषय नहीं हो सकता है, लेकिन पारंपरिक सैन भंडारण के साथ आप अंततः हर एक वीएम और होस्ट को एक ही सरणी / नियंत्रक से प्रभावित करेंगे।


4
स्वैपिंग के भंडारण प्रभाव पर अच्छा अवलोकन। यह
वीएनएक्स

शानदार बिंदु, मैंने कभी भी भंडारण IO तर्क लेने के लिए नहीं सोचा है,
Dan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.