Program som använder funktionen QueryPerformanceCounter kan fungera dåligt

Den här artikeln innehåller en lösning på ett problem som uppstår på 32-bitarsdatorer och x64-baserade datorer som har AMD Cool'n'Quiet-tekniken aktiverad i BIOS.

Gäller för: Windows Server 2012 R2, Windows 10 – alla utgåvor
Ursprungligt KB-nummer: 895980

Symptom

I följande operativsystem:

  • Windows Server 2000
  • Windows XP
  • Windows Server 2003
  • Windows Server 2000 gäst-O.S.
  • Windows XP gäst-O.S.
  • Gäst-O.S för Windows Server 2003.

Ett program som använder QueryPerformanceCounter funktionen för att fråga systemtid kan fungera dåligt.

Till exempel:

När du använder pingkommandot för att skicka ICMP-paket (Internet Control Message Protocol) till en fjärrdator kan svaret visa negativa svarstider. Följande pingkommando kan till exempel generera följande svar:

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

Produktionen:

Pinga x.x.x.x med 32 byte data:

Svara från x.x.x.x: bytes=32 time=-59ms TTL=128
Svara från x.x.x.x: bytes=32 time=-59ms TTL=128
Svara från x.x.x.x: bytes=32 time=-59ms TTL=128
Svara från x.x.x.x: bytes=32 time=-59ms TTL=128

Om du använder prestandaräknare för logisk disk eller fysisk disk kan det också felaktigt visa ett värde med hög svarstid.

Obs!

Det här problemet uppstår på en dator som kör en x86-baserad version av Windows eller en x64-baserad version av Windows.

Orsak

Det här problemet uppstår när datorn har AMD Cool'n'Quiet-tekniken (AMD med dubbla kärnor) aktiverad i BIOS eller vissa Intel-processorer med flera kärnor. System med flera kärnor eller flera processorer kan stöta på TSC-drift (Time Stamp Counter) när tiden mellan olika kärnor inte synkroniseras. Det kan uppstå problem med de operativsystem som använder TSC som en tidsresurs.

Åtgärd

Lös problemet genom att kontakta maskinvaruleverantören för att se om det finns en ny uppdatering av drivrutinen/den inbyggda programvaran för att åtgärda problemet.

Obs!

Drivrutinsinstallationen kan lägga till växeln /usepmtimer i Boot.ini-filen. Den här växeln beskrivs i avsnittet "Lösning".

Lösning

Du kan undvika det här problemet genom att uppdatera BIOS på datorn. Du kan också ändra Boot.ini-filen för att använda växeln /usepmtimer. Gör så här:

  1. Logga in på datorn med hjälp av ett konto som har administrativa autentiseringsuppgifter.

  2. Klicka på Start, klicka på Kör, skriv notepad c:\boot.inioch klicka sedan på OK.

  3. I den Boot.ini filen finns en rad som börjar med "default" i avsnittet "[boot loader]". Den här raden anger platsen för standardoperativsystemet. Raden kan visas på följande sätt:

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

    I avsnittet "[operativsystem]" letar du upp raden för operativsystemet som motsvarar "standardraden". Om datorn till exempel kör Microsoft Windows Server 2003, Enterprise x64 Edition, bör raden likna följande:

    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn
    
  4. I slutet av raden lägger du till ett blanksteg och skriver /usepmtimer. Raden bör nu likna följande.

    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn /usepmtimer
    
  5. Spara filen och avsluta sedan Anteckningar.

  6. Starta om datorn.

Följande är ett exempel Boot.ini fil för ett system som innehåller växeln /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

Obs!

Den Boot.ini filen finns i systemenhetens rotmapp.
Om du använder inställningen /UsePmTimer kan prestanda försämras.

Teknisk support för x64-baserade versioner av Microsoft Windows

Om maskinvaran har en Windows x64-version som redan är installerad tillhandahåller maskinvarutillverkaren teknisk support och hjälp för Windows x64-utgåvan. I det här fallet tillhandahåller maskinvarutillverkaren support eftersom en Windows x64-version ingick i maskinvaran. Maskinvarutillverkaren kan ha anpassat installationen av Windows x64-versionen med hjälp av unika komponenter. Unika komponenter kan innehålla specifika enhetsdrivrutiner eller inkludera valfria inställningar för att maximera maskinvarans prestanda. Microsoft tillhandahåller rimlig hjälp om du behöver teknisk hjälp med en Windows x64-version. Du kan dock behöva kontakta tillverkaren direkt. Tillverkaren är bäst lämpad att stödja den programvara som tillverkaren har installerat på maskinvaran. Om du har köpt en Windows x64-utgåva, som till exempel en Microsoft Windows Server 2003 x64-utgåva separat, kontaktar du Microsoft för teknisk support.

Ansvarsfriskrivning för information från tredje part

De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.