Pierakstīties, izmantojot Microsoft
Pierakstīties vai izveidot kontu
Sveicināti!
Atlasīt citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

Kopsavilkums

Microsoft SQL Server 2005 izmanto augstas izšķirtspējas CPU skaitītāju, lai iegūtu sekundāru hronometrāžas iespējas. Sekundārā ir viena miljonā daļa no otrās (vai viena tūkstoša tūkstošdaļas). Taču SQL Server hronometrāžas vērtības var būt nepareizas, ja izmantojat tehnoloģijas, kas maina CPU frekvences. Piemēram, šī problēma var rasties, ja izmantojat kādu no tālāk norādītajām tehnoloģijām.

  • CPU etaps

  • AMD Cool'n'Quiet tehnoloģija

  • Dažādas Power Schemes

Šajā rakstā ir sniegtas metodes un papildu informācija, kas palīdzēs novērst šo problēmu.

Simptomi

Ja tiek izmantots priekšraksts SET STATISTICs TIME, lai rādītu servera izpildi, parse un kompilēšanas laikus, iespējams, tiek iegūtas nepareizas vērtības. Piemēram, var gadīties, ka SQL Server izpildes laika pagājušais laiks ir daudz lielāks par centrālā procesora laiku. Šī problēma var ietekmēt veiktspējas precizēšanas precizitāti. Šī problēma rodas, ja izmantojat kādu no tehnoloģijām, kas ir norādītas servera sadaļā "kopsavilkums".

Cēlonis

Šī problēma rodas tāpēc, ka, izmantojot šīs tehnoloģijas, tiek mainītas centrālā procesora frekvences. SQL Server 2005 izmanto augstas izšķirtspējas CPU skaitītāju, lai iegūtu sekundāru hronometrāžas iespējas. Ja CPU frekvences ir mainītas, lai taupītu enerģiju un samazinātu siltumu, aprēķinātie ilgumi var būt nepareizi.

Risinājums

Informācija par servisa pakotni

Lai atrisinātu šo problēmu, iegūstiet jaunāko SQL Server 2005 servisa pakotni. Lai iegūtu papildinformāciju, noklikšķiniet uz šī raksta numura, lai skatītu Microsoft zināšanu bāzes rakstu:

913089 Jaunākās SQL Server 2005 servisa pakotnes iegūšanaPiezīmes Programmā SQL Server 2005 3. servisa pakotne un jaunākās servisa pakotnēs nav izmantots procesora laikspiedols. Šīs SQL Server 2005 versijas izmanto uzticamāku taimeri ar maksimālo precizitāti 1 milisekundēs.

Statusa

Šī problēma pirmo reizi tika novērsta ar SQL Server 2005 3. servisa pakotni.

Risinājums

SQL Server 2005 ir jāpazīst un jāstabilizē datu punkti, lai veiktu precīzu veiktspēju. Ja datorā ir iespējots dinamiskās CPU frekvences pielāgojumi, varat tos atspējot, lai CPU uzturētu stabilu frekvences frekvenci, pirms sākat pārraudzīt un pielāgot SQL Server veiktspēju. Lai to izdarītu, izmantojiet tālāk norādītās metodes.

Datora Power Scheme konfigurēšana, lai piespiestu CPU saglabāt maksimālo frekvenci

Lai to izdarītu, veiciet tālāk norādītās darbības.

  1. Noklikšķiniet uz Sākt, noklikšķiniet uz palaist, ierakstiet powercfg. cplun pēc tam noklikšķiniet uz Labi.

  2. Dialoglodziņā Power Options rekvizīti noklikšķiniet uz vienmēr ieslēgts sarakstā Power Schemes .

  3. Noklikšķiniet uz Labi.

Iespējama novirzīšana. Drift ir starpība starp centrālā procesora frekvenču vērtībām. Lai iegūtu papildinformāciju, skatiet sadaļu "nobīde". Šajā gadījumā pēc tam, kad maināt Power Scheme, ir jārestartē Microsoft Windows, lai atkārtoti sinhronizētu visu procesoru frekvences. Ja nevarat restartēt datoru, iespējojiet SQL Server Processor afinitāti, lai novērstu SQL Server darbinieku pavedienu pārvietošanu starp centrālajiem procesoriem. Kad tas ir paveikts, dators ir jārestartē pat tad, ja ir atšķirības starp CPU frekvences vērtībām. Lai iespējotu SQL Server Processor afinitāti pret visiem centrālajiem procesoriem serverī, ir jāizmanto cita maska atkarībā no tā, cik loģisku procesoru ir serverī. Tālāk esošajā tabulā ir uzskaitīti piemēru scenāriji.

