Τιμές χρονισμού του SQL Server ενδέχεται να είναι εσφαλμένα, όταν χρησιμοποιείτε τα βοηθητικά προγράμματα ή τεχνολογίες που αλλάζουν συχνότητες CPU

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 931279 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Microsoft SQL Server 2005 χρησιμοποιεί τον μετρητή CPU υψηλής ανάλυσης για την παροχή δυνατοτήτων χρονισμού μικροδευτερόλεπτο. Ένα μικροδευτερόλεπτο είναι το εκατομμυριοστό ενός δευτερολέπτου (ή το ένα χιλιοστό ενός χιλιοστού του δευτερολέπτου). Ωστόσο, τιμές χρονισμού του SQL Server μπορεί να είναι εσφαλμένες, αν χρησιμοποιείτε τεχνολογίες που αλλάζουν συχνότητες CPU. Για παράδειγμα, αυτό το ζήτημα ενδέχεται να προκύψει όταν χρησιμοποιείτε οποιαδήποτε από τις ακόλουθες τεχνολογίες:
  • CPU μελέτης βήμα προς βήμα
  • AMD Cool'n ' Quiet τεχνολογία
  • Διαφόρων συνδυασμών τροφοδοσίας
Αυτό το άρθρο περιέχει μεθόδους και επιπλέον πληροφορίες που θα σας βοηθήσουν να επιλύσετε αυτό το ζήτημα.

Συμπτώματα

Κατά τη χρήση της εντολής SET ΣΤΑΤΙΣΤΙΚΏΝ TIME για να εμφανίσετε την εκτέλεση διακομιστή ανάλυσης και μεταγλώττιση φορές, ενδέχεται να λάβετε λανθασμένες τιμές. Για παράδειγμα, ενδέχεται να παρατηρήσετε ότι ο χρόνος του χρόνου εκτέλεσης του SQL Server είναι πολύ περισσότερο από το χρόνο της CPU. Αυτό το ζήτημα ενδέχεται να επηρεάσει την ακρίβεια της ρύθμιση των επιδόσεων. Αυτό το ζήτημα προκύπτει όταν χρησιμοποιείτε μία από τις τεχνολογίες που παρατίθενται στην ενότητα "Σύνοψη" στο διακομιστή.

Αιτία

Αυτό το ζήτημα παρουσιάζεται επειδή αλλάζουν συχνότητες CPU όταν χρησιμοποιείτε αυτές τις τεχνολογίες. SQL Server 2005 χρησιμοποιεί τον μετρητή CPU υψηλής ανάλυσης για την παροχή δυνατοτήτων χρονισμού μικροδευτερόλεπτο. Εάν αλλάξουν CPU συχνότητες για την εξοικονόμηση ενέργειας και μείωση της εξόδου θερμότητας, υπολογισμού διάρκειες μπορεί να είναι εσφαλμένη.

Προτεινόμενη αντιμετώπιση

Πληροφορίες για το Service Pack

Για να επιλύσετε αυτό το ζήτημα, αποκτήστε το πιο πρόσφατο service pack για SQL Server 2005. Για περισσότερες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft (Knowledge Base):
913089Τρόπος απόκτησης του τελευταίου service pack για τον SQL Server 2005
ΣΗΜΕΙΩΣΗΣτον SQL Server 2005 Service Pack 3 και σε μελλοντικά service pack, δεν χρησιμοποιείται η σήμανση χρόνου επεξεργαστή. Αυτές οι εκδόσεις του SQL Server 2005 χρησιμοποιεί μια πιο αξιόπιστη χρονομέτρου που έχει μια μέγιστη ακρίβεια 1 χιλιοστό του δευτερολέπτου.

Κατάσταση

Το ζήτημα αυτό διορθώθηκε αρχικά στο SQL Server 2005 Service Pack 3.

Εναλλακτικός τρόπος αντιμετώπισης

SQL Server 2005 απαιτεί σημείων δεδομένων γνωστή και σταθερά για να εκτελέσετε τη ρύθμιση της απόδοσης ακριβείς. Εάν είναι ενεργοποιημένες οι δυναμικές τροποποιήσεις συχνότητα CPU στον υπολογιστή, μπορείτε να τις απενεργοποιήσετε έτσι ώστε η CPU διατηρήσετε μια σταθερή συχνότητα ταχύτητα πριν ξεκινήσετε την Εποπτεία και ρύθμιση της απόδοσης του SQL Server. Για να το κάνετε αυτό, χρησιμοποιήστε τις παρακάτω μεθόδους.

Ρυθμίστε τις παραμέτρους του συνδυασμού τροφοδοσίας του υπολογιστή για την επιβολή της CPU για να παραμένουν στη μέγιστη συχνότητα

Για να το κάνετε αυτό, ακολουθήστε τα εξής βήματα: (Use the tools in the Windows Recovery Environment to repair Windows Vista. To do this, follow these steps:):
  1. Κάντε κλικStartΚάντε κλικΕκτέλεσηTYPEPowercfg.cpl, και στη συνέχεια κάντε κλικ στο κουμπίOk.
  2. ΣτοΙδιότητες: Επιλογές ενέργειαςπαράθυρο διαλόγου, κάντε κλικ στο κουμπίAlways OnΣτοPower schemesΛίστα (List).
  3. Κάντε κλικOk.
A drift may occur. A drift is a divergence between CPU frequency values. For more information, see the "Drift" section. In this case, you must restart Microsoft Windows to resynchronize frequencies of all CPUs after you change the power scheme.

If you cannot restart the computer, enable SQL Server processor affinity to prevent SQL Server worker threads from moving between CPUs. When you do this, you do not have to restart the computer even if a divergence between CPU frequency values occurs. To enable SQL Server processor affinity for all CPUs on the server, you must use a different mask, depending on the number of logical processors that are on the server.

The following table lists example scenarios.
Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
CPU numberStatements to enable processor affinity
02 CPUsexec sp_configure 'affinity mask', 0x00000003
ΜΕΤΆΒΑΣΗ
reconfigure
ΜΕΤΆΒΑΣΗ
04 CPUsexec sp_configure 'affinity mask', 0x0000000F
ΜΕΤΆΒΑΣΗ
reconfigure
ΜΕΤΆΒΑΣΗ
08 CPUsexec sp_configure 'affinity mask', 0x000000FF
ΜΕΤΆΒΑΣΗ
reconfigure
ΜΕΤΆΒΑΣΗ
16 CPUsexec sp_configure 'affinity mask', 0x0000FFFF
ΜΕΤΆΒΑΣΗ
reconfigure
ΜΕΤΆΒΑΣΗ
32 CPUsexec sp_configure 'affinity mask', 0xFFFFFFFF
ΜΕΤΆΒΑΣΗ
reconfigure
ΜΕΤΆΒΑΣΗ
ΣΗΜΕΙΩΣΗIt may be insufficient to disable CPU frequency variation features at the BIOS level. Various third-party utilities can alter CPU frequencies. Some implementations enable frequency adjustments even when the CPUs are under maximum power scheme settings. In this case, you must disable these third-party utilities when you perform performance tuning in SQL Server 2005.

Use third-party utilities and drivers to synchronize CPU frequencies and CPU clock counters

On rare occasions, a system may require an update from the manufacturer to correct CPU frequency issues. It is a best practice to check the system for the latest BIOS, microcode, and firmware updates if you suspect that the system may have an issue.

Περισσότερες πληροφορίες

Microsoft SQL Server 2000 and earlier versions of SQL Server use the Windows timing mechanisms. The timing mechanisms use millisecond-precision values. Typically, this precision is 10 to 15 ms. However, the precision may be as large as 55 ms. SQL Server queries frequently complete within single-digit millisecond or microsecond time spans. This precision requires a high-resolution timer. Therefore, these versions of SQL Server report the duration of some queries as 0 ms. Therefore, it is difficult to monitor performance and tune SQL Server performance in earlier versions of SQL Server.

SQL Server 2005 improves accuracy by using the high-resolution CPU counter to provide microsecond timing capabilities. When you use the technologies that are listed in the "Summary" section, the reported timing values may be incorrect.

This issue may affect the following objects and features:
  • Trace events:
    • Για ναΠροσοχήΣυμβάν
    • Events in the Stored Procedures node
    • Events in the TSQL node
    • Events in the Objects node
    • Events in the Transactions node
  • Dynamic management views:
    • 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
  • The SET STATISTICS TIME statement
  • Για ναsysprocessessystem table
