Почему 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 в разделе материнских плат, поэтому я подозревал, что это действительно интересное изменение. То есть этот:

IOAPIC включен

Обратите внимание, что для изменения этого параметра необходимо выключить аппарат, в противном случае он будет недоступен. После того, как я включил это на гостях и перезапустил, не имело значения, если у меня был 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 еще не исправила эту ошибку.

Другие вопросы по тегам