Centrālā procesora numurs

Priekšraksti, lai iespējotu procesoru radniecību

02 CPU

exec sp_configure "radniecības maska", 0x00000003GOreconfigureGO

04 CPU

exec sp_configure "radniecības maska", 0x0000000FGOreconfigureGO

08 CPU

exec sp_configure "radniecības maska", 0x000000FFGOreconfigureGO

16 procesori

exec sp_configure "radniecības maska", 0x0000FFFFGOreconfigureGO

32 CPU

exec sp_configure "radniecības maska", 0xFFFFFFFFGOreconfigureGO

Piezīme. Iespējams, ka ir nepietiekams, lai atspējotu CPU frekvenču variantu līdzekļus BIOS līmenī. Dažādu trešo pušu utilītas var mainīt CPU frekvences. Daži implementācijas iespējo frekvences korekciju pat tad, ja CPU ir zem maksimālo Power Scheme iestatījumiem. Šajā gadījumā ir jāatspējo šīs trešo pušu utilītas, veicot veiktspējas regulēšanu programmā SQL Server 2005.

Trešo pušu utilītu un draiveru izmantošana, lai sinhronizētu CPU frekvences un CPU pulksteņa skaitītājus

Retos gadījumos sistēmai var būt nepieciešams ražotāja atjauninājums, lai novērstu CPU frekvences problēmas. Ja uzskatāt, ka sistēmai var būt problēma, ieteicams pārbaudīt sistēmas jaunāko BIOS, nekodeksu un programmaparatūras atjauninājumus.

Papildinformācija

Microsoft SQL Server 2000 un vecākas SQL Server versijas izmanto Windows hronometrāžas mehānismus. Hronometrāžas mehānismi izmanto milisekunžu precizitātes vērtības. Parasti šī precizitāte ir 10 līdz 15 ms. Tomēr precizitāte var būt lielāka par 55 MS. SQL Server vaicājumi bieži tiek pabeigti viencipara milisekunžu vai sekundārajos laika periodos. Šī precizitāte prasa augstas izšķirtspējas taimeri. Tāpēc šīs SQL Server versijas atskaišu dažu vaicājumu ilgums ir 0 ms. Tāpēc ir grūti pārraudzīt veiktspēju un pielāgot SQL Server veiktspēju agrākās SQL Server versijās. SQL Server 2005 uzlabo precizitāti, izmantojot augstas izšķirtspējas CPU skaitītāju, lai nodrošinātu sekundārās hronometrāžas iespējas. Izmantojot tehnoloģijās, kas norādītas sadaļā kopsavilkums, var būt nepareizas ziņotās hronometrāžas vērtības. Šī problēma var ietekmēt šādus objektus un līdzekļus:

  • Izsekošanas notikumi:

    • Uzmanības notikums

    • Notikumi iekļautās procedūras mezglā

    • Notikumi TSQL mezglā

    • Notikumi objektu mezglā

    • Notikumi darbību mezglā

  • Dinamiskie pārvaldības skati:

    • 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

  • Priekšraksts SET STATISTICs TIME

  • Sysprocesses sistēmas tabula

Pēc tam, kad instalējat SQL Server 2005 2. servisa pakotni (SP2), SQL Server reģistrē kļūdas ziņojumu kļūdu žurnālā, ja SQL Server nosaka, ka augstas izšķirtspējas taimeri nav sinhronizēti starp centrālajiem procesoriem. Kļūdas ziņojums norāda, ka veiktspējas hronometrāža, iespējams, nav precīza, un lietotājiem jārīkojas uzmanīgi. Kļūdas ziņojuma teksts līdzinās vienam no šiem kļūdas ziņojumiem:

1. kļūdas ziņojums

Laika marķiera skaitītājs ar plānotāja ID 2 nav sinhronizēts ar citiem centrālajiem procesoriem.

2. kļūdas ziņojums

CPU laikspiedola laika laikspiedols ir mainīts no 191469 uz 1794177 ērces uz milisekunžu. Jaunais biežums tiks izmantots

