I programmi che usano la funzione QueryPerformanceCounter potrebbero non funzionare correttamente

Questo articolo fornisce una soluzione a un problema che si verifica nei computer a 32 bit e nei computer basati su x64 con la tecnologia AMD Cool'n'Quiet abilitata nel BIOS.

Si applica a: Windows Server 2012 R2, Windows 10 tutte le edizioni
Numero KB originale: 895980

Sintomi

Nei sistemi operativi seguenti:

  • Windows Server 2000
  • Windows XP
  • Windows Server 2003
  • Windows Server 2000 guest O.S.
  • Windows XP guest O.S.
  • Windows Server 2003 guest O.S.

Un programma che usa la QueryPerformanceCounter funzione per eseguire query sul tempo di sistema potrebbe non funzionare correttamente.

Ad esempio:

Quando si usa il comando ping per inviare pacchetti ICMP (Internet Control Message Protocol) a un computer remoto, la risposta può mostrare tempi di risposta negativi. Ad esempio, il comando ping seguente può generare le risposte seguenti:

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

Output:

Ping di x.x.x.x con 32 byte di dati:

Risposta da x.x.x.x: bytes=32 time=-59ms TTL=128
Risposta da x.x.x.x: bytes=32 time=-59ms TTL=128
Risposta da x.x.x.x: bytes=32 time=-59ms TTL=128
Risposta da x.x.x.x: bytes=32 time=-59ms TTL=128

Inoltre, se si usano contatori delle prestazioni per disco logico o disco fisico, è possibile che venga visualizzato erroneamente un valore di latenza elevata.

Nota

Questo problema si verifica in un computer che esegue una versione basata su x86 di Windows o una versione di Windows basata su x64.

Causa

Questo problema si verifica quando nel computer è abilitata la tecnologia AMD Cool'n'Quiet (dual core AMD) nel BIOS o in alcuni processori Intel multi-core. I sistemi multi-core o multiprocessore possono riscontrare deviazioni TSC (Time Stamp Counter) quando il tempo tra core diversi non è sincronizzato. Il problema potrebbe verificarsi nei sistemi operativi che usano TSC come risorsa di controllo del tempo.

Risoluzione

Per risolvere questo problema, rivolgersi al fornitore dell'hardware per verificare se è disponibile un nuovo aggiornamento del driver/firmware per risolvere il problema.

Nota

L'installazione del driver può aggiungere l'opzione /usepmtimer nel file Boot.ini. Questa opzione viene illustrata nella sezione "Soluzione alternativa".

Soluzione alternativa

Per risolvere questo problema, aggiornare il BIOS nel computer. In alternativa, modificare il file Boot.ini per usare l'opzione /usepmtimer. A tal fine, attenersi alla seguente procedura:

  1. Accedere al computer usando un account con credenziali amministrative.

  2. Fare clic su Start, fare clic su Esegui, digitare notepad c:\boot.inie quindi fare clic su OK.

  3. Nel file Boot.ini una riga che inizia con "default" si trova nella sezione "[boot loader]". Questa riga specifica la posizione del sistema operativo predefinito. La riga può essere visualizzata come segue:

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

    Nella sezione "[sistemi operativi]" individuare la riga per il sistema operativo che corrisponde alla riga "predefinita". Ad esempio, se il computer esegue Microsoft Windows Server 2003, Enterprise x64 Edition, la riga dovrebbe essere simile alla seguente:

    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn
    
  4. Alla fine della riga aggiungere uno spazio e quindi digitare /usepmtimer. La riga dovrebbe ora essere simile alla seguente.

    multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003 Enterprise x64 Edition" /fastdetect /NoExecute=OptIn /usepmtimer
    
  5. Salvare il file e quindi uscire dal Blocco note.

  6. Riavviare il computer.

Di seguito è riportato un file di Boot.ini di esempio per un sistema che contiene l'opzione /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

Nota

Il file Boot.ini si trova nella cartella radice dell'unità di sistema.
L'uso dell'impostazione /UsePmTimer può introdurre una riduzione delle prestazioni.

Supporto tecnico per le versioni x64 di Microsoft Windows

Se l'hardware è stato fornito con un'edizione Windows x64 già installata, il produttore dell'hardware fornisce supporto tecnico e assistenza per l'edizione Windows x64. In questo caso il supporto e l'assistenza tecnica per tale software vengono forniti direttamente dalla casa produttrice dell'hardware. Il produttore dell'hardware potrebbe infatti avere personalizzato l'installazione della versione x64 di Windows con componenti univoci, quali specifici driver di periferica o impostazioni facoltative, per ottimizzare le prestazioni dell'hardware. Microsoft si impegna a prendere tutte le misure necessarie per offrire assistenza tecnica con la versione x64 di Windows. ma potrebbe essere necessario contattare direttamente il produttore dell'hardware, in quanto soggetto più qualificato per fornire supporto per il software preinstallato nell'hardware. Se è stata acquistata separatamente dall'hardware una versione x64 di Windows, ad esempio la versione x64 di Microsoft Windows Server 2003, contattare Microsoft per ottenere il supporto tecnico.

Dichiarazione di non responsabilità sulle informazioni di terze parti

I prodotti di terzi citati in questo articolo sono prodotti da società indipendenti da Microsoft. Microsoft non rilascia alcuna garanzia implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti