PARANDUS: Jõudluse probleeme tekkida NUMA keskkondades keelevigadele lehe töötlemise SQL Server 2012 või SQL Server 2014

VEA nr: 201012 (Content Maintenance) VSTS:1952739

Sümptomid

NUMA keskkondades, Microsoft SQL serveri kogemusi ühte või mitut järgmist jõudluse probleeme:

  • SQL serveri protsessi kogemuste liiga suur CPU kasutus.

  • Päringute võtta kaua aega, et lõpule viia.

  • Rakendused või SQL Server agenti tööd tekib päringu ajalõpp või ühenduse ajalõpp.

  • SQL serveri protsessi taaskäivitamist Cluster service.

Lisaks võite kokku puutuda järgmiste sümptomitega:

  • Laiendatud väärtused SOS_PHYS_PAGE_CACHE oodata tüüp, kui te küsite selle sys.dm_os_wait_stats dünaamilise juhtimise view (DMV)

  • Laiendatud väärtused on CMEMTHREAD oota tüüp ja SOS_SUSPEND_QUEUE spinlock kui te küsite selle sys.dm_os_spinlock_stats DMV

Lahendus

Koondvärskenduse teave

See probleem parandati esmakordselt järgmise koondvärskenduse SQL Server.

SQL serveri 2014 koondvärskenduse 2/en-us/help/2967546

SQL serveri 2014 koondvärskenduses 1/en-us/help/2931693

SQL Server 2012 SP1 koondvärskenduse 9/en-us/help/2931078

Iga uue SQL serveri koondvärskendus sisaldab kõiki Kiirparandusi ja kõiki turbeparandusi, mis sisaldusid eelmises koondvärskenduses. Vaadake SQL serveri kumulatiivseid värskendusi:


Kiirparanduse teave
Toetatud käiguparandus on saadaval Microsoftilt. See kiirparandus on ette nähtud üksnes käesolevas artiklis kirjeldatud probleemi lahendamiseks. Kasutage seda parandust ainult selle konkreetse probleemiga süsteemides.

Kui kiirparandus on allalaadimiseks saadaval, on selle teabebaasi artikli alguses jaotis Kiirparandus on saadaval. Kui seda jaotist ei ole, saatke Microsofti klienditeenindusele ja -toele taotlus kiirparanduse hankimiseks.

Märkus. Kui ilmneb täiendavaid probleeme või kui vajalik on tõrkeotsing, peate looma eraldi tugiteenuse taotluse. Tavapärane tugiteenuse tasu kehtib täiendavatele tugiteenustega seotud küsimustele ning probleemidele, mis pole lahendatavad konkreetse värskenduse installimisega. Täieliku loetelu Microsofti klienditeeninduse ja -toe telefoninumbrite või eraldi tugiteenuse taotluse loomiseks külastage järgmist Microsofti veebisaiti:

http://support.microsoft.com/contactus/?ws=supportMärkus. Vormil Kiirparandus on allalaadimiseks saadaval kuvatakse keeled, mille jaoks kiirparandus on saadaval. Kui te ei näe oma keelt, ei ole kiirparandus selles keeles saadaval.

NB! See parandus on soovitatav SQL serveri eksemplaris, SQL serveri ühtivus mask sätetest sõltumata NUMA arvutisse installitud. See parandus käsitletakse võõrsil töötlemise jõudluse kitsaskoht SQL serveri mälu manager.
See probleem parandati esmakordselt järgmise koondvärskenduse SQL Server.

Lahendus

Nende probleemide lahendamiseks suurendage sisselogimise ja query ajalõpu väärtust oma rakendusi.

Märkus. See lahendus võib olla piiratud mõju. Soovitame kohaldada seda käigultparandust jaotises "Tunnused" kirjeldatud probleemide lahendamiseks.

Olek

Microsoft on kinnitanud, et see probleem esineb jaotises "Kehtib järgmiste toodete kohta" loetletud Microsofti toodetel.

Lisateabe saamiseks

Kui Microsoft SQL serveri videomäluhaldur eraldab mälu sõlme ühtne mälu mälupöörduse (NUMA)-lubatud keskkondades, Windows saab määrata mälu sõlmedest, nii kohalikul ja remote (edaspidi "ära" või "võõra" lehekülge) kuni soovitud eesmärgi iga sõlm on saavutatud. Kuna "ära leheküljed" ei ole see tulemuslikkuse seisukohast, SQL Server protsess üritab määrata ära puhvrid nõuetekohase mälu sõlme või vabastada neid lehti operatsioonisüsteemi. "AWAY töötlemine" saab CPU nõudvaid ja vähenemise partii määr perioodil suurem CPU kasutus.

Kohaliku sõlme jõudmisel target mälu töötaja teemad aitavad saavutada oma Kaugtöölaua sõlme. Kaugtöölaua sõlme ja eemal puhvrite sama sõlme väljaande eraldamine võib ilmneda samal ajal. Selle põhjuseks on nende kooditeid kaitsevad sama sünkroonimise objekt. See põhjustab väide, mis põhjustab suurendada CPU kasutus ja pikk ooteaeg.

Praegune kujundus ära blokeerib redaktsiooni ajal esmalt vastenduse lehed ja seejärel tasuta neile füüsilise lehekülje vahemälu. Ajal eraldamine, me uuesti eraldada lehed ja teha vastendamine uuesti. See põhjustab juurdepääsu füüsilise lehekülje vahemälu ja lisab füüsilist lehekülje vahemälu lock väide.

Muutus see kiirparandus lisab ühe parameetri ReleaseAwayBlock , mis näitab, et lehed peaks olema vastendamata ainult, mitte vabastada vahemällu. Lipu määramisel lehed on ainult vastendamata, ja tagastatakse PFN massiivi vastendamata lehekülge. Ajal eraldamine, see tagasi PFN massiivi kasutatakse MapUserPhysicalPagesotse helistamiseks. Seetõttu ei avata füüsilise lehekülje vahemälu.

Käituspinu teaventdll!ZwSignalAndWaitForSingleObjectkernel32!SignalObjectAndWait
sqldk!SystemThread::SignalAndWait
sqldk!SOS_Scheduler::Switch
sqldk!SOS_Scheduler::SuspendNonPreemptive
sqldk!SOS_Scheduler::Suspend
sqldk!UnfairRecursiveMutexInternal<SuspendQueueSLock,0>::LongWait
sqldk!UnfairRecursiveMutexInternal<SuspendQueueSLock,0>::Wait
sqldk!UnfairRecursiveMutexInternal<SuspendQueueSLock,0>::Wait
sqldk!TAutoMutex<UnfairRecursiveMutexInternal<SuspendQueueSLock,0>,4294967295>::GetAccess
sqldk!PhysicalPageCache::AllocatePhysicalPages
sqldk!MemoryNode::AllocateUserPhysicalPages
sqldk!SOS_MemoryBlockAllocator::CommitBlockAndCheckNumaLocality
sqldk!SOS_MemoryBlockAllocator::AllocateBlock
sqldk!SOS_MemoryWorkSpace::AllocatePage
sqldk!MemoryNode::AllocatePagesInternal
sqldk!MemoryClerkInternal::GetParentBrokerType
sqldk!MemoryClerkInternal::AllocatePages
sqldk!MemoryObjectFactory::CreateMemObjectInt
sqldk!MemoryObjectFactory::CreateMemObject
sqldk!SOS_UserStore::InitMemoryComponents
sqldk!SOS_UserStore::CreateStore
sqllang!FCreateAccessCheckResultStore
sqllang!CUserToken::InitToken
sqllang!CreateUserToken
sqllang!CUEnvTransient::PSecc
sqllang!FCheckDbAccess
sqllang!CSecurityContext::GetUserToken
sqllang!CSecurityContext::IdUser
sqllang!FHasEntityPermissionsWithAuditState
sqllang!FHasEntityPermissions
sqllang!CSQLObject::FPostCacheLookup
sqllang!CSQLSource::EpgParsingGrammar
sqllang!CAutoRestoreParsingGrammar::{ctor}
sqllang!CSQLSource::Transform
sqllang!CSQLSource::Execute
sqllang!CProtocolHeaderInfo::{dtor}
sqllang!process_request
sqllang!process_commands
sqldk!SOS_Task::Param::Execute
sqldk!SOS_Scheduler::RunTask
sqldk!SOS_Scheduler::ProcessTasks
sqldk!SchedulerManager::WorkerEntryPoint
sqldk!SystemThread::RunWorker
sqldk!SystemThreadDispatcher::ProcessWorker
sqldk!SchedulerManager::ThreadEntryPoint
kernel32!BaseThreadInitThunk
ntdll!RtlUserThreadStart

