A VMware Workstation-nél a Processors alatt van a "Preferred execution mode"-nál tudod állítani, hogy használja-e. 64 bites guest-nél mindig használja a hardveres kiegészítést, 32 bitesnél a szoftveres binary translation a default, de ott is be lehet kapcsolni a hardverest. (+ még a shadow page tábla hardveres kezelését is, ha van erre támogatás a processzorban)
A különbség oka, hogy a VMware binary translation megoldása (gyakorlatilag egy x86-x86 JIT fordító) egy csomó rendszerhívást nem a virtualizációnál szokásos "trap and emulate" módszerrel oldja meg, mert a CPU-nak az túl sok és hosszú ideig tartó kontextusváltást okozna. Egyszerűen inline kicseréli az elfogandó utasítást egy rövid helyettesítő kódrészlettel, ahol csak lehetséges ez. Ez a ~9 évnyi fejlesztés és optimalizálás eredménye. :)
Hardveres virtualizációnál nincs lehetőség ilyen trükkös optimalizálásra, a guest-ben történő minden rendszerhívás vagy privilégizált utasítás egy teljes CPU trap-et vált ki, annak minden kellemetlen állapotmentési overheadjével együtt. Annyit javul a helyzet, hogy az állapotmentés és visszaállítás (VMCALL/VMRET utasításpár) körülfordulási ideje minden új CPU mag generációval jelentősen csökken, ezért fokozatosan közeledeik a kétféle megoldás teljesítménye egymáshoz, de többnyire még mindig a szoftveres a jobb.
---
Linux is bad juju.