Назад | Перейти на главную страницу

Параметры для оптимизации эмуляции QEMU (флаг -cpu)

Я читал об оптимизации QEMU, и одна вещь, которая меня смущает, - это -cpu переключатель.

На данный момент я использую -cpu host который должен передать гостю все функции ЦП хоста, но некоторые говорят, что он делает больше, и предоставляет гостям дополнительные функции, которые хост может не поддерживать. Это приводит к программной эмуляции функций, которые могут замедлить работу виртуальной машины.

Другая статья (http://forum.ipfire.org/viewtopic.php?t=12642) говорит использовать qemu32 cpu, а затем добавьте к нему все дополнительные параметры процессора, которые поддерживает хост.

Какой метод на самом деле лучше оптимизирует виртуальный процессор? И есть ли особые флаги, которые qemu32 процессор уже реализует, что мне не нужно включать вручную или я должен включать каждый флаг из /proc/cpuinfo? Точно так же я должен использовать виртуальный процессор qemu32, если я использую 64-битную гостевую систему?

Спасибо за любую помощь.

Во-первых, я бы не поверил всему, что вы читаете в Интернете. По большей части это чушь.

Хотя это кажется который -cpu host действительно ведет себя так, как вы описываете. По крайней мере, нота на вики qemu говорится, что они намерены вести себя таким образом.

all-you-can-enable: включить каждый бит, который может быть включен, включая биты, которых нет на хосте, но которые можно эмулировать.

-cpu host будет режимом «all-you-can-enable», который включит каждый бит из GET_SUPPORTED_CPUID на VCPU

Они также отмечают, что если вам нужен больший контроль над моделью процессора, лучше всего использовать libvirt.

И, во-вторых, за исключением очень редких случаев, я бы никогда не попытался запустить qemu напрямую. Скорее, лучше использовать libvirt (как рекомендуется) и один из его интерфейсов, например virsh или virt-manager, так как они дают вам полный контроль над виртуальной машиной с гораздо более простым в использовании интерфейсом (в случае virt-manager ).

В частности, libvirt - это способный делать то, что вы хотите: точно копировать функции центрального процессора в гостевую, без включения функций, которые не существуют и должны быть эмулированы (используя host-passthrough, хотя большую часть времени host-model достаточно).

Что касается qemu32, qemu's дефолт это qemu64, поэтому я не вижу, что вы могли бы получить, кроме, возможно, мигрени, изменив его на qemu32.