Valori di intervallo di SQL Server non sia corretta quando si utilizza utilitÓ o tecnologie che modificare frequenze della CPU

Traduzione articoli Traduzione articoli
Identificativo articolo: 931279 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Microsoft SQL Server 2005 utilizza il contatore CPU ad alta risoluzione per fornire funzionalitÓ di temporizzazione microsecondo. Un microsecondo Ŕ uno millionth di secondo (o millesimo di quello di un millisecondo). Tuttavia, valori di intervallo di SQL Server potrebbero essere errati se si utilizzano tecnologie che modificare frequenze della CPU. Ad esempio, questo problema pu˛ verificarsi quando si utilizza una delle seguenti tecnologie:
  • CPU debug passo a passo
  • AMD Cool'n ' non interattiva di tecnologia
  • Varie combinazioni risparmio energia
In questo articolo contiene metodi e le informazioni aggiuntive che consentono di risolvere il problema.

Sintomi

Quando si utilizza l'istruzione SET STATISTICS TIME per visualizzare l'esecuzione di server, analisi e tempi di compilazione, Ŕ possibile ottenere valori non corretti. Ad esempio, si noterÓ che il tempo trascorso il tempo di esecuzione di SQL Server Ŕ molto pi¨ di tempo della CPU. Questo problema potrebbe influire sulla precisione dell'ottimizzazione delle prestazioni. Questo problema si verifica quando si utilizza una delle tecnologie che sono elencate nella sezione "Sommario" sul server.

Cause

Questo problema si verifica perchÚ le frequenze della CPU vengono modificate quando si utilizzano queste tecnologie. SQL Server 2005 utilizza il contatore CPU ad alta risoluzione per fornire funzionalitÓ di temporizzazione microsecondo. Se le frequenze della CPU vengono modificate per risparmiare energia e ridurre di output di calore, durate calcolate non sia corretta.

Risoluzione

Informazioni sul Service pack

Per risolvere il problema, ottenere il service pack pi¨ recente per SQL Server 2005. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
913089Come ottenere il service pack pi¨ recente per SQL Server 2005
Nota In SQL Server 2005 Service Pack 3 e service pack successivi, il timestamp di processore non utilizzato. Queste versioni di SQL Server 2005 utilizzano un timer pi¨ affidabile con una precisione massima di 1 millisecondo.

Status

Questo problema Ŕ stato innanzitutto corretto in SQL Server 2005 Service Pack 3.

Workaround

SQL Server 2005 richiede coordinate noti e stabile per eseguire l'ottimizzazione delle prestazioni precisione. Se le rettifiche di frequenza CPU dinamiche sono attivate nel computer, Ŕ possibile disattivarli in modo che le CPU mantengono una velocitÓ costante frequenza prima di iniziare a monitorare e ottimizzare le prestazioni di SQL Server. Per effettuare questa operazione, utilizzare i metodi seguenti.

Configurare la combinazione per il risparmio di energia sul computer per imporre le CPU rimarrÓ frequenza massima

Per effettuare questa operazione, attenersi alla seguente procedura:
  1. Fare clic su Start , scegliere Esegui , digitare powercfg.cpl e quindi fare clic su OK .
  2. Nella finestra di dialogo ProprietÓ Opzioni risparmio energia , fare clic su Sempre attivo nell'elenco di Combinazioni risparmio energia .
  3. Fare clic su OK .
Pu˛ verificarsi una deviazione. Una deviazione Ŕ una divergenza tra i valori di frequenza CPU. Per ulteriori informazioni, vedere la sezione "Deviazione". In questo caso, Ŕ necessario riavviare Microsoft Windows per risincronizzare le frequenze di tutte le CPU dopo aver modificato la combinazione di risparmio energia.

Se non Ŕ possibile riavviare il computer, Ŕ necessario attivare l'affinitÓ di processore SQL Server impedire lo spostamento tra CPU di thread di lavoro di SQL Server. Quando si esegue questa operazione, non Ŕ necessario riavviare il computer anche se si verifica una divergenza tra i valori di frequenza CPU. Per attivare l'affinitÓ processori di SQL Server per tutte le CPU sul server, Ŕ necessario utilizzare una maschera diversa, in base al numero di processori logici presenti sul server.

