Как работает использование памяти VirtualBox?

Я запускал несколько виртуальных машин с VirtualBox, и об использовании памяти сообщалось с разных точек зрения, и мне трудно определить, сколько памяти на самом деле используют мои виртуальные машины. Вот пример:

  • У меня есть виртуальная машина под управлением Windows 7 (в качестве гостевой ОС) на моем хост-компьютере с Windows XP.
  • Хост-машина имеет 3 ГБ ОЗУ.
  • Гостевая виртуальная машина настроена так, чтобы иметь базовую память 1 ГБ.
  • Если я запускаю диспетчер задач в гостевой ОС, я вижу использование памяти 430 МБ.
  • Если я запускаю диспетчер задач в ОС хоста, я вижу 3 процесса, которые кажутся принадлежащими VirtualBox:
    1. VirtualBox.exe (1) с использованием 60 МБ памяти (похоже, что у него больше всего ЦП)
    2. VirtualBox.exe (2), используя 20 МБ памяти
    3. VBoxSvc.exe, используя 11,5 МБ памяти
  • Во время работы виртуальной машины использование памяти хост-ОС составляет около 2 ГБ.
  • Когда я выключаю виртуальную машину, операционная система хоста возвращается к использованию памяти примерно до 900 МБ.

Итак, очевидно, что здесь есть огромные различия. Я действительно не понимаю, как GuestOS может использовать 400+ МБ, в то время как Host OS показывает только около 75 МБ, выделенных виртуальной машине. Существуют ли другие процессы, используемые VirtualBox, которые не так явно названы?

Кроме того, я хотел бы знать, запускаю ли я машину с 1 ГБ, будет ли это отнимать 1 ГБ от моей хост-ОС или только объем памяти, который в настоящее время использует гостевая машина?

Обновлять:

Кто-то выразил недоверие к моим показателям использования памяти, и я не уверен, было ли это недоверие направлено ко мне или к отчетам диспетчера задач моей ОС хоста (что, возможно, является виновником), но для любых скептиков вот скриншот этих процессов на хост-машине:

Диспетчер задач VirtualBox

 

7 ответов:
7

 

Чтобы понять архитектуру процесса VirtualBox, см.
Архитектура VirtualBox :

Когда вы запускаете виртуальную машину (ВМ) из графического интерфейса, у вас есть два окна (главное окно и виртуальная машина), но работают три процесса. Посмотрев на свою систему из диспетчера задач (в Windows) или какого-либо системного монитора (в Linux), вы увидите следующее:

  1. VirtualBox, графический интерфейс для главного окна;
  2. Другой процесс VirtualBox, который был запущен с параметром -startvm, что означает, что его процесс с графическим интерфейсом пользователя действует как оболочка для виртуальной машины;
  3. VBoxSVC, упомянутая выше служба, работающая в фоновом режиме для отслеживания всех задействованных процессов. Это было автоматически запущено первым процессом графического интерфейса.

Что касается памяти, то Руководство пользователя состояния:

Базовая память

Это устанавливает объем оперативной памяти, которая выделяется и предоставляется виртуальной машине во время ее работы. Указанный объем памяти будет запрошен у операционной системы хоста, поэтому он должен быть доступен или предоставлен в качестве свободной памяти на хосте при попытке запустить виртуальную машину и не будет доступен хосту во время работы виртуальной машины. Это тот же параметр, который был указан в мастере «Новая виртуальная машина», как описано в инструкциях в разделе «Создание виртуальной машины» выше.

Это означает, что гость извлекает из хоста:

  • Столько памяти, сколько было заявлено с
  • Каждая виртуальная машина также является исполняемым файлом VirtualBox, поэтому вам необходимо добавить ее память.

Всегда возможно, что руководство VirtualBox отстает на несколько версий и что новейшие методы оптимизации памяти не задокументированы.

Кроме того, VirtualBox может оптимизировать использование памяти, не выделяя всю определенную память виртуальной машины.

Выделение памяти по мере необходимости — это оптимизация, которая может значительно сэкономить на физической памяти, но процессы с интенсивным использованием памяти в виртуальной машине могут замедляться из-за частой потребности VirtualBox запрашивать дополнительную память хоста.

 

  • Это не относится к VirtualBox — см. Это: serverfault.com/questions/19935/…

     

  • @harrymc, значит, вы говорите, что диспетчер задач НЕ показывает в списке процессов, сколько памяти использует виртуальный ящик?

    — Тревор Бойд Смит

  • @TrevorBoydSmith: Все, что я говорю, это то, что задействовано более одного процесса, и нужно правильно выбрать столбцы в диспетчере задач.

    — harrymc

  • моя виртуальная машина занимает 1,2 ГБ. в диспетчере задач он показывает только 60 МБ. поэтому я бы сказал, что диспетчер задач не показывает всю память, которую использует моя виртуальная машина. если вы не можете как-то показать мне, как настроить диспетчер задач, чтобы он отображал 1,2 ГБ.

    — Тревор Бойд Смит

  • Весь этот разговор и все ответы — всего лишь вариации путаницы между виртуальной памятью и физической памятью.

    — Дэвид Шварц

Единственное место в диспетчере задач, которое, кажется, отражает полную сумму, — это вкладка производительности — значение Total Commit Charge примерно соответствует сумме, выделенной для виртуальной машины. Я только что закрыл один с выделенными 1536 МБ, и плата за фиксацию снизилась с 2,4 ГБ до 0,8 ГБ. Вы можете до некоторой степени отслеживать это с помощью Virtual Box с помощью монитора производительности и выбора счетчиков Process: Private Bytes для VirtualBox, VBoxSvc, а также VirtualBox # 1, # 2 и т. Д. (По одному для каждой запущенной виртуальной машины). Также есть счетчик Memory: Committed Bytes для всего.

 

  • OP, похоже, не особенно интересуется тем, что было выделено, но спрашивает о том, что используется. Так что я не уверен, как это связано с его вопросом.

    — Дэвид Шварц

     

http://forum.sysinternals.com/pe-is-not-showing-all-memory-used-by-virtualbox_topic23886.html

Использование такой программы, как VMMap, определенно показывает, что память, которую вы указываете VBox, действительно используется. Понятия не имею, почему это не видно диспетчеру задач или проводнику процессов.

 

Те записи, которые вы видите в TaskManager, предназначены не для вашей виртуальной машины, а для графического интерфейса VirtualBox. Вкладка производительности четко покажет вам, какая часть вашей общей памяти используется, но без детализации процессов. Я лично хотел бы, чтобы VBox использовал только то, что ему нужно, но согласен с тем, что для него важно иметь возможность использовать столько, сколько он ожидает, отсюда и ограждение.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *