Почему Virtualbox использует 15-20% ЦП, когда виртуальная машина приостановлена?
Я запускаю VirtualBox 3.1 в Ubuntu с гостем Win XP. К моему удивлению, я заметил, что когда я приостанавливаю виртуальную машину (ее экран отключается), VirtualBox продолжает использовать 15-20% центрального процессора хоста.
Это нормальное поведение?
Есть ли способ избежать этого? (Без сохранения состояния виртуальной машины и выхода из VirtualBox.)
Спасибо за любые идеи!
~ лара
4 ответа
Чтобы постоянно уменьшать использование процессора VirtualBox, прибегайте к этому странному хаку.
Создайте новую виртуальную машину и не устанавливайте на нее операционную систему. Скажите VirtualBox, что он запустит DOS и предоставит ему абсолютный минимум ресурсов. Не устанавливайте O/S. Запустите его, дайте ему ошибку при загрузке и уменьшите его.
Во время работы вашего реального O / S во второй виртуальной машине вы увидите, что загрузка ЦП Virtualbox снизится до 3-5%.
Идея от jed4czar: http://ubuntuforums.org/showthread.php?s=58e862a814e65eb96f8fe8389b615366&t=838073&page=2
РЕДАКТИРОВАТЬ: Чтобы ответить на ваши вопросы напрямую
почему Virtualbox использует 15-20% ЦП, когда виртуальная машина приостановлена?
Это ошибка. Он всегда использует на 15-20% больше ресурсов ЦП, чем нужно, когда какая-либо виртуальная машина работает, если только не используется предоставленный взлом.
Есть ли способ избежать этого?
Смотри взлом выше.
Я попробовал описанный выше способ взлома с виртуальной машиной DOS, но безуспешно (запуск гостей Ubuntu 12.04 на MacBook Pro с OS X). Я также попробовал изменения параметров ядра, упомянутые в потоке Oracle, опять же без изменений. Независимо от того, что я делал, мои гости, казалось, съедали по 15-20% ЦП каждый. Однако я заметил, что один гость, которому я назначил 2 процессора, не жевал 15-20% - он вел себя как ожидалось.
Конечно же, когда я переключил остальные на 2 процессора, проблема исчезла. Из предыдущего опыта я знаю, что переключение на 2 процессора также позволяет использовать IO APIC в разделе материнских плат, поэтому я подозревал, что это действительно интересное изменение. То есть этот:
Обратите внимание, что для изменения этого параметра необходимо выключить аппарат, в противном случае он будет недоступен. После того, как я включил это на гостях и перезапустил, не имело значения, если у меня был 1 или более ЦП, загрузка ЦП 15-20% ушла, поэтому я решил поделиться своим решением здесь.
У меня была такая же проблема на Windows 7 Quad Box под управлением Oracle 5 в виртуальной машине.
Следуя совету Адама, я проверил опцию Enabled IO APIC, но безрезультатно. Итак, я последовал идее kmarsh, которая заняла, вероятно, менее минуты, и загрузка процессора снизилась с 15-20% до 4-5%.
Были использованы следующие параметры: Имя: Память хака, Тип: Другое, Версия: DOS. Объем памяти: 4 МБ, Жесткий диск: не добавляйте виртуальный жесткий диск. Нажмите [Создать]. При запуске виртуальной машины запрашивает загрузочный диск, я использовал: Host Drive 'D:', нажмите [Start]. Виртуальная машина сообщает: "FATAL: не удалось прочитать с загрузочного носителя! Система остановлена". В этот момент использование процессора упало, поэтому я свернул окно. Запуск второй виртуальной машины не имеет значения.
Другие ответы не объясняют и не исправляют ошибку для меня (хост Debian, приостановленный гость Ubuntu). В Oracle есть раздел для этого:
Некоторые гостевые системы Linux могут вызвать высокую загрузку ЦП, даже если гостевая система находится в режиме ожидания. Это может быть вызвано высокой частотой таймера гостевого ядра. Некоторые дистрибутивы Linux, например Fedora, поставляют ядро Linux, настроенное на частоту таймера 1000 Гц. Мы рекомендуем перекомпилировать гостевое ядро и выбрать частоту таймера 100 Гц.
Ядра Linux, поставляемые с Red Hat Enterprise Linux, а также ядра связанных дистрибутивов Linux, таких как CentOS и Oracle Linux, поддерживают параметр ядра divider=N. Следовательно, такие ядра поддерживают более низкую частоту таймера без перекомпиляции. Мы предлагаем вам добавить параметр ядра divider=10, чтобы выбрать частоту таймера гостевого ядра 100 Гц.
Источник: Гости Linux могут вызвать высокую загрузку процессора
Я столкнулся с этой проблемой VirtualBox на 2-процессорной машине P4 с оперативной памятью 3 ГБ на хосте CentOS 5.5.
У меня не было этой проблемы на 8-процессорной машине i720 с 8 гигабайтами под управлением 64-битной Win7. Я запустил 3 виртуальных машины VMWare плюс VirtualBox, все с 2-гигабайтной памятью, и у меня не было проблем с процессором.
Это говорит о том, что проблема заключается в том, чтобы работать на "маленькой" машине или на хосте Linux.
Ваше решение сработало, спасибо.
Я отмечаю, что этим более ранним публикациям исполнился год, и мой VirtualBox является самой последней версией 4.0.4, поэтому Oracle еще не исправила эту ошибку.