لقد قمت بتشغيل العديد من أجهزة VM باستخدام VirtualBox ، وتم الإبلاغ عن استخدام الذاكرة من وجهات نظر مختلفة ، وأواجه مشكلة في معرفة مقدار الذاكرة التي تستخدمها أجهزة VM بالفعل. هنا مثال:
بكل وضوح ، هناك بعض الاختلافات الضخمة هنا. لا أفهم حقًا كيف يمكن لـ GuestOS استخدام 400+ ميغابايت ، بينما لا يعرض Host OS سوى حوالي 75 ميغابايت مخصصة لـ VM. هل هناك عمليات أخرى يستخدمها VirtualBox والتي لم يتم تسميتها بوضوح؟
وأيضًا ، أود معرفة ما إذا كنت أقوم بتشغيل جهاز بسعة 1 غيغابايت ، فهل هذا سيأخذ 1 غيغابايت من مضيف OS الخاص بي ، أم فقط مقدار الذاكرة الذي يستخدمه جهاز الضيف حاليًا؟
تحديث:
عبر شخص ما عن عدم ثقته في أرقام استخدام ذاكرتي ، ولست متأكدًا مما إذا كان هذا عدم الثقة موجَّهًا إلي ، أو الإبلاغ عن مدير مهام نظام التشغيل المضيف الخاص بي (والذي ربما يكون السبب) ، ولكن بالنسبة لأي متشككين ، فيما يلي لقطة شاشة لتلك العمليات على الجهاز المضيف:
لفهم بنية عملية VirtualBox نرى
بنية VirtualBox :
بمجرد بدء تشغيل جهاز ظاهري (VM) من واجهة المستخدم الرسومية (GUI) ، يكون لديك نافذتين (الإطار الرئيسي و VM) ، ولكن يتم تشغيل ثلاث عمليات. عند النظر إلى نظامك من مدير المهام (في Windows) أو بعض مراقب النظام (على نظام Linux) ، سترى هذه:
- VirtualBox ، واجهة المستخدم الرسومية للإطار الرئيسي ؛
- عملية VirtualBox أخرى بدأت بمعلمة -startvm ، مما يعني أن عملية واجهة المستخدم الرسومية الخاصة بها تعمل بمثابة Shell لنظام VM ؛
- VBoxSVC ، الخدمة المذكورة أعلاه ، والتي تعمل في الخلفية لتتبع جميع العمليات المعنية. بدأ هذا تلقائيًا بواسطة عملية واجهة المستخدم الرسومية الأولى.
فيما يتعلق بالذاكرة ، ينص دليل المستخدم :
الذاكرة الأساسية
يقوم هذا بتعيين مقدار RAM الذي تم تخصيصه وإعطاءه إلى VM عندما يكون قيد التشغيل. سيتم طلب مقدار الذاكرة المحدد من نظام التشغيل Host ، لذلك يجب أن يكون متاحًا أو متاحًا كذاكرة حرة على المضيف عند محاولة بدء VM ولن يكون متاحًا للمضيف أثناء VM قيد التشغيل. هذا هو نفس الإعداد الذي تم تحديده في معالج "الجهاز الظاهري الجديد" ، كما هو موضح في الإرشادات تحت القسم المسمى "إنشاء جهاز ظاهري" أعلاه.
هذا يعني أن الضيف يخرج من المضيف:
من الممكن دائمًا أن يكون دليل VirtualBox وراء العديد من الإصدارات ، وأن أحدث تقنيات تحسين الذاكرة غير موثقة.
بالإضافة إلى ذلك ، قد يقوم VirtualBox بتحسين استخدام الذاكرة من خلال عدم تخصيص الذاكرة VMالمحددة بالكامل.
يعد تخصيص الذاكرة كما هو مطلوب تحسينًا يمكن أن يوفر الكثير على الذاكرة الفعلية ، لكن العمليات المكثفة في الذاكرة في VM قد تبطئ بسبب الحاجة المتكررة من VirtualBox لطلب المزيد من الذاكرة المضيفة.
المكان الوحيد في إدارة المهام الذي يبدو أنه يعكس المبلغ الكامل هو في علامة تبويب "الأداء" - تواكب قيمة إجمالي التزام التكلفة تقريبًا المبلغ المخصص لـ VM. أغلقت للتو واحدة مع تخصيص 1536 ميغابايت ، وتراجعت رسوم الالتزام من حوالي 2.4 غيغابايت إلى 0.8 غيغابايت. يمكنك مراقبة هذا إلى حد ما ضد Virtual Box باستخدام "مراقب الأداء" ، واختيار العدادات: عدادات البايت الخاصة لـ VirtualBox و VBoxSvc وأيضًا VirtualBox # 1 ، # 2 ، إلخ (واحد لكل VM قيد التشغيل). يوجد أيضًا عداد الذاكرة: Committed Bytes لكل شيء.
هذا يبدو أن مشكلة ويندوز. عرض المنشور الثالث هنا: http://forum.sysinternals.com/pe-is-not-showing-all-memory-used-by-virtualbox_topic23886.html
من المؤكد أن استخدام برنامج مثل VMMap يوضح أن الذاكرة التي تخبر VBox باستخدامها تستخدم بالفعل. لا فكرة عن سبب كونها غير مرئية لمدير المهام أو عملية Explorer.
هذه الإدخالات التي تراها في TaskManager ليست مخصصة لجهازك الافتراضي ، ولكنها مخصصة لـ VirtualBox GUI. ستُظهر لك علامة تبويب "الأداء" بوضوح مقدار الذاكرة الإجمالية المستخدمة ، ولكن بدون أي تفاصيل تتعلق بالعمليات. أنا شخصياً أرغب في رؤية VBox يستخدم فقط ما يحتاج إليه ، لكنني أتفق مع ذلك على أنه من المهم أن يكون قادرًا على استخدامه بقدر ما يتوقع ، ومن ثم فإن المبارزة.
بكل وضوح ، هناك بعض الاختلافات الضخمة هنا. لا أفهم حقًا كيف يمكن لـ GuestOS استخدام 400+ ميغابايت ، بينما لا يعرض Host OS سوى حوالي 75 ميغابايت مخصصة لـ VM. هل هناك عمليات أخرى يستخدمها VirtualBox والتي لم يتم تسميتها بوضوح؟
أنت تنظر إلى ما يجري المستخدم على المضيف ، وليس ما يجري المخصص . لا يستخدم الضيف 400+ ميغابايت من المضيف RAM (بعد).
وأيضًا ، أود معرفة ما إذا كنت أقوم بتشغيل جهاز بسعة 1 غيغابايت ، فهل هذا سيأخذ 1 غيغابايت من مضيف OS الخاص بي ، أم فقط مقدار الذاكرة الذي يستخدمه جهاز الضيف حاليًا؟
سوف يحتفظ بسعة 1 غيغابايت من ذاكرة الوصول العشوائي ، إلا أنه قد ينتهي به الأمر باستخدام أقل بكثير من ذلك. إذا لم يستخدم الضيف بعضًا من تلك الذاكرة ، فيمكن استخدام المضيف RAM لأغراض أخرى كثيرة (مثل التخزين المؤقت لصفحات القرص النظيف) ، على الرغم من أنه محجوز للضيف. وحتى إذا كان الضيف يستخدم بعضًا من تلك الذاكرة ، وإذا لم يتمكن من الوصول إليها لفترة طويلة بما فيه الكفاية ، فإنه لا يزال من الممكن إخراجها من الذاكرة الفعلية من خلال المبادلة الانتهازية.
لسوء الحظ ، لقد خاضت قضية معقدة للغاية وسوف يستغرق الأمر عدة صفحات لتفسيرها حقًا. يوجد الكثير من المعلومات غير الصحيحة في إجابات هذا السؤال.
يمكن أن تكون مرتبطة إضافات VirtualBox ضيف.
يستخدم تثبيت Ubuntu الخاص بي حاليًا 20 ميغابايت تقريبًا كما ذكرت WinXP. هذا مع VBoxAdditions.
يستخدم تثبيت نظام التشغيل Lubuntu الخاص بي حاليًا حوالي 90 ميغابايت كما ذكره نظام WinXP. مجرد تثبيته. لم يتم تثبيت VBoxAdditions.
يختلف استخدام الذاكرة حسب ما يفعله VM. لدي أوبونتو تثبيت تشغيل ziproxy. عندما أفعل شيئًا يتحدث إلى ziproxy ، يرتفع استخدام الذاكرة ببضعة ميغا بايت عندما يدخل VM حيز الاستخدام.
بشكل عام ، رغم ذلك ، فقد تطورت المحاكاة الافتراضية بدرجة كافية بحيث لا تحتاج المواصفات الظاهرة للضيف إلى تخصيصها بالكامل من المضيف. يبدو أن استخدام التخصيص الديناميكي ، وترحيل قوي.