хочу еще раз вернуться к теме, поднятой мной в нескольких моих постах ранее.
речь об "утечках" процессорного времени неминуемо появляющихся на любых виртуальных Windows старше Windows XP, в ситуациях, когда виртуальная машина с такой OS работает в фоновом режиме (окно свернуто в панель задач) более некоторого непродолжительного количества времени.
о "симптомах"подробнее можно почитать
здесь,
здесь и
здесь.
так как моя работа крайне сильно завязана на возможности манипулировать целым зоопарком виртуальных машин каждый день, я не мог успокоиться, не найдя причин происходящему.
сегодня я потратил целый день на тесты и эксперименты и наконец-то если и не решил на 100% эту проблему, то скорее всего 100% понял откуда она берется и как её минимизировать почти полностью.
в теме мне совершенно правильно подсказали вектор поисков, но никто, вероятно, и не подумал, насколько серьезная и глубокая описываемая проблема.
после затянувшегося предисловия, перехожу к сути решения.
все дело в том, что VirtualBox, судя по всему, так и не научился даже в текущей релизной версии правильно распределять процессорное время между хостовой и гостевой OS и что еще хуже - распределять это время внутри виртуальной машины, отправленной в фоновый режим работы. как только внутри фоново работающей виртуальной машины операционная система начинает активно работать с заданиями планировщика заданий Windows или иными службами и задачами,
активизирующимися только в режиме простоя работы Windows, основной процесс VirtualBox некоторое время "балансирует" и не заставляет "течь" хостовый процессор.
однако, как только внутри виртуальной машины фоновые задачи достигают некой критической величины "нагрузки" на процессор, виртуалбокс немедленно начинает отдавать этой виртуальной машине все свободные ресурсы хостового процессора, ложно "посчитав", что внутри фоновой работающей виртуальной машины начала "крутиться" какая-то "тяжелая" задача". понимаю, что всё это звучит довольно бредово, но мои дальнейшие манипуляции это подтвердили.
что я сделал:
1) путем многочисленных экспериментов определил несколько самых "провоцирующих" утечки задач. ими в моем случае
(они на каждой аппаратной конфигурации и на каждой виртуальной OS могут оказаться иными!) оказались: службы оптимизации NET.Framework 2-4 (их может быть до четырех и им вовсе не нжуно быть постоянно запущенными, но по умолчанию они на автомате) + Windows Defender (Защитник Windows)+ коварнейшая задача в Планировщике задач Windows, а именно проверка производительности Windows в моменты простоя, через задачу Maintenance (процесс WinSAT).
2) поставил в ручной режим запуска и остановил службы оптимизации NET.Framework 2-4, полностью выключил Windows Defender, так как в моей бета-тестерской работе он даже мешает, отключил задание Maintenance (процесс WinSAT) в Планировщике задач Windows.
когда всё вышеперечисленное я сделал на всех моих виртуальных Windows, я смог спокойно запустить сразу 4 виртуальных машины (XP, Win7 32 и 64 бит и Windows 8 32 бит, и эти виртуальные машины спокойно работают без утечек уже полдня (а раньше, максимум 10-40 минут).
еще раз особо отмечу что в моем случае оказалось достаточным сделать всего три "отключения" в виртуальных Windows, чтобы "пресечь" критические ненужные фоновые задачи, способные "увести" виртуалбокс в "утечки" превышением отведенного "пограничного" процессорного времени на фоновые задачи внутри виртуальных машин.
если у вас происходит подобное, в вашем случае "набор" критических задач может быть иным
и вычисляется только опытным путем! в частности, практически безошибочно предположу, что работающий внутри виртуальной машины антивирус, запустивший проверку всей виртуальной системы в моменты её простоя, приведет в точности к тому эффекту, что я описал выше.
также я вполне допускаю, что с другой стороны у многих вообще не наблюдаются описанные проблемы, так как аппаратная конфигурация у всех разная и мало ли как работает VirtualBox с разными реальными процессорами, поддерживающими разные аппаратные технологии виртуализации.
в моем случае это ноутбук с 16 Gb оперативной памяти и процессором i7 2620 на борту + Windows 7 64 бит в качестве хостовой OS.
буду рад, если кому-то мои советы помогут, окажись они в подобной моей ситуации.
p.s. вы спросите, почему же Windows XP не заставляла "течь" процессор?
так все просто! там у меня не было задач оптимизации нетфреймворков, защитника Windows (его там физически нет) + задания WinSAT (тоже нет). вот и нечему было "течь".