Les programmes qui utilisent la fonction QueryPerformanceCounter peuvent ne pas fonctionner correctement

Cet article fournit une résolution à un problème qui se produit sur les ordinateurs 32 bits et les ordinateurs x64 sur lesquels la technologie AMD Cool’n’Quiet est activée dans le BIOS.

S’applique à : Windows Server 2012 R2, Windows 10 (toutes les éditions)
Numéro de la base de connaissances d’origine : 895980

Symptômes

Dans les systèmes d’exploitation suivants :

  • Windows Server 2000
  • Windows XP
  • Windows Server 2003
  • O.S. invité Windows Server 2000
  • O.S. invité Windows XP
  • O.S. invité Windows Server 2003

Un programme qui utilise la fonction pour interroger l’heure QueryPerformanceCounter système peut s’exécuter mal.

Par exemple :

Lorsque vous utilisez la commande ping pour envoyer des paquets ICMP (Internet Control Message Protocol) à un ordinateur distant, la réponse peut afficher des temps de réponse négatifs. Par exemple, la commande ping suivante peut générer les réponses suivantes :

C:\>ping x.x.x.x

Résultats :

Test ping x.x.x.x avec 32 octets de données :

Réponse de x.x.x.x : bytes=32 time=-59ms TTL=128
Réponse de x.x.x.x : bytes=32 time=-59ms TTL=128
Réponse de x.x.x.x : bytes=32 time=-59ms TTL=128
Réponse de x.x.x.x : bytes=32 time=-59ms TTL=128

En outre, si vous utilisez des compteurs de performances pour le disque logique ou le disque physique, une valeur de latence élevée peut être incorrecte.

Remarque

Ce problème se produit sur un ordinateur qui exécute une version x86 de Windows ou une version x64 de Windows.

Cause

Ce problème se produit lorsque la technologie AMD Cool’n’Quiet (double cœur AMD) est activée dans le BIOS ou certains processeurs multicœurs Intel. Les systèmes multicœurs ou multiprocesseurs peuvent rencontrer une dérive du compteur d’horodatage (TSC) lorsque l’heure entre les différents cœurs n’est pas synchronisée. Les systèmes d’exploitation qui utilisent TSC comme ressource de gestion du temps peuvent rencontrer le problème.

Résolution

Pour résoudre ce problème, case activée avec le fournisseur de matériel pour voir si une nouvelle mise à jour du pilote/microprogramme est disponible pour résoudre le problème.

Remarque

L’installation du pilote peut ajouter le commutateur /usepmtimer dans le fichier Boot.ini. Ce commutateur est abordé dans la section « Solution de contournement ».

Solution de contournement

Pour contourner ce problème, mettez à jour le BIOS sur l’ordinateur. Vous pouvez également modifier le fichier Boot.ini pour utiliser le commutateur /usepmtimer. Pour cela, procédez comme suit :

  1. Connectez-vous à l’ordinateur à l’aide d’un compte disposant d’informations d’identification d’administration.

  2. Cliquez sur Démarrer, sur Exécuter, tapez notepad c:\boot.ini, puis cliquez sur OK.

  3. Dans le fichier Boot.ini, une ligne commençant par « default » se trouve dans la section « [chargeur de démarrage] ». Cette ligne spécifie l’emplacement du système d’exploitation par défaut. La ligne peut apparaître comme suit :

    default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
    

    Dans la section « [systèmes d’exploitation] », recherchez la ligne du système d’exploitation qui correspond à la ligne « par défaut ». Par exemple, si l’ordinateur exécute Microsoft Windows Server 2003, Enterprise x64 Edition, la ligne doit ressembler à ce qui suit :

    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn
    
  4. À la fin de la ligne, ajoutez un espace, puis tapez /usepmtimer. La ligne doit maintenant ressembler à ce qui suit.

    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn /usepmtimer
    
  5. Enregistrez le fichier, puis quittez le Bloc-notes.

  6. Redémarrez l'ordinateur.

Voici un exemple de fichier Boot.ini pour un système qui contient le commutateur /usepmtimer.

[boot loader]  
timeout=0  
default=multi(0)disk(0)rdisk(0)partition(2)\\WINDOWS  
[operating systems]  
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn /usepmtimer

Remarque

Le fichier Boot.ini se trouve dans le dossier racine du lecteur système.
L’utilisation du paramètre /UsePmTimer peut entraîner une diminution des performances.

Support technique pour les versions x64 de Microsoft Windows

Si votre matériel était fourni avec une édition Windows x64 déjà installée, votre fabricant de matériel fournit un support technique et une assistance pour l’édition Windows x64. car il a ajouté une édition x64 de Windows à votre matériel. Votre fabricant de matériel a pu personnaliser l’installation de Windows Édition x64 avec des composants uniques. Les composants uniques peuvent inclure des pilotes de périphériques spécifiques ou des paramètres facultatifs ayant pour but d’optimiser les performances du matériel. Microsoft pourra, dans une certaine limite, vous fournir une assistance technique sur l’édition x64 de Windows. Toutefois, vous devrez peut-être contacter directement le fabricant de votre matériel. Celui-ci est le plus qualifié pour assurer la prise en charge des logiciels qu’il a installés sur le matériel. Si vous avez acheté une édition x64 de Windows, telle qu’une édition x64 de Microsoft Windows Server 2003 séparément, contactez Microsoft pour obtenir un support technique.

Exclusion de responsabilité de tiers

Les produits tiers mentionnés dans le présent article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft exclut toute garantie, implicite ou autre, concernant les performances ou la fiabilité de ces produits.