Nella tabella seguente sono elencati gli scenari di esempio.
Riduci questa tabellaEspandi questa tabella
Numero di CPUIstruzioni per attivare l'affinitÓ di processore
02 CPUExec sp_configure affinity mask, 0 x 00000003
VAI
riconfigurare
VAI
04 CPUExec sp_configure affinity mask, 0x0000000F
VAI
riconfigurare
VAI
08 CPUExec sp_configure affinity mask, 0x000000FF
VAI
riconfigurare
VAI
16 CPUExec sp_configure affinity mask, 0x0000FFFF
VAI
riconfigurare
VAI
32 CPUExec sp_configure affinity mask, 0xFFFFFFFF
VAI
riconfigurare
VAI
Nota Potrebbe essere insufficiente per disattivare le funzionalitÓ variazione di CPU frequenza a livello di BIOS. Diverse utilitÓ di terze parti Ŕ possibile modificare le frequenze della CPU. Alcune implementazioni di attivare le rettifiche di frequenza anche quando le CPU sono le impostazioni di combinazione risparmio energia massimo. In questo caso, Ŕ necessario disattivare queste utilitÓ di terze parti quando si eseguono in SQL Server 2005 di ottimizzazione delle prestazioni.

Utilizzare utilitÓ di terze parti e driver per sincronizzare le frequenze di CPU e i contatori di clock della CPU

In rari casi, un sistema potrebbe richiedere un aggiornamento del produttore per correggere problemi di frequenza di CPU. ╚ una pratica migliore per verificare il sistema per il BIOS, microcodice e firmware gli aggiornamenti pi¨ recenti, se si sospetta che il sistema potrebbe essere un problema.

Informazioni

Microsoft SQL Server 2000 e versioni precedenti di SQL Server Ŕ possibile utilizzare i meccanismi di tempi di Windows. I meccanismi di temporizzazione utilizzano valori di precisione di millisecondi. In genere, questa precisione Ŕ 10-15 ms, tuttavia, la precisione potrebbe essere grande quanto 55 millisecondi. Query SQL Server Ŕ spesso completata entro millisecondo a cifra singola volta microsecondo si estende su. Questa precisione richiede un timer ad alta risoluzione. Di conseguenza, queste versioni di SQL Server report la durata di alcune query come 0 ms, pertanto, Ŕ difficile per il monitoraggio delle prestazioni e l'ottimizzazione delle prestazioni di SQL Server nelle versioni precedenti di SQL Server.

SQL Server 2005 migliora la precisione tramite il comando il contatore CPU ad alta risoluzione per fornire funzionalitÓ temporizzazione microsecondo. Quando si utilizzano le tecnologie che sono elencate nella sezione "Sommario", i valori di temporizzazione segnalata potrebbero essere errati.

Questo problema potrebbe interessare gli oggetti e le funzionalitÓ seguenti:
  • Gli eventi di traccia:
    • L'evento di attenzione
    • Eventi nel nodo stored procedure
    • Eventi nel nodo TSQL
    • Il nodo oggetti eventi
    • Eventi del nodo di transazioni
  • Viste a gestione dinamica:
    • sys.dm_exec_query_stats
    • sys.dm_exec_requests
    • sys.dm_exec_sessions
    • sys.dm_io_pending_io_requests
    • sys.dm_os_ring_buffers
    • sys.dm_os_sys_info
    • sys.dm_io_virtual_file_stats
    • sys.dm_os_wait_stats
  • L'istruzione SET STATISTICS TIME
  • La tabella di sistema sysprocesses
Dopo l'installazione di SQL Server 2005 Service Pack 2 (SP2), SQL Server registra un messaggio di errore nel log degli errori quando SQL Server rileva che il timer ad alta risoluzione non sono sincronizzati tra le CPU. Il messaggio di errore indica che gli intervalli delle prestazioni potrebbero non essere accurati e gli utenti devono utilizzare i dati sulle prestazioni con cautela.

