Performances et consommation de mémoire sous WOW64
Les performances et la consommation de mémoire sous WOW64 sont déterminées par les facteurs suivants :
- Matériel du processeur. L’émulation d’instruction est effectuée sur la puce. Sur le processeur x64, les instructions x86 sont exécutées en mode natif par le processeur. Par conséquent, la vitesse d’exécution sous WOW64 sur x64 est similaire à sa vitesse sous Windows 32 bits. Sur le processeur Intel Itanium et tous les processeurs ARM64, plus de logiciels sont impliqués dans l’émulation, et les performances en souffrent.
- Surcharge de l’API. Cette surcharge est faible par rapport aux appels système au noyau NT. Les fonctions du noyau NT sont destinées à être appelées rarement.
- Taille de la mémoire virtuelle. Sur le processeur Intel Itanium, WOW64 ajoute une surcharge importante si deux instances ou plus de la même application 32 bits s’exécutent simultanément. Cela est dû aux pages natives de 8 Ko sur Intel Itanium, ce qui complique l’émulation des pages natives de 4 Ko sur l’architecture x86 (d’autres pages sont marquées comme accessibles en écriture; toutes les pages accessibles en écriture sont privées du processus). Cela peut nuire à la scalabilité des services Terminal Server sur certains processeurs. Ce n’est pas le cas pour le processeur x64.
- Ensemble de travail. WOW64 augmente la taille de l’ensemble de travail de l’application.
WOW64 permet aux applications 32 bits de tirer parti du noyau 64 bits. Par conséquent, les applications 32 bits peuvent utiliser un plus grand nombre de handles de noyau et de poignées de fenêtre. Toutefois, les applications 32 bits peuvent ne pas être en mesure de créer autant de threads sous WOW64 qu’elles le peuvent lors de l’exécution native sur des systèmes x86, car WOW64 alloue une pile 64 bits supplémentaire (généralement 512 Ko) pour chaque thread. En outre, une certaine quantité d’espace d’adressage est réservée à WOW64 lui-même et aux structures de données qu’il utilise. Le montant réservé dépend du processeur ; plus est réservé sur l’Intel Itanium que sur les processeurs x64 ou ARM64.
Si l’indicateur IMAGE_FILE_LARGE_ADDRESS_AWARE est défini dans l’en-tête de l’image, chaque application 32 bits reçoit 4 Go d’espace d’adressage virtuel dans l’environnement WOW64. Si l’indicateur IMAGE_FILE_LARGE_ADDRESS_AWARE n’est pas défini, chaque application 32 bits reçoit 2 Go d’espace d’adressage virtuel dans l’environnement WOW64.