VirtualBox की मेमोरी उपयोग कैसे काम करती है?


38

मैं VirtualBox के साथ कई VM को चला रहा हूं, और स्मृति का उपयोग विभिन्न दृष्टिकोणों से रिपोर्ट किया गया है, और मुझे यह समझने में परेशानी हो रही है कि मेरे वीएम वास्तव में कितनी मेमोरी का उपयोग करते हैं। यहाँ एक उदाहरण है:

  • मेरे पास मेरी विंडोज़ XP होस्ट मशीन पर एक वीएम रनिंग विंडोज 7 (गेस्ट ओएस के रूप में) है।
  • होस्ट मशीन में 3 जीबी रैम है
  • गेस्ट वीएम 1 जीबी की बेस मेमोरी के लिए सेटअप है
  • यदि मैं अतिथि ओएस पर टास्क मैंगर चलाता हूं, तो मुझे 430 एमबी का मेमोरी उपयोग दिखाई देता है
  • यदि मैं होस्ट ओएस पर टास्क मैंगर चलाता हूं, तो मुझे 3 प्रक्रियाएं दिखती हैं जो वर्चुअलबॉक्स से संबंधित हैं:
    1. VirtualBox.exe (1), 60 एमबी मेमोरी का उपयोग करके (यह सबसे सीपीयू उपयोग करने के लिए लगता है)
    2. VirtualBox.exe (2), 20 एमबी मेमोरी का उपयोग कर
    3. 11.5 एमबी मेमोरी का उपयोग करके VBoxSvc.exe
  • वीएम को चलाते समय, होस्ट ओएस का मेमोरी उपयोग लगभग 2 जीबी है
  • जब मैंने VM को बंद कर दिया, तो होस्ट OS की मेमोरी उपयोग पर वापस चला जाता है, लगभग 900 एमबी तक चला जाता है

तो स्पष्ट रूप से, यहाँ कुछ भारी अंतर हैं। मुझे वास्तव में समझ नहीं आया कि गेस्टओएस 400+ एमबी का उपयोग कैसे कर सकता है, जबकि होस्ट ओएस केवल वीएम को आवंटित 75 एमबी के बारे में दिखाता है। क्या VirtualBox द्वारा उपयोग की जाने वाली अन्य प्रक्रियाएं हैं जो स्पष्ट रूप से नामित नहीं हैं?

इसके अलावा, मैं यह जानना चाहूंगा कि क्या मैं 1 जीबी के साथ एक मशीन चलाता हूं, क्या यह मेरे होस्ट ओएस से 1 जीबी दूर ले जाने के लिए है, या वर्तमान में अतिथि मशीन केवल मेमोरी की मात्रा का उपयोग कर रही है?

अपडेट करें:

किसी ने मेरे मेमोरी उपयोग नंबरों पर अविश्वास व्यक्त किया, और मुझे यकीन नहीं है कि अगर वह अविश्वास मुझे निर्देशित किया गया था, या मेरे होस्ट ओएस के टास्क मैनेजर की रिपोर्टिंग (जो शायद अपराधी है), लेकिन किसी भी संदेह के लिए, यहां उन प्रक्रियाओं का एक स्क्रीनशॉट है मेजबान मशीन पर:

वर्चुअलबॉक्स कार्य प्रबंधक


मैं आज पहले ठीक वैसी ही बात सोच रहा था जब एक साथ दो VBox VMs चला रहा था।
मार्ट

टास्क मैनेजर में, कुछ अन्य मेमोरी कॉलम को चालू करें (देखें-> कॉलम का चयन करें ...)। मेमोरी को विंडोज में कई अलग-अलग तरीकों से गिना जाता है। उदाहरण के लिए, "प्रतिबद्ध आकार" नाटकीय रूप से "मेमोरी उपयोग" से अधिक हो सकता है। वास्तव में जो उपयोग करने के लिए और उन्हें कैसे व्याख्या करने के लिए एक अलग कहानी है।
lilbyrdie

संभावित डुप्लिकेट: superuser.com/q/17266/302
रोलैंड शॉ