ntdll!ZwSignalAndWaitForSingleObject
kernel32!SignalObjectAndWait
sqldk!SystemThread::SignalAndWait
sqldk!SOS_Scheduler::Switch
sqldk!SOS_Scheduler::SuspendNonPreemptive
sqldk!SOS_Scheduler::Suspend
sqldk!UnfairRecursiveMutexInternal<SuspendQueueSLock,0>::LongWait
sqldk!UnfairRecursiveMutexInternal<SuspendQueueSLock,0>::Wait
sqldk!UnfairRecursiveMutexInternal<SuspendQueueSLock,0>::Wait
sqldk!TAutoMutex<UnfairRecursiveMutexInternal<SuspendQueueSLock,0>,4294967295>::GetAccess
sqldk!PhysicalPageCache::FreePhysicalPages
sqldk!MemoryNode::FreeUserPhysicalPages
sqldk!SOS_MemoryWorkSpace::DeCommitBlock
sqldk!SOS_MemoryBlockAllocator::DeCommitBlock
sqldk!MemoryNode::ReleaseAwayBlocks
sqldk!SOS_MemoryBlockAllocator::CommitBlockAndCheckNumaLocality
sqldk!SOS_MemoryBlockAllocator::AllocateBlock
sqldk!SOS_MemoryWorkSpace::AllocatePage
sqldk!MemoryNode::AllocatePagesInternal
sqldk!MemoryClerkInternal::GetParentBrokerType
sqldk!MemoryClerkInternal::AllocatePages
sqldk!MemoryObjectFactory::CreateMemObjectInt
sqldk!MemoryObjectFactory::CreateMemObject
sqllang!SOS_OS::CreateMemObject
sqllang!PmoNewMemObjNoX
sqllang!TDSSNIClient::ProcessCommon
sqldk!SOS_Task::Param::Execute
sqldk!SOS_Scheduler::RunTask
sqldk!SOS_Scheduler::ProcessTasks
sqldk!SchedulerManager::WorkerEntryPoint
sqldk!SystemThread::RunWorker
sqldk!SystemThreadDispatcher::ProcessWorker
sqldk!SchedulerManager::ThreadEntryPoint
kernel32!BaseThreadInitThunk
ntdll!RtlUserThreadStart

Viited

Mõista keelevigadele lehed kontseptsiooni kohta lisateabe saamiseks külastage järgmist MSDN-i blogi postitus veebilehelt:

Kuidas see toimib: SQL serveri (NUMA kohaliku, välismaiseid ja ära mälu Blocks)

Author:jannaw;
Koostaja: v-shysun
Tehniline toimetaja: Bob Dörr; Bob Ward; Ajayj; Sureshka; ramakoni; jannaw; sqlprev
Toimetaja: v-jesits

Kas vajate veel abi?

Täiendage oma oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liitu Microsofti Insideri programmis osalejad

Kas sellest teabest oli abi?

Kui rahul te tõlkekvaliteediga olete?

Mis mõjutas teie kasutuskogemust?

Kas soovite jagada veel tagasisidet? (Valikuline)

Täname tagasiside eest!

×