Пропустить навигацию.
Главная

Решение проблемы с тормозами гостевой Windows под VirtualBox

Была задача: сделать виртуальную машину VirtualBox с Windows 7 Pro (коробочная лицензия, если кого-то это сильно интересует), чтобы там крутилась одна маленькая, но очень гордая программка. Все было чудесно до момента загрузки этой свежеустановленной виртуалки: выяснилось, что система периодически замирает на несколько секунд, без каких-либо причин как на двух Xeon E5420/ 6 Gb RAM, так и на Phenom II X4 945/ 8 Gb RAM. После долгих мучений с изменением самых разнообразных параметров и попыток установки Windows XP (которая вела себя точно так же и тоже была с коробочной лицензией, если это вас так интересует (: ), решение было найдено.

Итак, проблема вызвана отличной функцией QueryPerformanceCounter, которая возвращает системное время и ей похоже подвержены все версии Windows c 2000 по 7 включительно, работающие в качестве гостевых как минимум в VirtualBox и VMWare[2], а судя по статье в базе знаний Microsoft и на реальном железе это тоже проявляется [1].

Для решения проблемы в WIndows 2000/XP/2003 нужно добавить параметр /usepmtimer в boot.ini (подробности в [1]).
Для Vista/2008/7 решения у Microsoft не нашлось, хотя оно точно такое же, просто работает через революционный и мегаудобный велосипед под названием bcdedit: надо запустить командную строку от имени администратора и выполнить

bcdedit /set {default} useplatformclock true

после перезагрузки система начинает работать нормально.

UPD: Как выяснилось помогло не совсем. Форум VirtualBox[4] подсказал, что для нормальной работы Windows 7 в параметрах виртуалки надо сменить чипсет с ICH9 на PIIX3.

Ссылки:

  1. Статья в базе знаний Microsoft
  2. Статья в базе знаний VMWare
  3. Добавление usepmtimer через bcdedit
  4. Windows 7 SP1 Guest Freezes/Unfreezes Randomly