Почему производительность qemu отличается при загрузке из репозитория и компиляции из исходного кода?

Я делаю некоторые тесты на производительность QEMU (qemu-system-i386) в режиме полной эмуляции (с TCG) и избегаю KVM. Я установил версию, доступную в репозитории debian (эмулятор QEMU версии 1.1.2 (Debian 1.1.2+dfsg-6a+deb7u6), и загрузил и скомпилировал исходные коды для Qemu 2.3.0, Qemu 1.0.0, Qemu 1.1.2, а также исходный текст для Debian 1.1.2+dfsg-6a+deb7u6.

Я настраиваю проект следующим образом, во всех случаях: ./configure --enable-sdl --target-list=i386-softmmu --disable-kvm --enable-tcg-interpreter

Версия, установленная из репозитория, работает намного быстрее, чем любая из версий, скомпилированных вручную. Я всегда использую один и тот же образ для жесткого диска). Я гарантировал, что kvm никогда не включается и не загружается: * Запрос qemu (info kvm) * Поиск загруженных драйверов (lsmod | grep kvm) и (ls / dev / kvm).

Kvm не загружается ни в одном из случаев.

Я также попытался изменить -O2 на -O3 в файле конфигурации и удалил символы в двоичном коде (что не должно быть разницей).

Я должен что-то упустить (конфигурация по умолчанию для пакета debian, параметры компиляции... но я не могу понять, что).

Что может быть причиной такой разницы в производительности? (Есть идеи, опыт?)

Большое спасибо!

1 ответ

Решение

Проблема здесь в том, что вы настраиваете аргумент --enable-tcg-interpreter. Это отключает обычный основанный на JIT бэкэнд TCG для центрального процессора в пользу медленного интерпретируемого бэкэнда. Вы никогда не захотите интерпретатор, если QEMU иначе не поддержит ваш хост-процессор; как вы обнаружили, он заметно медленнее, чем JIT по умолчанию.

Другие вопросы по тегам