SQL Server izmanto reāllaika laikspiedola skaitītāja (RDTSC) instrukciju, lai iegūtu 64 bitu CPU ērču skaitu. Šo vērtību var dalīt ar CPU frekvenci, lai konvertētu vērtību uz milisekunžu vērtībām. Hronometrāžas variācijas var rasties, ja notiek centrālā procesora frekvences izmaiņas vai drift.

CPU etaps

CPU etaps ir definēts kā tīša izmaiņas centrālā procesora frekvencē. CPU etaps var būt arī zināma kā Intel SpeedStep mazjaudas tehnoloģija vai AMD PowerNow! tehnoloģiju. Kad notiek CPU pakāpeniskā palielināšana, centrālā procesora ātrums var palielināties vai samazināties kā mazs kā 50 MHz, lai taupītu enerģiju un samazinātu siltuma jaudu. Centrālie procesori, kas atrodas tajā pašā neviendabīgās atmiņas piekļuves (NUMA) mezglā, nav neatkarīgi pielāgot frekvences. Tālāk esošajā tabulā ir parādīts, kā CENTRĀLes pakāpeniskās izmaiņas var ietekmēt hronometrāžas aprēķinus.

Darbības

RDTSC ērces

Ērces per milisekunžu (FREQUENCY)

Sienas pulksteņa laiks

Sākt paketi

1

200

0

Frekvences solis uz leju

200

100

1ms

Pabeigt paketi

500

3ms

KOPSUMMAS

500

4ms

SQL Server tver RDTSC ērces gan sākuma, gan beigšanas RDTSC ērces. Pēc tam SQL Server ērces tiek dalītas pēc frekvences vērtības. Šajā piemērā tiek parādīti šādi hronometrāžas aprēķini, ja izmantojat 200 vai 100 frekvences vērtību:

  • Frequency 200: 500/200 = 2,5 MS

  • Frequency 100: 500/100 = 5 MS

Neviens no hronometrāžas aprēķiniem neatbilst reālajam sienas pulksteņa laikam 4. Ja šis aprēķins tiek lietots RPC: pabeigtā trasēšanas notikuma datu kolonnas ilgums un beigu laiks tiek ziņotas nepareizi. RPC: pabeigtie notikumi tver sākuma sienas pulksteņa laiku un centrālā procesora ērču skaitu. Lai iegūtu augstākas izšķirtspējas hronometrāžas nekā Windows Supplies programmā SQL Server 2005, datu kolonnas ilgums un beigu laiks SQL Server trasē tiek aprēķinātas, izmantojot pagājušo CPU ērču skaitu. Kolonna beigšanas laiks tiek aprēķināta, pievienojot kolonnu ilgumssākuma laiks . Šajā piemērā kolonna beigšanas laiks tiek aprēķināta, nepareizi pievienojot 2,5 MS vai 5 MS sākuma laiku.

Drift

Drift ir starpība centrālā pulksteņa vērtībās. Sistēmas, kurām ir vairāki centrālie procesori, var izveidot atšķirīgus CPU pulksteņa vērtības tādā pašā brīdī. Lai gan tas nav izplatīts, centrālie procesori laika gaitā var rasties pulksteņa atdalīšana. Tālāk sniegtajā piemērā ir parādīts, kā izmaiņas, kas var ietekmēt datu kolonnas DURATION rezultātus SQL Server trasē. Piemērā tiek pieņemts, ka CPU biežums paliek nemainīgs pie 200 ērču uz milisekunžu. Tālāk esošajā tabulā ir parādīti notikumi šajā scenārijā.

Darbības

Windows Plānotais centrālais procesors

CPU 1 RDTSC

CPU 2 RDTSC

Sienas pulksteņa laiks

Sākt paketi

1

100

1100

0

Pabeigt paketi

2

900

1900

4 MS

KOPSUMMAS

4 MS

SQL Server tver RDTSC ērces gan sākuma punktos, gan galapunktos. Pēc tam SQL Server RDTSC ērces dala pēc frekvences vērtības. Šajā piemērā Windows ieplānoja SQL Server darba pavedienu divos dažādos procesoros. SQL Server darba pavediens, kas nodrošina, ka pakete vispirms darbojās ar pirmo centrālo procesoru (CPU 1). Taču noteiktā brīdī Pakešveida izpilde tika pārtraukta, un SQL Server nosūtīja paketes izpildi gaidīšanas rindā. Kad SQL Server nosūtīja SQL Server darba pavedienu, kas pakalpojumu šo paketi runnable rindā no jauna, Windows nosūtījis pavedienu, lai palaistu otrā centrālā procesora (CPU 2). SQL Server darba pavediens pabeigts, kas darbojas ar CPU 2. Centrālā procesora svārstību dēļ no centrālā procesora 2 ir 1900, nevis 900. Varat izvairīties no šīs darbības, ja iespējojat SQL Server procesoru radniecību. Šajā piemērā tiek izmantoti tālāk norādītie hronometrāžas aprēķini.

  • Nepareizā, bet ziņotā vērtība: (1900-100 = 1800)/200 = 9 MS

  • Pareizā vērtība: (900 – 100 = 800)/200 = 4 MS