Il testo del messaggio errore analogo a uno dei seguenti messaggi di errore:
Messaggio di errore 1
Il contatore di indicatore di data e tempo di CPU su UtilitÓ di pianificazione id 2 non Ŕ sincronizzato con altre CPU.
Messaggio di errore 2
Frequenza di indicatore di CPU Ŕ modificato da 191469 a 1794177 segni di graduazione al millisecondo. VerrÓ utilizzata la nuova frequenza
SQL Server utilizza l'istruzione RDTSC (Real Time indicatore contatore) per acquisire il numero di segni di graduazione CPU a 64 bit. ╚ possibile dividere questo valore per la frequenza di CPU per convertire il valore relativo ai millisecondi. Variazioni di durata possono verificarsi quando si verifica le modifiche di frequenza di CPU o la deviazione.

CPU debug passo a passo

CPU debug passo a passo Ŕ definita come una modifica importante con frequenza di CPU. CPU un'istruzione alla volta pu˛ essere noto anche come tecnologia Intel SpeedStep o AMD PowerNow! tecnologia. Quando CPU l'esecuzione si verifica, la velocitÓ della CPU potrebbe aumentare o diminuire in incrementi piccoli a 50 MHz per risparmiare energia e ridurre di output di calore. Frequenze non vengono modificati in modo indipendente CPU che si trovano all'interno dello stesso nodo accesso (NUMA) di memoria non uniforme.

Nella tabella riportata di seguito viene illustrato il come modifiche stepping di CPU possono influenzare i calcoli temporali.
Riduci questa tabellaEspandi questa tabella
AzioneSegni di graduazione RDTSCSegni di graduazione al millisecondo (frequenza)Tempo di clock muro
Avvia batch12000
Passaggio di frequenza gi¨2001001ms
Batch finale5003ms
TOTALI5004ms
SQL Server acquisisce RDTSC segni di graduazione in segni di graduazione RDTSC l'inizio e la fine. Quindi, SQL Server divide i segni di graduazione per il valore di frequenza.

In questo esempio, i calcoli di intervalli seguenti verificano quando si utilizza un valore di frequenza pari a 200 o 100:
  • frequenza 200: 500/200 = 2.5 ms
  • frequenza 100: 500/100 = 5 ms
Nessuno dei calcoli temporali corrisponde l'orario effettivo muro di 4 ms.

Se questo calcolo viene utilizzato in un RPC: Completed colonne di dati traccia eventi, la durata e l'ora di fine vengono segnalate in modo non corretto. Il RPC: Completed evento acquisisce l'orario iniziale di muro e conteggio di tick CPU. Per ottenere tempi di risoluzione superiori rispetto a Windows sono disponibili in SQL Server 2005, la durata e l'ora di fine colonne di dati in un server SQL analisi vengono calcolati utilizzando il numero di segni di graduazione trascorso CPU. La colonna dell'ora di fine viene calcolata aggiungendo la colonna durata alla colonna ora di inizio . In questo esempio, la colonna dell'ora di fine viene calcolata sommando in modo non corretto o 2,5 ms che 5 ms all'ora di inizio.

Deviazione

Deviazione Ŕ una divergenza nei valori di clock della CPU. Sistemi dotati di pi¨ CPU possono produrre valori di orologio della CPU diversi per lo stesso punto nel tempo. Sebbene non sia pi¨ comune, CPU potrebbe verificarsi la separazione di orologio nel tempo.

Nell'esempio seguente di seguito viene illustrato il deviazione possono effetto delle modifiche il risultato della colonna di dati durata in una traccia di SQL Server. L'esempio presuppone che la frequenza della CPU rimane costante in segni di 200 graduazione al millisecondo. Nella tabella riportata di seguito viene illustrato gli eventi in questo scenario.
Riduci questa tabellaEspandi questa tabella
AzioneCPU pianificata di Windows1 CPU RDTSC2 CPU RDTSCTempo di clock muro
Avvia batch110011000
Batch finale290019004 ms
TOTALI4 ms
SQL Server acquisisce segni di graduazione RDTSC sia i punti di inizio che i punti finali. Quindi, SQL Server divide i segni di graduazione RDTSC per il valore di frequenza. In questo esempio, Windows programmato il thread di lavoro SQL Server su due CPU diversi. Thread di lavoro SQL Server che gestisce il batch di prima esecuzione sulla CPU prima (1 CPU).

