J'aimerais pouvoir émuler un processeur Athlon XP ou Pentium IV sur un processeur Intel de troisième génération. Est - il possible d'exécuter une machine virtuelle spécifique désactiver a) les nouvelles fonctionnalités de cpu comme sse2
sse3
? et b) cache cpu ?
J'utilise Qemu / KVM. La façon dont je le lance ne masque que les intructions de la CPU à l'OS invité, dont les applications ont toujours accès aux plus récentes de la machine hôte:
hôte
$ qemu-system-i386 -cpu pentium3,enforce (...) -enable-kvm
client
$ inxi -f
CPU: Single core Pentium III (Katmai) (-UP-) cache: 16384 KB speed: 3292 MHz (max)
CPU Flags: apic cmov cx8 de fpu fxsr hypervisor mca mce mmx msr mtrr pae pge pse
pse36 sep sse tsc x2apic
$ firefox # v.54 which requires sse2;
Fonctionne très bien, tout comme Palemoon et mpv, qui ne fonctionneront pas sur un processeur dépourvu de sse2 comme Athlon XP (produisant une "instruction illégale"). Cela signifie que sse2 est définitivement disponible pour le système d'exploitation invité. Seules les applications qui vérifient le CPUID échouent, par exemple:
$ chromium-browser
# (...)
# Fatal error in ../../v8/src/ia32/assembler-ia32.cc, line 109
# Check failed: cpu.has_sse2().
#
#0 0x0000b40b9f0a base::debug::StackTrace::StackTrace()
La même chose se produit lorsque je lance la machine virtuelle avec -cpu athlon,sse2=off
. Ainsi, bien que nous puissions prendre soin, par exemple, du nombre de cœurs, de la vitesse du processeur (utiliser cpulimit
) ou des capacités d'E / S (avec le paramètre d' accélérateur de qemu ), nous ne pouvons pas limiter le jeu d'instructions CPU disponible pour l'invité, n'est-ce pas?