Я запускал несколько виртуальных машин с VirtualBox, и об использовании памяти сообщалось с разных точек зрения, и у меня возникли проблемы с определением объема памяти, который фактически используют мои виртуальные машины. Вот пример:
- У меня есть виртуальная машина под управлением Windows 7 (в качестве гостевой ОС) на моем компьютере с Windows XP.
- Хост-машина имеет 3 ГБ оперативной памяти
- Гостевая виртуальная машина настроена на базовую память 1 ГБ
- Если я запускаю Task Manger на гостевой ОС, я вижу использование памяти 430 МБ
- Если я запускаю Task Manger на операционной системе хоста, я вижу 3 процесса, которые, похоже, принадлежат VirtualBox:
- VirtualBox.exe (1), использующий 60 МБ памяти (кажется, этот процессор больше всего загружается)
- VirtualBox.exe (2), используя 20 МБ памяти
- VBoxSvc.exe, используя 11,5 МБ памяти
- Во время работы виртуальной машины использование памяти хост-ОС составляет около 2 ГБ.
- Когда я выключаю виртуальную машину, операционная система хоста возвращается к использованию памяти и уменьшается примерно до 900 МБ
Ясно, что здесь есть огромные различия. Я действительно не понимаю, как GuestOS может использовать 400+ МБ, в то время как Host OS показывает только около 75 МБ, выделенных для виртуальной машины. Существуют ли другие процессы, используемые VirtualBox, которые не имеют такого названия?
Кроме того, я хотел бы знать, запускаю ли я компьютер с 1 ГБ, это займет 1 ГБ от моей операционной системы или только объем памяти, который используется гостевой машиной в настоящее время?
Обновить:
Кто-то выразил недоверие к количеству использования моей памяти, и я не уверен, было ли это недоверие направлено на меня или на отчет диспетчера задач моей хост-системы (что, возможно, является виновником), но для любого скептика вот скриншот этих процессов на хост-машине:
источник
Ответы:
Единственное место в диспетчере задач, которое, по-видимому, отражает всю сумму, находится на вкладке производительности - значение Total Commit Charge примерно соответствует сумме, выделенной для VM. Я только что закрыл один с выделенным 1536 МБ, и плата за коммит снизилась с 2,4 ГБ до 0,8 ГБ. Вы можете в некоторой степени отслеживать это с помощью Virtual Box, используя Performance Monitor и выбирая Process: счетчики личных байтов для VirtualBox, VBoxSvc, а также VirtualBox # 1, # 2 и т. Д. (По одному для каждой работающей виртуальной машины). Также есть счетчик Memory: Committed Bytes для всего.
источник
Чтобы понять архитектуру процесса VirtualBox, см.
Архитектура VirtualBox :
Что касается памяти, руководство пользователя гласит:
Это означает, что гость вынимает из хоста:
Всегда возможно, что руководство VirtualBox отстает на несколько версий, и что новейшие методы оптимизации памяти не документированы.
Кроме того, VirtualBox может оптимизировать использование памяти, не выделяя всю определенную память виртуальной машины.
Распределение памяти по мере необходимости - это оптимизация, которая может значительно сэкономить на физической памяти, но процессы, интенсивно использующие память в ВМ, могут быть замедлены из-за частой необходимости VirtualBox запрашивать больше памяти хоста.
источник
Это выглядит как проблема Windows. Посмотреть третий пост здесь: http://forum.sysinternals.com/pe-is-not-showing-all-memory-used-by-virtualbox_topic23886.html
Использование такой программы, как VMMap, определенно показывает, что память, которую вы указываете использовать VBox, фактически используется. Не знаю, почему он не виден диспетчеру задач или процессору.
источник
Те записи, которые вы видите в TaskManager, предназначены не для вашей виртуальной машины, а для графического интерфейса VirtualBox. Вкладка «Производительность» четко покажет вам, сколько вашей общей памяти используется, но без детализации процессов. Я лично хотел бы, чтобы VBox использовал только то, что ему нужно, но согласен, что для него важно иметь возможность использовать столько, сколько он ожидает, следовательно, ограждение от кольца.
источник
Может быть связано с гостевыми дополнениями VirtualBox.
Моя установка Ubuntu в настоящее время использует ~ 20 МБ, как сообщает WinXP. Это с VBoxAdditions.
Моя установка Lubuntu в настоящее время использует ~ 90 МБ, как сообщает WinXP. Просто установил его; VBoxAdditions не были установлены.
Использование памяти зависит от того, что делает виртуальная машина. У меня установлена Ubuntu под управлением ziproxy; когда я делаю что-то, что говорит с ziproxy, использование памяти резко возрастает на несколько мегабайт по мере использования виртуальной машины.
В целом, однако, виртуализация продвинулась достаточно далеко, чтобы спецификации, очевидные для гостя, не нужно было полностью выделять из хоста. Кажется, использовать динамическое распределение и сильный пейджинг.
источник
Вы смотрите на то, что используется на хосте, а не на то, что выделяется . Гость не использует 400+ МБ оперативной памяти хоста (пока).
Он зарезервирует 1 ГБ ОЗУ, однако в действительности может использовать значительно меньше. Если гость не использует часть этой памяти, оперативная память хоста может использоваться для многих других целей (например, для кэширования чистых страниц диска), даже если она зарезервирована для гостя. И даже если гость действительно использует часть этой памяти, если он не получает к ней доступ достаточно долго, он все равно может быть извлечен из физической памяти посредством оппортунистического обмена.
К сожалению, вы столкнулись с чрезвычайно сложной проблемой, и для ее объяснения потребовалось бы много страниц. В ответах на этот вопрос много неверной информации.
источник
Вы можете увидеть это, используя замечательное приложение SysInternals VMMap :
VBoxSVC.exe
, он должен иметь несколько дочерних процессов,VBoxHeadless.exe
если виртуальная машина работаетVBoxHeadless.exe
процессов, выберите правильную ветку, проверив командную строку процесса, она содержит идентификатор вашей виртуальной машины.VBoxHeadless.exe
в ветви (то есть у него больше нет дочерних элементов, только родитель, так что это лист), помните его PIDVBoxHeadless.exe
процесс по его PID и нажмите OKВ моем случае, все сообщенные Частные байты , Рабочий набор и Committed память VMMap почти точно соответствовать объему памяти , назначенный VM в VirtualBox.
источник