Tuttavia, Ŕ stata interrotta l'esecuzione del batch a un certo punto, e SQL Server inviato alla coda in sospeso l'esecuzione del batch. Quando SQL Server viene inviato il thread di lavoro di SQL Server che servizi nuovamente questa procedura batch nella coda eseguibile, Windows inviati al thread di eseguire su alla seconda CPU (2 CPU). Il thread di lavoro di SQL Server completata in esecuzione su 2 CPU. A causa di desincronizzazione di CPU, il valore di segni di graduazione finale Ŕ stato acquisito da 2 CPU era 1900 anzichÚ 900. ╚ possibile evitare questo comportamento se si attiva l'affinitÓ di processore SQL Server.

In questo esempio vengono utilizzati i calcoli di intervalli seguenti:
  • il non corretto ma rilevato valore: (1900 100 = 1800) / 200 = 9 ms
  • correggere valore: (900 100 = 800) / 200 = 4 ms
Il valore della colonna durata per il RPC: Completed evento dovrebbe essere segnalato come 9 ms invece di 4 ms questo risultato Ŕ doppio pi¨ il valore corretto di 4 ms.

I messaggi di avviso di deviazione vengono aggiunti a SQL Server 2005 per indicare che l'output di prestazioni indicate in precedenza potrebbe non essere affidabile. In alcuni casi senza code coverage, SQL Server 2005 SP2 potrebbe segnalare messaggi di avviso sui seguenti:
  • Messaggi di avviso deviazione false
  • Deviazione pu˛ diventare decine di millisecondi senza causare un effetto evidente del sistema
╚ necessario prestare attenzione quando si valuta l'output correlati alle prestazioni e quando si confrontano gli output correlati alle prestazioni per gli intervalli di orologio muro. Se sono presenti meno segni di altri problemi di prestazioni, Ŕ in genere possibile ignorare i messaggi di avviso deviazione. Ad esempio, in genere Ŕ possibile ignorare i messaggi di avviso deviazione nelle seguenti situazioni:
  • Processi in esecuzione come previsto.
  • Query di SQL Server non in esecuzione in modelli durational strani.
  • Segni di altri colli di bottiglia non viene visualizzato.
Tuttavia, prima si ignora la deviazione avviso messaggi, si consiglia di contattare il produttore per assicurarsi che nessuna nota RDTSC problemi esiste.

╚ possibile utilizzare il flag di traccia 8033 (?T8033) per ripristinare il comportamento di report nella versione originale di SQL Server 2005 e in SQL Server 2005 SP1. La versione originale di SQL Server 2005 e SQL Server 2005 SP1 non segnalare messaggi di avviso deviazione. Se si esegue la versione originale di SQL Server 2005 o SQL Server 2005 SP1 senza problemi, Ŕ in genere possibile ignorare i messaggi.

PerchÚ l'istruzione WAITFOR DELAY funziona correttamente? Per quanto riguarda i processi di sistema Periodico?

Meccanismi di timeout non sono interessati dalla struttura ad alta risoluzione. SQL Server non utilizza il timer ad alta risoluzione per basato su timer attivitÓ. Alcune attivitÓ di timeout sono basato sul timer di risoluzione ridotta che utilizza la funzione GetTickCount . Queste attivitÓ di timeout includere timeout di blocco, l'istruzione WAITFOR DELAY e rilevamento blocco critico (deadlock).
Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
938448Un server basato su Windows Server 2003 Se, pu˛ verificarsi contatore timestamp deviazione il server utilizza processori AMD Opteron dual core o multiprocessore processori AMD Opteron
895980Programmi che utilizzano la funzione QueryPerformanceCounter potrebbero eseguono male in Windows Server 2003 e in Windows XP
I prodotti di terze parti che in questo articolo viene descritto sono forniti da produttori indipendenti. Microsoft non rilascia alcuna garanzia, implicita o esplicita, sulle prestazioni o all'affidabilitÓ di questi prodotti.

ProprietÓ

Identificativo articolo: 931279 - Ultima modifica: martedý 16 dicembre 2008 - Revisione: 7.0
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
Chiavi:á
kbmt kbtshoot kbexpertiseadvanced kbsql2005engine kbprb KB931279 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 931279
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com