Udostępnij za pośrednictwem


Foto da Alocação de Memória

Existe uma forma “hardcore” para acompanhar todas as alocações de memória no SQL Server. Podemos criar um pacote XEvent e acompanhar o evento “XeSosPkg::page_allocated” e gerar um stack trace (stack dump). Por exemplo, nas alocações de memória na procedure sp_xml_preparedocument, observamos as alocações de memória realizadas pelo componente MSXMLSQL.

14d9dc3c 781181f8 sqllang!CIMallocYieldWrapper::Alloc
14d9dc58 7811eb23 MSXMLSQL!_MemAlloc+0x27
14d9dc94 7811de7e MSXMLSQL!Document::newDocument+0x18
14d9dccc 7811df2a MSXMLSQL!_createDOMDocument+0x19
14d9dcf4 78117d1b MSXMLSQL!CreateDOMDocumentVI+0x3b
14d9dd0c 6f77ecb0 MSXMLSQL!ClassFactory_CreateInstance+0x50
14d9ddfc 6f777b1f sqllang!CXMLDocsList::LoadDocument+0x149
14d9de48 6f777d6b sqllang!CXMLDocParamInfo::Load+0xaa
14d9df5c 6f46d61a sqllang!SpXmlPrepareDocument+0x1ab
14d9e004 6f46cd77 sqllang!CSpecProc::ExecuteSpecial+0x25b
14d9e380 6ecb463f sqllang!CXProc::Execute+0x14e
14d9e448 6f492a97 sqllang!CSQLSource::Execute+0x910
14d9e480 6f4925a4 sqllang!CStmtExecProc::XretLocalExec+0x1e0
14d9eb30 6f4902aa sqllang!CStmtExecProc::XretExecExecute+0x527
14d9eb4c 6ec3a882 sqllang!CXStmtExecProc::XretExecute+0x27
14d9ebe4 6ec3bd9c sqllang!CMsqlExecContext::ExecuteStmts<1,1>+0x352
14d9ed0c 6ec3b664 sqllang!CMsqlExecContext::FExecute+0x878
14d9ede0 6ec3fc40 sqllang!CSQLSource::Execute+0x7d5
14d9efa0 6ec3ede9 sqllang!process_request+0x3fa
14d9f100 6dc80941 sqllang!process_commands+0x38c
14d9f64c 6dc80d6d sqldk!SOS_Task::Param::Execute+0x292
14d9f694 6dc80b9e sqldk!SOS_Scheduler::RunTask+0xa2
14d9f6f4 6dc583e6 sqldk!SOS_Scheduler::ProcessTasks+0x316
14d9f780 6dc58514 sqldk!SchedulerManager::WorkerEntryPoint+0x2e7
14d9f7a0 6dc57f3a sqldk!SystemThread::RunWorker+0xae
14d9f814 6dc58268 sqldk!SystemThreadDispatcher::ProcessWorker+0x2fe
14d9f888 7770495d sqldk!SchedulerManager::ThreadEntryPoint+0x20b

Nem sempre é possível utilizar stack traces para acompanhar o consumo de memória. Por isso, existe uma série de mecanismos (Broker, Clerks, MemObj) que auxiliam na tarefa de monitoração de recursos.