After you install SQL Server 2005 Service Pack 2 (SP2), SQL Server logs an error message in the error log when SQL Server detects that the high resolution timers are out of sync between the CPUs. The error message indicates that performance timings may not be accurate, and users should use performance data with caution.

The text of the error message resembles one of the following error messages:
Μήνυμα λάθους 1
The time stamp counter of CPU on scheduler id 2 is not synchronized with other CPUs.
Μήνυμα λάθους 2
CPU time stamp frequency has changed from 191469 to 1794177 ticks per millisecond. The new frequency will be used
SQL Server uses the Real Time Stamp Counter (RDTSC) instruction to acquire the 64-bit CPU tick count. You can divide this value by the CPU frequency to convert the value to millisecond values. Timing variations can occur when the CPU frequency changes or drift occurs.

CPU stepping

CPU stepping is defined as a deliberate change in CPU frequency. CPU stepping may also be known as Intel SpeedStep technology or AMD PowerNow! technology. When CPU stepping occurs, the CPU speed may increase or decrease in increments as small as 50 MHz to conserve energy and reduce heat output. CPUs that are within the same non-uniform memory access (NUMA) node do not independently adjust frequencies.

The following table illustrates how CPU stepping changes may affect timing calculations.
Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
ΕνέργειαRDTSC TicksTicks per millisecond (Frequency)Wall clock time
Start Batch12000
Frequency Step Down2001001ms
End Batch5003ms
TOTALS5004ms
SQL Server captures the RDTSC ticks at both the start and end RDTSC ticks. Then, SQL Server divides the ticks by the frequency value.

In this example, the following timing calculations occur when you use a frequency value of 200 or 100:
  • Frequency 200:500/200 = 2.5 ms
  • Frequency 100:500/100 = 5 ms
Neither of the timing calculations matches the actual wall clock time of 4 ms.

If this calculation is used in anRPC: ολοκληρώθηκεtrace event, thedurationANDend timedata columns are reported incorrectly. Για ναRPC: ολοκληρώθηκεσυμβάντων καταγράφει το πλήθος υποδιαιρέσεων χρονομέτρησης της CPU και ώρα ρολογιού τοίχου. Για να αποκτήσετε την υψηλότερη ανάλυση χρονισμού από τα Windows παρέχει στον SQL Server 2005, τοδιάρκειαANDώρα λήξηςυπολογίζονται οι στήλες δεδομένων σε ένα πρόγραμμα εντοπισμού του SQL Server χρησιμοποιώντας το που πέρασαν πλήθος υποδιαιρέσεων χρονομέτρησης της CPU. Για ναώρα λήξηςστήλη υπολογίζεται προσθέτοντας τοδιάρκειαστήλη για τοώρα έναρξηςCOLUMN. Σε αυτό το παράδειγμα, τοώρα λήξηςστήλη υπολογίζεται προσθέτοντας εσφαλμένα 2.5 ms ή 5 ms για την ώρα έναρξης.

Παρέκκλιση

Παρέκκλιση είναι ένα divergence σε τιμές ρολογιού του Επεξεργαστή. Τα συστήματα με πολλούς επεξεργαστές μπορούν να παράγουν διαφορετικές τιμές του ρολογιού της CPU για το ίδιο σημείο στο χρόνο. Παρόλο που δεν είναι συνηθισμένος, CPU ενδέχεται να αντιμετωπίσετε διαχωρισμό ρολόι μέσα στο χρόνο.

Το παρακάτω παράδειγμα δείχνει πώς αλλαγές παρέκκλιση μπορεί να επηρεάσει το αποτέλεσμα τηςδιάρκειαστήλη δεδομένων σε μια ανίχνευση του SQL Server. Το παράδειγμα αυτό θεωρεί ότι η συχνότητα CPU παραμένει σταθερή κατά 200 κτύπων ανά χιλιοστό του δευτερολέπτου. Ο ακόλουθος πίνακας παρουσιάζει τα συμβάντα σε αυτό το σενάριο.
Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
ΕνέργειαΠρογραμματισμένη Επεξεργαστή των WindowsRDTSC CPU 1RDTSC CPU 2Ώρα ρολογιού τοίχου
Έναρξη δέσμης110011000
Τέλος δέσμης290019004 ms
ΣΎΝΟΛΑ4 ms
SQL Server καταγράφει τις υποδιαιρέσεις RDTSC και τα σημεία έναρξης και τα τελικά σημεία. Στη συνέχεια, SQL Server χωρίζει τις υποδιαιρέσεις RDTSC επί την τιμή συχνότητας. Σε αυτό το παράδειγμα, τα Windows προγραμματισμένη του νήματος λειτουργίας του SQL Server σε δύο διαφορετικούς επεξεργαστές. Το νήμα εργασίας του SQL Server που η δέσμη των υπηρεσιών εκτέλεσε πρώτα σε η πρώτη κεντρική μονάδα Επεξεργασίας (CPU 1).