RPC: pabeigtā pasākuma kolonnas ilgums vērtība tiks ziņota kā 9 MS, nevis 4 MS. Šis rezultāts ir lielāks nekā divkāršā pareizā vērtība 4 MS. Drift brīdinājuma ziņojumi tiek pievienoti SQL Server 2005, lai norādītu, ka iepriekš minētie veiktspējas rezultāti var būt neticami. Dažos neaptvertos gadījumos SQL Server 2005 SP2 var ziņot par brīdinājuma ziņojumiem par šo:

  • Nepatiess drift brīdinājuma ziņojumi

  • Drift var kļūt par desmitiem milisekundes, neradot pamanāmas sistēmas efektu

Novērtējot ar veiktspēju saistītos rezultātus, jums ir jābūt uzmanīgam, un, salīdzinot ar veiktspēju saistītos rezultātus ar sienas pulksteņa hronometrāžu. Ja nav nevienas citas veiktspējas problēmu pazīmes, jūs parasti ignorējat brīdinājuma ziņojumus. Piemēram, parasti var ignorēt drift brīdinājuma ziņojumus šādās situācijās:

  • Procesi darbojas, kā paredzēts.

  • SQL Server vaicājumi nedarbojas dīvaini ilguma modeļos.

  • Nav redzamas citu vājo vietu pazīmes.

Tomēr, pirms ignorējat drift brīdinājuma ziņojumus, iesakām sazināties ar ražotāju, lai pārliecinātos, vai nav zināmu RDTSC problēmu. Varat izmantot izsekošanas karodziņu 8033 (– T8033), lai atgrieztos ziņošanas darbībā SQL Server 2005 un SQL Server 2005 SP1 sākotnējā laidiena versijā. SQL Server 2005 un SQL Server 2005 SP1 oriģinālā laidiena versija neziņo par novirzēm brīdinājuma ziņojumiem. Ja datorā darbojas SQL Server 2005 vai SQL Server 2005 SP1 oriģinālā laidiena versija, jūs parasti varat ignorēt ziņojumus.

Kāpēc WAITFOR AIZKAVEs pārskats darbojas pareizi? Kā ir periodiski sistēmas procesi?

Augstas izšķirtspējas Noformējums neietekmē taimauta mehānismus. SQL Server neizmanto augstas izšķirtspējas taimeri darbībām, kuru pamatā ir taimeris. Dažas taimauta darbības ir pamatotas uz samazinātas izšķirtspējas taimeri, kas izmanto funkciju GetTickCount . Šajās taimauta darbībās ietilpst bloķēšanas taimauts, WAITFOR AIZKAVEs pārskats un bloķēšanas atklāšana.

Lai iegūtu papildinformāciju, noklikšķiniet uz šiem rakstu numuriem, lai skatītu rakstus Microsoft zināšanu bāzē:

938448 Ar Windows Server 2003 serveri var rasties laikspiedola skaitītāja nobīde, ja serveris izmanto divkodolu AMD Opteron procesorus vai vairāku procesoru AMD Opteron procesori

895980 Programmas, kas izmanto funkciju QueryPerformanceCounter, var darboties slikti operētājsistēmā Windows Server 2003 un operētājsistēmā Windows XPŠajā rakstā minētos trešo personu produktus ražo no korporācijas Microsoft neatkarīgi uzņēmumi. Microsoft nesniedz nekādas netiešas vai citādas garantijas par šo produktu veiktspēju vai uzticamību.

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?
Nospiežot Iesniegt, jūsu atsauksmes tiks izmantotas Microsoft produktu un pakalpojumu uzlabošanai. Jūsu IT administrators varēs vākt šos datus. Paziņojums par konfidencialitāti.

Paldies par jūsu atsauksmēm!

×