भौतिक मेजबान मशीन पर वर्चुअल मशीन इतनी कम रैम का उपभोग कैसे कर सकती है?


24

मैं 2 जीबी रैम के साथ विंडोज एक्सपी मशीन पर वर्चुअलबॉक्स चला रहा हूं। मैंने एक वर्चुअल उबंटू मशीन बनाई है और इसे 750MB की बेस मेमोरी आवंटित की है।

बस इसे एक परीक्षण में डालने के लिए, मैंने वर्चुअल मशीन पर एक बार में 20 चीजें चलाईं। उबंटू में "शीर्ष" के अनुसार, स्मृति के 750 मेगा का उपयोग किया जा रहा था, साथ ही साथ काफी स्वैप स्थान भी था।

हालाँकि, Windows कार्य प्रबंधक में वापस, VitrualBox केवल 45,000K मेमोरी का उपयोग कर रहा था। जैसा कि मैंने वर्चुअल मशीन को अधिक से अधिक करने के लिए कहा, वर्चुअलबॉक्स प्रक्रिया का सीपीयू उपयोग ऊपर (विंडोज में) हो गया लेकिन मेमोरी का उपयोग एक जैसा रहा।

750 एमबी मेमोरी का उपयोग करने वाली वर्चुअल मशीन केवल भौतिक मशीन पर 45 एमबी मेमोरी का उपभोग कैसे कर सकती है?

मुझे लगता है कि उत्तर यह है कि वर्चुअल मशीन वास्तविक मेमोरी का उपयोग नहीं कर रही है, लेकिन सिम्युलेटेड मेमोरी (यानी स्वैप स्पेस) है, लेकिन यह सुनिश्चित करता है कि यह रैम में चल रहा है।

अद्यतन: जैसा कि मैंने सुझाव दिया है कि परफ्यूम के साथ खेला है। यहां तक ​​कि जो कुछ भी मैं सोच सकता हूं उसे संक्षेप में, यह अभी भी 300 से कम megs लेने के लिए लगता है ... तो यह अभी भी एक रहस्य है।

Process               VirtualBox     VirtualBox#1     Total
PoolNonpagedBytes     5,840          42,552           48,392
PoolPagedBytes        119,796        166,892          286,688
PrivateBytes          8,884,224      52,719,616       61,603,840
VirtualBytes          75,939,840     161,202,176      237,142,016
Sum                   84,949,700     214,131,236      299,080,936

जवाबों:


7

टास्क मैनेजर के कॉलम भ्रामक आंकड़े दे सकते हैं - प्रति प्रक्रिया के सटीक मेमोरी उपयोग के लिए, आप परफ़ॉर्म (प्रदर्शन मॉनिटर कंट्रोल पैनल में) का उपयोग कर सकते हैं और "निजी बाइट्स" आंकड़े देख सकते हैं।

दिखाने के लिए, परफ़ॉर्मेंस में जाते हैं, काउंटर (मैं एक हूँ जोड़ने के लिए क्लिक Ctrl+ Iव्यक्ति की तरह)। "प्रदर्शन वस्तु" "प्रक्रिया" होगी, जिसमें "निजी बाइट्स" काउंटर्स सूची में होगी - जाहिर है आपको दाहिने हाथ की सूची से संबंधित प्रक्रिया का चयन करना होगा।


नमस्ते। मैंने यह कोशिश की, लेकिन प्राइवेट बाइट्स नाम की कोई चीज नहीं मिली। क्या आप एक कदम-दर-चरण दे सकते हैं?
dggoldst

जोड़ा है ...
रोवलैंड शॉ

धन्यवाद, यह बहुत मददगार है। मैंने विश्लेषण को प्रश्न में जोड़ा है। फिर भी यह पता नहीं लगा सकते कि यह 750 के बराबर क्यों नहीं है।
dggoldst 10

बहुत अजीब। मैं यह बता सकता हूं कि PrivateBytes VirtualBytes का एक सबसेट है (वर्चुअल बाइट्स पता स्थान का आबंटित अनुपात है, जबकि निजी बाइट्स यह मेमोरी है जिसे अभी तक मुक्त नहीं किया गया है - आप एक छोटी मेमोरी लीक के साथ स्मृति का विखंडन प्राप्त कर सकते हैं और हैं अनुप्रयोग पर्याप्त मात्रा में उपलब्ध न होने पर भी पर्याप्त मेमोरी के साथ मर जाते हैं। यह हो सकता है कि वर्चुअलाइजेशन ड्राइवर मेमोरी को इस तरह से आवंटित कर रहा है, जिसका अर्थ है कि यह दिखाई नहीं देगा, जो समझ में आता है क्योंकि मेमोरी को डिस्क से पेजिंग करने से प्रतिरक्षा होनी चाहिए।
Rowland Shaw

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

5

लिनक्स के तहत कुछ वर्चुअलाइजेशन समाधानों के साथ, वे जिस तरह से मेमोरी आवंटित करते हैं, वह होस्ट कर्नेल को एक विशेष मेमोरी-मैप्ड फ़ाइल ( /proc/kcoreविशेष फ़ाइल की तरह बहुत कुछ ) के रूप में प्रदर्शित करता है, इसलिए इसे आउटपुट में "कैशेड" काउंट से गिना जाता है free, न कि "इस्तेमाल" गिनती।

मुझे लगता है कि कुछ ऐसा ही आपके विंडोज वातावरण के साथ हो रहा है: 45Mb का उपयोग वर्चुअलबॉक्स की प्रबंधन प्रक्रियाओं द्वारा किया जाएगा, और 750 वीएम को आवंटित खुद कहीं और गिना जाएगा।


0

यह वर्चुअल मेमोरी, मेमोरी-मैप्ड फाइल या कुछ इसी तरह की हो सकती है।

क्या आपने टास्क मैनेजर में अन्य कॉलम प्रदर्शित करने की कोशिश की है?


0

टास्क मैनेजर पर विश्वास मत करो। यह सब कुछ नहीं देख सकता।

यह मुद्दा SQL सर्वर के साथ अधिक स्पष्ट रूप से देखा जाता है, उदाहरण के लिए , Sql के साथ, मुझे कभी भी ऐसा कोई भी नहीं मिला, जिसने मुझे टास्क मैनेजर से सटीक जानकारी प्राप्त करने का एक तरीका बताया, जो मुझे विश्वास दिलाएगा कि आंकड़ा एक में छिपा नहीं है अन्य कॉलम।

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