जवाबों:


12

टास्क मैनेजर में एकमात्र जगह जो पूरी राशि को दर्शाती है, प्रदर्शन टैब पर है - वीएम को आवंटित राशि के साथ कुल प्रतिबद्ध प्रभार मूल्य लगभग रहता है। मैंने अभी आवंटित 1536MB के साथ एक को बंद कर दिया, और कमिट चार्ज 2.4GB से 0.8GB तक नीचे चला गया। आप प्रदर्शन मॉनिटर का उपयोग करके वर्चुअल बॉक्स के खिलाफ कुछ हद तक मॉनिटर कर सकते हैं, और प्रक्रिया का चयन कर सकते हैं: VirtualBox, VBoxSvc, और VirtualBox # 1, # 2, आदि के लिए निजी बाइट्स काउंटर (प्रत्येक चल रहे वीएम के लिए एक)। मेमोरी भी है: कमिटेड बाइट्स काउंटर फॉर एवरीथिंग।


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

12

वर्चुअलबॉक्स की प्रोसेस आर्किटेक्चर को समझने के लिए
वर्चुअलबॉक्स आर्किटेक्चर देखें :

एक बार जब आप GUI से वर्चुअल मशीन (VM) शुरू करते हैं, तो आपके पास दो विंडो (मुख्य विंडो और VM) होती हैं, लेकिन तीन प्रक्रियाएँ चलती हैं। टास्क मैनेजर (विंडोज पर) या लिनक्स पर कुछ सिस्टम मॉनिटर (आपका सिस्टम) से अपने सिस्टम को देखते हुए, आप ये देखेंगे:

  1. वर्चुअलबॉक्स, मुख्य विंडो के लिए जीयूआई;
  2. एक और वर्चुअलबॉक्स प्रक्रिया जो -startvm पैरामीटर के साथ शुरू की गई थी, जिसका अर्थ है कि इसकी GUI प्रक्रिया VM के लिए एक शेल के रूप में कार्य करती है;
  3. VBoxSVC, ऊपर उल्लिखित सेवा, जो कि शामिल सभी प्रक्रियाओं का ट्रैक रखने के लिए पृष्ठभूमि में चल रही है। यह स्वचालित रूप से पहली GUI प्रक्रिया द्वारा शुरू किया गया था।

स्मृति के संबंध में, उपयोगकर्ता मैनुअल बताता है:

आधार स्मृति

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

इसका मतलब है कि अतिथि मेजबान से बाहर निकलता है:

  • जितना स्मृति के साथ घोषित किया गया
  • प्रत्येक वीएम एक वर्चुअलबॉक्स निष्पादन योग्य भी है, इसलिए आपको इसकी मेमोरी को जोड़ना होगा।

यह हमेशा संभव है कि वर्चुअलबॉक्स मैनुअल कई संस्करणों के पीछे है, और यह कि नवीनतम मेमोरी ऑप्टिमाइजेशन तकनीक का दस्तावेजीकरण नहीं किया गया है।

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

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



@harrymc, तो आप जो कह रहे हैं, वह यह है कि कार्य प्रबंधक इस प्रक्रिया की सूची में नहीं दिखाता है कि वर्चुअल बॉक्स कितनी मेमोरी का उपयोग कर रहा है?
ट्रेवर बॉयड स्मिथ

@TrevorBoydSmith: मैं केवल इतना कह रहा हूं कि इसमें एक से अधिक प्रक्रियाएं शामिल हैं और कार्य प्रबंधक में कॉलम को सही ढंग से चुनना है।
harrymc

2
मेरे vm में 1.2 GB लगते हैं। कार्य प्रबंधक पर यह केवल 60MB दिखाता है। इसलिए मैं यह दावा करूंगा कि टास्क मैनेजर वह सभी मेमोरी नहीं दिखाता है जो मेरे vm उपयोग कर रहा है। जब तक आप किसी तरह मुझे टास्क मैनेजर को 1.2gb दिखाने का तरीका नहीं दिखा सकते।
ट्रेवर बॉयड स्मिथ