Ωστόσο, διακόπηκε η εκτέλεση δέσμης σε κάποιο σημείο και SQL Server αποστέλλονται την εκτέλεση δέσμης στην ουρά βρίσκεται σε αναμονή. When SQL Server sent the SQL Server worker thread that services this batch to the runnable queue again, Windows dispatched the thread to run on the second CPU (CPU 2). The SQL Server worker thread completed running on CPU 2. Because of CPU drift, the end tick value that was captured from CPU 2 was 1900 instead of 900. You can avoid this behavior if you enable SQL Server processor affinity.

The following timing calculations are used in this example:
  • The incorrect but reported value:(1900 – 100 = 1800) / 200 = 9 ms
  • Correct value:(900 – 100 = 800) / 200 = 4 ms
Η τιμή τουdurationστήλη για τοRPC: ολοκληρώθηκεevent would be reported as 9 ms instead of 4 ms. This result is more than double the correct value of 4 ms.

Drift warning messages are added to SQL Server 2005 to indicate that the performance outputs that are mentioned earlier may not be reliable. In some uncovered situations, SQL Server 2005 SP2 may report warning messages about the following:
  • False drift warning messages
  • Drift can become tens of milliseconds without causing a noticeable system effect
You must be careful when you evaluate the performance-related outputs and when you compare the performance-related outputs to wall clock timings. If there are no signs of other performance problems, you can typically ignore the drift warning messages. For example, you can typically ignore the drift warning messages in the following situations:
  • Processes are running as expected.
  • SQL Server queries are not running in strange durational patterns.
  • You do not see signs of other bottlenecks.
However, before you ignore the drift warning messages, we recommend that you contact your manufacturer to make sure that no known RDTSC issues exist.

You can use trace flag 8033 (–T8033) to return to the reporting behavior in the original release version of SQL Server 2005 and in SQL Server 2005 SP1. The original release version of SQL Server 2005 and SQL Server 2005 SP1 do not report drift warning messages. If you are running the original release version of SQL Server 2005 or SQL Server 2005 SP1 without problems, you can typically ignore the messages.

Why does the WAITFOR DELAY statement work correctly? What about periodic system processes?

Time-out mechanisms are not affected by the high-resolution design. SQL Server does not use the high-resolution timer for timer-based activities. Some time-out activities are based on the reduced resolution timer that uses theGetTickCountFunction. These time-out activities include lock time-out, the WAITFOR DELAY statement, and deadlock detection.
Για περισσότερες πληροφορίες, κάντε κλικ στους αριθμούς των άρθρων παρακάτω για να προβάλετε τα άρθρα της Γνωσιακής Βάσης (Knowledge Base) της Microsoft:
938448A Windows Server 2003-based server may experience time-stamp counter drift if the server uses dual-core AMD Opteron processors or multiprocessor AMD Opteron processors
895980Programs that use the QueryPerformanceCounter function may perform poorly in Windows Server 2003 and in Windows XP
Τα προϊόντα άλλων κατασκευαστών που αναφέρονται σε αυτό το άρθρο έχουν κατασκευαστεί από εταιρείες ανεξάρτητες από τη Microsoft. Η Microsoft δεν παρέχει καμία εγγύηση, σιωπηρή ή άλλη, σχετικά με τις επιδόσεις ή την αξιοπιστία αυτών των προϊόντων.

Ιδιότητες

Αναγν. άρθρου: 931279 - Τελευταία αναθεώρηση: Παρασκευή, 24 Δεκεμβρίου 2010 - Αναθεώρηση: 2.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
Λέξεις-κλειδιά: 
kbtshoot kbexpertiseadvanced kbsql2005engine kbprb kbmt KB931279 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:931279

Αποστολή σχολίων

 

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