Al momento sei offline in attesa che la connessione Internet venga ristabilita

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

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
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.
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.
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.
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.
pensile orologio, tempo trascorso, tempo di lavoro, durata, avviare ora, ora di fine, segni di graduazione, timestamp, GetTickCount, SystemTimeToFileTime, QueryPerformanceCounter e QueryPerformanceFrequency

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 931279 - Ultima revisione: 12/16/2008 14:32:10 - Revisione: 7.0

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

  • kbmt kbtshoot kbexpertiseadvanced kbsql2005engine kbprb KB931279 KbMtit
Feedback