1
यह पूरी बातचीत और सभी उत्तर आभासी स्मृति और भौतिक स्मृति के बीच एक भ्रम पर भिन्नताएं हैं।
डेविड श्वार्ट्ज

4

यह विंडोज की समस्या लगती है। तीसरी पोस्ट यहाँ देखें: http://forum.sysinternals.com/pe-is-not-showing-all-memory-used-by-virtualbox_topic23886.html

VMMap जैसे कार्यक्रम का उपयोग करने से निश्चित रूप से पता चलता है कि जिस मेमोरी को आप VBox को उपयोग करने के लिए कहते हैं वह वास्तव में उपयोग की जा रही है। पता नहीं क्यों यह कार्य प्रबंधक या प्रक्रिया खोजकर्ता को दिखाई नहीं देता है।


2

टास्कमैनगर में आपके द्वारा देखी जाने वाली प्रविष्टियाँ आपके वर्चुअल मशीन के लिए नहीं हैं, वे वर्चुअलबॉक्स GUI के लिए हैं। प्रदर्शन टैब आपको स्पष्ट रूप से दिखाएगा कि आपकी कुल मेमोरी का कितना उपयोग किया जा रहा है, लेकिन प्रक्रियाओं के संबंध में कोई ग्रैन्युलैरिटी नहीं है। मैं व्यक्तिगत रूप से VBox का उपयोग केवल वही देखना चाहता हूं जो इसकी आवश्यकता है, लेकिन सहमत हूं कि इसके लिए उतना ही उपयोग करने में सक्षम होना चाहिए जितना यह अपेक्षा करता है, इसलिए रिंग-बाड़ लगाना।


1

VirtualBox अतिथि परिवर्धन से संबंधित हो सकता है।

मेरा Ubuntu स्थापित वर्तमान में WinXP द्वारा बताई गई ~ 20MB का उपयोग कर रहा है। यह VBoxAdditions के साथ है।

मेरे लुबंटू इंस्टॉल वर्तमान में WinXP द्वारा बताई गई ~ 90MB का उपयोग कर रहा है। बस इसे स्थापित किया; VBoxAdditions स्थापित नहीं किया गया है।

मेमोरी उपयोग वीएम क्या कर रहा है द्वारा भिन्न होता है। मैं अपने Ubuntu स्थापित ziproxy स्थापित है; जब मैं कुछ ऐसा करता हूं जो कि ziproxy से बात करता है, तो मेमोरी उपयोग कुछ मेगाबाइट्स के रूप में होता है जब वीएम उपयोग में आता है।

सामान्य तौर पर, हालांकि, वर्चुअलाइजेशन काफी आगे बढ़ गया है कि अतिथि को स्पष्ट किए गए चश्मे को मेजबान से पूरी तरह से आवंटित करने की आवश्यकता नहीं है। गतिशील आवंटन, और मजबूत पेजिंग का उपयोग करने लगता है।


1

तो स्पष्ट रूप से, यहाँ कुछ भारी अंतर हैं। मुझे वास्तव में समझ नहीं आया कि गेस्टओएस 400+ एमबी का उपयोग कैसे कर सकता है, जबकि होस्ट ओएस केवल वीएम को आवंटित 75 एमबी के बारे में दिखाता है। क्या VirtualBox द्वारा उपयोग की जाने वाली अन्य प्रक्रियाएं हैं जो स्पष्ट रूप से नामित नहीं हैं?

आप देख रहे हैं कि मेजबान पर क्या उपयोग किया जा रहा है , न कि क्या आवंटित किया जा रहा है । अतिथि होस्ट के RAM (अभी तक) के 400+ एमबी का उपयोग नहीं कर रहा है।

इसके अलावा, मैं यह जानना चाहूंगा कि क्या मैं 1 जीबी के साथ एक मशीन चलाता हूं, क्या यह मेरे होस्ट ओएस से 1 जीबी दूर ले जाने के लिए है, या वर्तमान में अतिथि मशीन केवल मेमोरी की मात्रा का उपयोग कर रही है?

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

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

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