Valeurs de temps SQL Server peuvent être incorrects lorsque vous utilisez utilitaires ou des technologies de modifier la fréquence du processeur

Traductions disponibles Traductions disponibles
Numéro d'article: 931279 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Microsoft SQL Server 2005 utilise le compteur processeur haute résolution pour fournir des capacités de synchronisation microsecond. Un microsecond est millionth celui d'une seconde (ou un thousandth d'une milliseconde). Toutefois, les valeurs de minutage SQL Server peuvent être incorrects si vous utilisez des technologies de modifier la fréquence du processeur. Par exemple, ce problème peut se produire lorsque vous utilisez des technologies suivantes :
  • PROCESSEUR pas à pas
  • AMD Cool'n ' quiet technologie
  • Différents jeux de l'alimentation
Cet article contient des méthodes et des informations supplémentaires permettant de contourner ce problème.

Symptômes

Lorsque vous utilisez l'instruction SET STATISTICS TIME pour afficher l'exécution du serveur, l'analyse et les temps de compilation, vous pouvez obtenir des valeurs incorrectes. Par exemple, vous pouvez remarquer que le délai écoulé de l'exécution de SQL Server est bien plus que le temps processeur. Ce problème peut concerner la précision de réglage des performances. Ce problème se produit lorsque vous utilisez un des technologies qui sont répertoriés dans la section « résumé » sur le serveur.

Cause

Ce problème se produit car les fréquences de processeur sont modifiés lorsque vous utilisez ces technologies. SQL Server 2005 utilise le compteur processeur haute résolution pour fournir des capacités de synchronisation microsecond. Si fréquences du processeur sont modifiés pour économiser l'énergie et réduire chaleur sortie, Durée calculée est peut-être incorrecte.

Résolution

Informations sur le service pack

Pour résoudre ce problème, procurez-vous le dernier service pack pour SQL Server 2005. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
913089 Comment obtenir le dernier pack service pour SQL Server 2005
note Dans SQL Server 2005 Service Pack 3 et dans les futurs service packs, le cachet de temps processeur n'est pas utilisé. Ces versions de SQL Server 2005 utilisent un timer plus fiable qui a une précision maximum de 1 milliseconde.

Statut

Ce problème a été corrigé dans SQL Server 2005 Service Pack 3.

Contournement

SQL Server 2005 nécessite connus et stable points de données pour effectuer l'optimisation des performances précises. Si dynamiques ajustements de fréquence du processeur sont activés sur l'ordinateur, vous pouvez les désactiver pour les processeurs maintenir un taux de fréquence régulière avant de commencer à surveiller et optimiser les performances de SQL Server. Pour cela, appliquez les méthodes suivantes.

Configurer le mode de gestion de l'alimentation sur l'ordinateur pour forcer l'UC reste à la fréquence maximale

Pour ce faire, procédez comme suit :
  1. Cliquez sur Démarrer , cliquez sur Exécuter , tapez Powercfg.cpl et puis cliquez sur OK .
  2. Dans la boîte de dialogue Propriétés des Options d'alimentation , cliquez sur toujours sur dans la liste de schémas d'alimentation .
  3. Cliquez sur OK .
Un dérives peut se produire. Un dérives est une divergence entre les valeurs fréquence du processeur. Pour plus d'informations, reportez-vous à la section « dérive ». Dans ce cas, vous devez redémarrer Microsoft Windows pour resynchroniser des fréquences de tous les processeurs après avoir modifié le mode de gestion de l'alimentation.

Si vous ne pouvez pas redémarrez l'ordinateur, activer affinité de processeur SQL Server empêcher le déplacement entre les processeurs de threads de travail de SQL Server. Lorsque vous faites cela, vous ne devez pas redémarrer l'ordinateur même si une divergence entre les valeurs fréquence du processeur se produit. Pour activer SQL Server affinité de processeur pour tous les processeurs sur le serveur, vous devez utiliser un autre masque, selon le nombre de processeurs logiques qui se trouvent sur le serveur.

Le tableau suivant répertorie des exemples de scénarios.
Réduire ce tableauAgrandir ce tableau
Numéro de l'UCInstructions pour activer l'affinité du processeur
UC 02exec sp_configure 'masque d'affinité, « 0x00000003
ACCÉDEZ
reconfigurer
ACCÉDEZ
UC 04exec sp_configure 'masque d'affinité, « 0x0000000F
ACCÉDEZ
reconfigurer
ACCÉDEZ
UC 08exec sp_configure 'masque d'affinité, « 0x000000FF
ACCÉDEZ
reconfigurer
ACCÉDEZ
16 Processeursexec sp_configure 'masque d'affinité, « 0x0000FFFF
ACCÉDEZ
reconfigurer
ACCÉDEZ
32 Processeursexec sp_configure 'masque d'affinité,' 0xFFFFFFFF
ACCÉDEZ
reconfigurer
ACCÉDEZ
note Il peut être insuffisant pour désactiver les UC fréquence variante fonctionnalités au niveau du BIOS. Divers utilitaires tiers peuvent modifier les fréquences du processeur. Certaines implémentations activer réglages de fréquence même si les processeurs sont sous Paramètres de jeu d'énergie maximale. Dans ce cas, vous devez désactiver ces utilitaires tiers lorsque vous effectuez dans SQL Server 2005 de réglage des performances.

Utilisez les utilitaires tiers et compteurs d'horloge de pilotes pour synchroniser les fréquences du processeur et de processeur

Dans rares occasions, un système peut nécessite une mise à jour auprès du fabricant pour corriger des problèmes fréquence du processeur. Il est recommandé de vérifier le système pour les dernières mises à jour du BIOS, microcode et du microprogramme si vous pensez que le système peut a un problème.

Plus d'informations

Microsoft SQL Server 2000 et les versions antérieures de SQL Server utilisent les mécanismes de synchronisation Windows. Les mécanismes de synchronisation utiliser valeurs de précision de millisecondes. En règle générale, cette précision est de 10 à 15 ms. Toutefois, la précision peut-être aussi grand que ms 55. Requêtes SQL Server achèvement fréquemment dans un chiffre millisecondes ou microsecond temps s'étend sur. Cette précision nécessite un timer haute résolution. Par conséquent, ces versions de rapport SQL Server la durée de certaines requêtes en tant que 0 ms. Therefore, il est difficile à surveiller les performances et à optimiser les performances de SQL Server dans les versions antérieures de SQL Server.

SQL Server 2005 améliore la précision en utilisant le compteur processeur haute résolution pour fournir des capacités de synchronisation microsecond. Lorsque vous utilisez les technologies qui sont répertoriés dans la section « Résumé », les valeurs de temps signalé peuvent être incorrects.

Ce problème peut concerner les objets et fonctionnalités suivants :
  • Effectuer le suivi d'événements :
    • L'événement attention
    • Événements dans le n?ud de procédures stockées
    • Événements dans le n?ud TSQL
    • Événements dans le n?ud objets
    • Événements dans le n?ud de transactions
  • Vues de gestion dynamique :
    • 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'instruction SET STATISTICS TIME
  • La table système sysprocesses
Après avoir installé SQL Server 2005 Service Pack 2 (SP2), SQL Server enregistre un message d'erreur dans le journal erreurs lorsque SQL Server détecte que les minuteurs de haute résolution sont désynchronisées entre les processeurs. Le message d'erreur indique que minutage des performances peut ne pas être exactes, et que les utilisateurs doivent utiliser les données de performance avec précaution.

Le texte de la message d'erreur ressemble à un des messages d'erreur suivants :
Message d'erreur 1
Du compteur de tampon temps de l'UC sur planificateur id 2 n'est pas synchronisé avec les autres processeurs.
Message d'erreur 2
Fréquence de tampon de temps processeur a modifié de 191469 à impulsions 1794177 par millisecondes. La nouvelle fréquence sera utilisée
SQL Server utilise l'instruction en temps réel tampon compteur (RDTSC) pour obtenir le nombre de graduation de l'UC 64 bits. Vous pouvez diviser cette valeur par la fréquence du processeur pour convertir la valeur en millisecondes valeurs. Variations du temps peuvent se produire lorsque la modification de fréquence du processeur ou dérives se produit.

PROCESSEUR pas à pas

PROCESSEUR pas à pas est défini comme un changement de clics de la fréquence du processeur. PROCESSEUR pas à pas peut également être appelé technologie Intel SpeedStep ou la technologie AMD PowerNow ! technologie. Lors de l'UC pas à pas survient, la vitesse du processeur peut augmenter ou diminuer en incréments aussi petite que 50 MHz pour économiser l'énergie et réduire sortie chaleur. Les processeurs qui se trouvent dans le même n?ud accès NUMA (non-uniform mémoire ne pas ajustent indépendamment fréquences.

Le tableau suivant illustre processeur à modifications incidences sur les calculs de temps.
Réduire ce tableauAgrandir ce tableau
ActionGraduations RDTSCImpulsions par millisecondes (fréquence)Heure de pointage du mur
Démarrer des lots12000
Fréquence de l'étape vers le bas2001001ms
Lots de fin5003ms
TOTAUX5004ms
SQL Server capture les graduations RDTSC à impulsions RDTSC début et de fin. Puis, SQL Server divise les graduations par la valeur de fréquence.

Dans cet exemple, les calculs de temps suivants se produisent lorsque vous utilisez une valeur de fréquence de 200 ou 100 :
  • fréquence 200 : 500/200 = 2.5 ms
  • fréquence 100 : 500/100 = 5 ms
Aucun des calculs de temps correspond à l'heure de pointage mur réel de ms 4.

Si ce calcul est utilisé dans un RPC : terminé colonnes de données événement, la durée et l'heure de fin de suivi sont signalés incorrecte. Le RPC : terminé événement capture le temps horloge murale début et de comptage de cycles de processeur. Pour obtenir le minutage de résolution plus élevée que Windows fournit de colonnes de données SQL Server 2005, la durée et l'heure de fin dans un serveur SQL Server suivi sont calculés en utilisant le nombre de graduation processeur écoulé. La colonne fin est calculée en ajoutant la colonne Durée à la colonne début . Dans cet exemple, la colonne fin est calculée en incorrectement ajoutant soit ms 2.5 ms 5 à l'heure de début.

Dérives

Dérives est une divergence des valeurs de l'horloge du processeur. Systèmes équipés de plusieurs processeurs peuvent produire différentes valeurs de l'horloge du processeur pour le même point dans le temps. Même si elle n'est pas courant, UC pouvez rencontrer l'horloge séparation dans le temps.

L'exemple suivant illustre comment les dérives modifications peuvent affecter le résultat de la colonne de données durée dans une trace SQL Server. L'exemple suppose que la fréquence du processeur reste stable à 200 impulsions par millisecondes. Le tableau suivant illustre les événements dans ce scénario.
Réduire ce tableauAgrandir ce tableau
ActionWindows prévue du processeur1 PROCESSEUR RDTSCRDTSC PROCESSEUR 2Heure de pointage du mur
Démarrer des lots110011000
Lots de fin29001900ms 4
TOTAUXms 4
SQL Server capture les graduations RDTSC sur les points de début et les points de fin. Puis, SQL Server divise les graduations RDTSC par la valeur de fréquence. Dans cet exemple, Windows prévue le thread de travail SQL Server sur deux processeurs différents. Le thread de travail de SQL Server qui gère le lot exécuté tout d'abord sur le premier processeur (UC 1).

Toutefois, l'exécution du traitement par lots a été interrompue à un moment donné et SQL Server envoyé l'exécution du traitement par lots dans la file d'attente en attente. Lors de SQL Server envoyé le thread de travail de SQL Server qui gère ce lot dans la file d'attente exécutable à nouveau, Windows transmis le thread à exécuter sur le processeur deuxième (2 du processeur). Le thread de travail SQL Server terminée s'exécutant sur l'UC 2. En raison de dérives de processeur, la valeur de graduation de fin qui a été capturée à partir de l'UC 2 était 1900 au lieu de 900. Vous pouvez éviter ce problème si vous activez l'affinité du processeur SQL Server.

Les calculs de temps suivants sont utilisés dans cet exemple :
  • le mais incorrect signalé valeur : (100 1900 = 1800) / 200 = 9 ms
  • corriger valeur : (100 900 = 800) / 200 = 4 ms
La valeur de la colonne Durée de la RPC : terminé événement serait être déclarée comme ms 9 au lieu de ms. 4 ce résultat est double plus de la valeur correcte de ms 4.

Messages d'avertissement dérives sont ajoutés à SQL Server 2005 pour indiquer que les sorties de performances qui sont mentionnés précédemment peuvent ne pas être fiables. Dans certaines situations saluer, SQL Server 2005 SP2 peut signaler des messages d'avertissement sur les éléments suivants :
  • Messages d'avertissement dérives False
  • Dérives peuvent devenir des dizaines de millisecondes sans entraîner un effet notable système
Vous devez être prudent lorsque vous évaluez les sorties liées des performances et lorsque vous comparez les sorties liées de performances pour le minutage de l'horloge du mur. S'il n'y a aucun signe d'autres problèmes de performances, vous pouvez généralement ignorer les messages d'avertissement dérives. Par exemple, vous pouvez généralement ignorer les messages d'avertissement dérives dans les situations suivantes :
  • Processus sont exécutent comme prévu.
  • Requêtes SQL Server n'exécutez pas dans les modèles durational étranges.
  • Vous ne voyez pas de signes d'autres goulots d'étranglement.
Cependant, avant que vous ignorez les dérives avertissement messages, nous vous recommandons de contacter votre fabricant pour vous assurer qu'aucun connus RDTSC problèmes existent.

Vous pouvez utiliser indicateur de suivi 8033 (?T8033) pour retourner dans le comportement de génération d'états dans la version d'origine de SQL Server 2005 et SQL Server 2005 SP1. La version d'origine de SQL Server 2005 et SQL Server 2005 SP1 ne transmettent pas dérives messages d'avertissement. Si vous exécutez la version d'origine de SQL Server 2005 ou SQL Server 2005 SP1 sans problème, vous pouvez généralement ignorer les messages.

Pourquoi l'instruction WAITFOR délai fonctionne correctement ? Qu'en est-il système périodique processus ?

Mécanismes de délai d'attente ne sont pas affectés par la conception de haute résolution. SQL Server n'utilise pas le timer haute résolution pour les activités en fonction de minuteur. Certaines activités de délai d'attente sont basées sur l'horloge de résolution réduit qui utilise la fonction GetTickCount . Ces activités délai incluent délai de verrouillage, l'instruction WAITFOR délai et détection des verrous mortels.
Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft :
938448 Un serveur Windows Server 2003 pouvez rencontrer les dérives de compteur d'horodatage du temps si le serveur utilise des processeurs AMD Opteron double c?ur ou des processeurs AMD Opteron multiprocesseurs
895980 Programmes qui utilisent la fonction QueryPerformanceCounter peuvent effectuer mal dans Windows Server 2003 et Windows XP
Les produits tiers Cet article décrit sont mentionnés par des sociétés indépendantes de Microsoft. Microsoft ne fait aucune garantie, implicite ou autre, sur les performances ou la fiabilité de ces produits.

Propriétés

Numéro d'article: 931279 - Dernière mise à jour: mardi 16 décembre 2008 - Version: 7.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • 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
Mots-clés : 
kbmt kbtshoot kbexpertiseadvanced kbsql2005engine kbprb KB931279 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 931279
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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