Как я могу вручную включить turbo на моем процессоре, когда Windows (Server 2008 R2) работает как виртуальная машина?

2597
mpax

Приложение, которое я запускаю, сильно зависит от скорости процессора, а не от использования нескольких ядер. Процессоры в моей виртуальной машине имеют базу 2,9 и могут работать с турбонаддувом до 3,3, но, похоже, в Windows есть условный оператор, который говорит: «Если я работаю в виртуальной среде, запретите ручное управление турбо».

И чтобы вернуть его обратно, поскольку мое приложение не ориентировано на несколько ядер, автоматический запуск turbo никогда не происходит, поскольку только одно или два ядра "видят" интенсивное использование; с точки зрения процессора у него все еще есть большой запас мощности и даже не нужно думать о турбо.

2

1 ответ на вопрос

1
qasdfdsaq

1. Turbo Boost

На процессорах Intel Turbo есть только две настройки: «Авто» и «Выкл.». В автоматическом режиме процессор сам решает, использовать ли турбо, если его внутренние правила решают, что для этого достаточно запаса. Турбо в основном всегда на «Авто», если включено в BIOS, пока что-то не выключит его.

Помимо разогнанных процессоров, вы никогда не сможете «включить турбо вручную». Сам процессор имеет полный и эксклюзивный контроль над турбо-режимами, и ОС не может его переопределить. Все, что может сделать ОС - это сообщить процессору, когда нет турбо.

При нормальной работе ваш процессор сообщает операционной системе, на какие скорости он способен, и этот список скоростей только достигает максимальной скорости без турбо. ОС может запрашивать любую скорость из этого списка или вообще не запрашивать ее. Ваша ОС выключает турбо каждый раз, когда запрашивает у процессора скорость ниже максимальной скорости без турбо. Турбо переключается обратно на «Авто» каждый раз, когда ОС запрашивает максимальную скорость из указанного списка.

2. Управление VM

Windows не может контролировать скорость центрального процессора изнутри виртуальной машины. Это по замыслу. Хост-ОС должна иметь собственную систему управления скоростью процессора, которая автоматически определяет нагрузку и запрашивает более низкие скорости процессора, когда в этом нет необходимости. Чтобы разрешить гостевой ОС управлять процессором хоста, потребовалось бы выполнить аппаратное управление процессором (MSR), и это не только серьезная угроза безопасности, но и прежде всего побеждает точку виртуализации.

3. Несколько ядер

Ваше понимание, кажется, противоположно тому, как Turbo предназначен для работы. Турбоусиление в первую очередь увеличивает скорость только тогда, когда одно или два ядра испытывают большую нагрузку, и наименее эффективно, когда загружено несколько ядер. Процессор будет работать только с турбонаддувом, когда у него достаточно свободного места.

Возможно, мне следовало бы сформулировать это более подробно о контроле c- и p-состояний как аспекте «ручного управления». С точки зрения Linux можно изменить c-состояние некоторых ядер, чтобы они находились в спящем / глубоком сне, в результате чего оставшиеся ядра получают запас в турборежим (регулировка p-состояния также работает). Так как насчет ручного управления c- и p-состоянием в Win Server 2008 R2 в качестве виртуальной машины? Да, и да, я согласен, что это означает проход, который является нестандартным / менее идеальным для настройки виртуальной машины - о вещах, которые мы делаем для приложений, с которыми мы работаем;) mpax 8 лет назад 0
@mpax: Как уже говорилось, это полностью контролируется операционной системой ** host ** и не может быть выполнено виртуальной машиной. AFAIK, проход просто невозможен (даже без использования «грязных хаков»). Я не верю, что C-состояния вообще необходимы для турбо-форсирования, так как процессор теперь использует свои внутренние измерения TDP. qasdfdsaq 8 лет назад 2

Похожие вопросы