Kokkuvõte
Microsoft SQL Server 2005 kasutab kõrge eraldusvõimega PROTSESSORI loendurit, et pakkuda microsecond ajastuse võimalusi. Microsecond on üks miljondikku sekundist (või ühe tuhandik millisekundilist). Kuid SQL serveri ajastuse väärtused võivad olla valed, kui kasutate CPU sageduste muutmise tehnoloogiaid. See probleem võib ilmneda näiteks siis, kui kasutate mõnda järgmistest tehnoloogiatest.
-
PROTSESSORI samm
-
AMD Cool'n'Quiet tehnoloogia
-
Erinevad energiarežiimid
See artikkel sisaldab meetodeid ja lisateavet, mis aitavad teil selle probleemi lahendamiseks toimida.
Sümptomid
Kui kasutate serveri kaugkäivitamist, sõeluda ja kompileerimise aegu, võite saada valed väärtused. Näiteks võite märgata, et SQL serveri käivitamise aeg on möödunud palju rohkem kui CPU aeg. See probleem võib mõjutada jõudluse häälestamise täpsust. See probleem ilmneb siis, kui kasutate mõnda tehnoloogiast, mis on loetletud serveri jaotises "kokkuvõte".
Põhjus
See probleem ilmneb, sest CPU sagedused on muudetud, kui kasutate neid tehnoloogiaid. SQL Server 2005 kasutab kõrge eraldusvõimega PROTSESSORI loendurit, et pakkuda microsecond ajastuse võimalusi. Kui CPU sagedused muutuvad energia säästmiseks ja soojuse väljundi vähendamiseks, võivad arvutatud kestused olla valed.
Lahendus
Hoolduspaketi teave
Selle probleemi lahendamiseks hankige uusim hoolduspakett SQL Server 2005. Lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
913089 SQL Server 2005 uusima hoolduspaketi hankimineMärkus SQL Server 2005 hoolduspakett 3 ja uuemates pakettides ei kasutata protsessori ajatempel. Need SQL serveri 2005 versioonid kasutavad usaldusväärsem taimerit, mis on maksimaalse täpsusega 1 millisekundilist.
Olek
See probleem lahendati esmalt SQL Server 2005 Service Pack 3.
Lahendus
SQL Server 2005 vajab teadaolevate ja stabiilsete andmepunktide täpse jõudluse häälestamise funktsiooni. Kui arvutis on lubatud dünaamiliste PROTSESSORI sageduse reguleerimine, saate need keelata, et CPU säilitaks enne SQL serveri jõudluse jälgimist ja häälestamist püsiva sageduse. Selleks kasutage järgmisi meetodeid.
Konfigureerige arvuti Power Scheme, et protsessorid jääksid maksimaalse sagedusega.
Selleks toimige järgmiselt.
-
Klõpsake nuppu Start, klõpsake käsku Käivita, tippige käsk powercfg. cplja seejärel klõpsake nuppu OK.
-
Klõpsake dialoogiboksis Energiarežiimi suvandite atribuudid loendis energiarežiimid nuppu alati .
-
Klõpsake nuppu OK.
Võib esineda triiv. Väärtus Drift on CPU sageduse väärtuste erinevus. Lisateavet leiate jaotisest "Drift" ("Drift"). Sellisel juhul peate Microsoft Windowsi taaskäivitama, et uuesti sünkroonida kõigi protsessorite sagedused pärast energiarežiimi muutmist. Kui te ei saa arvutit taaskäivitada, lubage SQL serveri protsessori afiinsus SQL serveri töötaja lõimede vahel ühest protsessorist teise liikumiseks. Kui seda teete, pole teil vaja arvutit taaskäivitada, isegi kui esineb erinevus CPU sageduse väärtuste vahel. Kui soovite lubada SQL serveri protsessori afiinsust serveris kõigi protsessorite jaoks, peate kasutama mõnda muud maski, olenevalt serveris olevate loogiliste protsessorite arvust. Järgmises tabelis on loetletud näited stsenaariumid.
PROTSESSORI number |
Teatised protsessori afiinsuse lubamiseks |
---|---|
02 protsessorid |
exec sp_configure "afiinsusega mask", 0x00000003GOreconfigureGO |
04 protsessorid |
exec sp_configure "afiinsusega mask", 0x0000000FGOreconfigureGO |
08 protsessorid |
exec sp_configure "afiinsusega mask", 0x000000FFGOreconfigureGO |
16 protsessorit |
exec sp_configure "afiinsusega mask", 0x0000FFFFGOreconfigureGO |
32 protsessorid |
exec sp_configure "afiinsusega mask", 0xFFFFFFFFGOreconfigureGO |
Märkus. Võimalik, et BIOS-i tasandil ei saa CPU sageduse muutmise funktsioone keelata. Erinevad kolmanda osapoole Utiliidid võivad muuta CPU sagedust. Mõned rakendused võimaldavad sageduse korrigeerimist ka siis, kui protsessorid on maksimaalse energiarežiimi sätete all. Sellisel juhul peate keelama need kolmanda osapoole Utiliidid, kui teete SQL Server 2005 jõudluse häälestamise.
Kolmanda osapoole kommunaalteenuste ja draiverite kasutamine CPU sageduste ja CPU kella loendurite sünkroonimiseks
Harvadel juhtudel võib süsteem nõuda tootjalt värskendamist, et parandada CPU sageduse probleeme. Kui kahtlustate, et süsteemil võib ilmneda probleeme, on soovitatav vaadata uusima BIOS-i, mikrotasandil ja püsivara värskenduste süsteemi.
Lisateave
Microsoft SQL Server 2000 ja SQL serveri varasemad versioonid kasutavad Windowsi ajastuse mehhanisme. Ajastuse mehhanismid kasutavad millisekundilist väärtusi. Tavaliselt on see täpsus 10 – 15 MS. Kuid täpsus võib olla sama suur kui 55 MS. SQL serveri päringud on sageli täidetud ühe kohalise millisekundilist või microsecond aja jooksul. See täpsus nõuab kõrge eraldusvõimega taimerit. Seetõttu on nende SQL serveri versioonide korral mõne päringu kestuseks 0 MS. Seetõttu on raske jälgida jõudlust ja häälestada SQL serveri jõudlust SQL serveri varasemates versioonides. SQL Server 2005 parandab täpsust, kasutades kõrge eraldusvõimega PROTSESSORI loendurit, et pakkuda microsecond ajastuse võimalusi. Kui kasutate jaotises "kokkuvõte" loetletud tehnoloogiaid, võivad teatatud ajastuse väärtused olla valed. See probleem võib mõjutada järgmisi objekte ja funktsioone.
-
Jälita sündmusi:
-
Tähelepanu sündmus
-
Salvestatud protseduuride sõlme sündmused
-
Sündmused TSQL sõlmes
-
Sündmused sõlmes objektid
-
Kanded sõlme sündmused
-
-
Dünaamilised halduse vaated.
-
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
-
-
STATISTIKA ajaarvestuse seadmine
-
Sysprocesses süsteemi tabel
Pärast SQL Server 2005 Service Pack 2 (SP2) installimist logib SQL Server tõrketeate tõrkelogi, kui SQL Server tuvastab, et kõrge eraldusvõimega taimerid on protsessorite vahel sünkroonitud. Tõrketeade näitab, et jõudluse ajastused ei pruugi olla tõesed ja kasutajad peaksid kasutama jõudluse andmeid ettevaatlikult. Tõrketeate tekst meenutab ühte järgmistest tõrketeadetest.
Tõrketeade 1
Ajatempli loendurit Toiminguajasti ID 2-s ei sünkroonita teiste protsessoritega.
Tõrketeade 2
CPU ajatempel sagedus on muutunud 191469 kuni 1794177 puugid per millisekundilist. Uut sagedust kasutatakse
SQL Server kasutab reaalajas Stamp Counter (RDTSC) juhendamist, et omandada 64-bitine CPU. Väärtuse millisekundilist väärtuste teisendamiseks saate selle väärtuse jagada CPU sagedusega. Ajastuse variatsioonid võivad ilmneda siis, kui CPU sagedus muutub või triivib.
PROTSESSORI samm
PROTSESSORI samm on defineeritud kui PROTSESSORI sageduse tahtlik muutus. CPU tõhustamise võib olla tuntud ka kui Inteli SpeedStep tehnoloogia või AMD PowerNow! tehnoloogia. Kui ilmneb CPU samm, võib PROTSESSORI kiirus suurendada või vähendada juurdekasvu nii väiksena kui 50 MHz, et säästa energiat ja vähendada soojuse toodangut. Protsessorid, mis jäävad samasse mitte-ühtsesse mälu juurdepääsu (NUMA) sõlme, ei reguleeri sagedusi iseseisvalt. Järgmises tabelis on kujutatud, kuidas CPU-s muudatuste kiirendamine võib mõjutada ajastuse arvutusi.
Toimingu |
RDTSC puugid |
Puugid millisekundilist kohta (sagedus) |
Wall Clock Time |
---|---|---|---|
Käivita pakett |
1 |
200 |
0 |
Sageduse samm allapoole |
200 |
100 |
1ms |
Lõpeta pakett |
500 |
3ms |
|
KOGUSUMMAD |
500 |
4ms |
SQL Server hõivab RDTSC puugid nii alguses kui ka lõpus RDTSC puugid. Seejärel jagab SQL Server puugid sagedusega. Selles näites ilmnevad järgmised ajastuse arvutused, kui kasutate 200 või 100 sageduse väärtust.
-
Sagedus 200: 500/200 = 2,5 MS
-
Sagedus 100: 500/100 = 5 MS
Kumbki ajastuse arvutus vastab tegelikule Wall Clock time of 4 MS. Kui seda arvutust kasutatakse RPC-s : lõpetatud jälituse sündmus, kuvatakse andmete veergude kestus ja lõppaeg andmed valesti. RPC: lõpetatud sündmus jäädvustab alustades Wall Clock Time ja CPU puugi Count. Kui soovite, et SQL Server 2005 kasutaks suuremat eraldusvõime ajastust, arvutatakse SQL serveri trace kestuse ja lõpu andmete veerud, kasutades selleks kulunud CPU arvu. Veeru lõpuaeg arvutamisel lisatakse veeru kestus veergu algusaeg . Selles näites arvutatakse lõppaeg veeru lõppkellaaega valesti, lisades kas 2,5 MS või 5 MS algusaega.
Drift
Drift on PROTSESSORI kella väärtuste erinevus. Süsteemid, millel on mitu protsessorit, saavad samal ajahetkel toota erinevaid CPU Clock väärtusi. Kuigi see pole tavaline, võib protsessor aja jooksul eraldada kella lahususe. Järgmises näites demonstreeritakse, kuidas Drift muutused võivad mõjutada SQL serveri trace veeru kestuse andmed tulemit. Näites eeldatakse, et CPU sagedus jääb muutumatuks 200 puukide kohta millisekundilist. Järgmises tabelis on kujutatud selle stsenaariumi sündmusi.
Toimingu |
Windowsi ajastatud CPU |
CPU 1 RDTSC |
CPU 2 RDTSC |
Wall Clock Time |
---|---|---|---|---|
Käivita pakett |
1 |
100 |
1100 |
0 |
Lõpeta pakett |
2 |
900 |
1900 |
4 MS |
KOGUSUMMAD |
4 MS |
SQL Server hõivab RDTSC nii algus-kui ka lõpp-punktidena. Seejärel jagab SQL Server RDTSC puugid. Selles näites kavandas Windows SQL serveri töötaja lõime kahes erinevas protsessoris. SQL serveri töötaja lõim, kus pakett käivitati esimese CPU-ga (CPU 1). Kuid Pakktöötlus katkestati mingil hetkel ja SQL Server saatis pakktöötluse ootel järjekorda. Kui SQL Server saatis SQL serveri töötaja lõime, et teenused selle partii runnable järjekorda uuesti, lähetas Windows jutulõnga käivitamiseks teise CPU (CPU 2). SQL serveri töötaja lõim viidi lõpule CPU 2-ga. CPU triivi tõttu on lõpp-punktis "CPU 2" jäädvustatud väärtus 1900 asemel 900. Kui lubate SQL serveri protsessori afiinsust, saate seda vältida. Järgmises näites kasutatakse järgmisi ajastuse arvutusi.
-
Vale, kuid teatatud väärtus: (1900 – 100 = 1800)/200 = 9 MS
-
Õige väärtus: (900 – 100 = 800)/200 = 4 MS
RPC: lõpetatud sündmuse veeru kestus väärtuseks loetakse 4 MS asemel 9 MS. See tulem on suurem kui kahekordne 4 MS õige väärtus. Drift hoiatusteated lisatakse SQL Server 2005, et näidata, et varem mainitud jõudluse väljundid ei pruugi olla usaldusväärsed. Mõnes katmata olukordades võib SQL Server 2005 SP2 teatada järgmistest tõrketeadetest.
-
FALSE Drift Warning Messages
-
Drift võib muutuda kümneid millisekundites põhjustamata süsteemi efekti
Jõudlusega seotud väljundite hindamisel peate olema ettevaatlikud ja kui võrrelda jõudlusega seotud väljundeid Wall Clock ajastuse korral. Kui teil pole muid jõudlusega seotud probleeme, saate tavaliselt ignoreerida funktsiooni Drift Warning Messages. Näiteks saate tavaliselt ignoreerida järgmistes olukordades Drift Warning Messages.
-
Protsessid töötavad ootuspäraselt.
-
SQL serveri päringud ei tööta kummaline kestusega mustrid.
-
Te ei näe muude kitsaskohtade märke.
Siiski soovitame enne, kui ignoreerite triivi hoiatusteateid, võtta ühendust oma tootjaga, et veenduda, et teadaolevad RDTSC probleemid puuduvad. Saate kasutada jälituslipp 8033 (– T8033), et naasta SQL Server 2005 algses versioonis ja SQL Server 2005 hoolduspaketis SP1 olevasse aruandesse. SQL Server 2005 ja SQL Server 2005 SP1 Algne versioon ei teata Drift Warning Messages. Kui kasutate SQL Server 2005 või SQL Server 2005 SP1 algset versiooni, mis ei ole probleemiks, saate tavaliselt sõnumeid ignoreerida.
Miks ootame VIIVITAmise avaldus õigesti töötab? Mis saab perioodilise süsteemi protsessidest?
Kõrge eraldusvõimega kujundus ei mõjuta ajalõppe mehhanisme. SQL Server ei kasuta taimeriga toimingute jaoks kõrge eraldusvõimega taimerit. Mõned ajalõpu tegevused põhinevad vähendatud eraldusvõimega Taimeril, mis kasutab funktsiooni GetTickCount . Need ajalõpu tegevused hõlmavad lukustamise ajalõpp, ootame VIIVITAmise lause ja tupik tuvastamine.
Lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artiklite kuvamiseks järgmisi artiklinumbreid:
938448 Kui server kasutab Dual-Core AMD Opteron protsessorid või mitme protsessoriga AMD Opteron protsessorid, võib Windows Server 2003-ga serveris tekkida ajatempli loenduri triiv.
895980 Rakendused, mis kasutavad funktsiooni QueryPerformanceCounter, võivad Windows Server 2003 ja Windows XP-s halvasti toimidaSelles artiklis käsitletavaid kolmanda osapoole tooteid toodavad ettevõtted, mis ei sõltu Microsoftiga. Microsoft ei anna nende toodete jõudluse ega töökindluse kohta mingeid garantiisid ega muid kaudseid andmeid.