Я читал об оптимизации 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.