SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for 10月 30th, 2022

調査のために意図的に Non-yielding scheduler の状態を作り出す

leave a comment

Non-yielding scheduler エラーの調査を実施する際の参考情報 の続きの投稿となるのですが、SQL Server で Non-yielding scheduler となる状態を作り出すため、スレッドと強制的に中断状態にして

  • リングバッファーに RING_BUFFER_NONYIELD_COPIEDSTACK を出力
  • 拡張イベントに scheduler_monitor_non_yielding_ring_buffer_recorded を出力

させるための方法のメモです。

本来は、スケジューラーモニターで次の状態を検知させ、ダンプを出力させるところまで再現したかったのですが、私の理解度が低く、そこまでは再現できていません。

 # Child-SP          RetAddr           Call Site
00 00000006`b2ddbc28 00007ffd`db9185c3 ntdll!NtWaitForSingleObject+0x14
01 00000006`b2ddbc30 00007ff6`cb98bb2e KERNELBASE!WaitForSingleObjectEx+0x93
02 00000006`b2ddbcd0 00007ff6`cb98b8a3 sqlservr!CDmpDump::InvokeSqlDumper+0x1ee
03 00000006`b2ddbdd0 00007ff6`cb98b5a4 sqlservr!CDmpDump::DumpInternal+0x1b3
04 00000006`b2ddbe80 00007ffd`c356e743 sqlservr!CDmpDump::Dump+0x24
05 00000006`b2ddbec0 00007ffd`c420d1b5 sqllang!SQLDumperLibraryInvoke+0x1f3
06 00000006`b2ddbf00 00007ffd`c420e046 sqllang!SQLLangDumperLibraryInvoke+0x185
07 00000006`b2ddbfc0 00007ffd`c41d8c42 sqllang!CImageHelper::DoMiniDump+0x6f6
08 00000006`b2ddc1e0 00007ff6`cb963eb5 sqllang!stackTrace+0xa42
09 00000006`b2dddc00 00007ffd`c5956840 sqlservr!SQL_SOSNonYieldSchedulerCallback+0x465
0a 00000006`b2dfdea0 00007ffd`c592e59b sqldk!SOS_OS::ExecuteNonYieldSchedulerCallbacks+0xe0
0b 00000006`b2dfe150 00007ffd`c58c54ef sqldk!SOS_Scheduler::ExecuteNonYieldSchedulerCallbacks+0x1ab
0c 00000006`b2dfe330 00007ffd`c58c47b2 sqldk!SchedulerMonitor::CheckScheduler+0x25e
0d 00000006`b2dfe4d0 00007ffd`c58c3d72 sqldk!SchedulerMonitor::CheckSchedulers+0x1ea
0e 00000006`b2dfee40 00007ffd`c59c47c9 sqldk!SchedulerMonitor::Run+0xc2
0f 00000006`b2dfef40 00007ffd`c58b9e53 sqldk!SchedulerMonitor::EntryPoint+0x9
10 00000006`b2dfef70 00007ffd`c58ba28f sqldk!SOS_Task::Param::Execute+0x232
11 00000006`b2dff570 00007ffd`c58ba05e sqldk!SOS_Scheduler::RunTask+0xbf
12 00000006`b2dff5e0 00007ffd`c58d79a2 sqldk!SOS_Scheduler::ProcessTasks+0x39d
13 00000006`b2dff700 00007ffd`c58d7b9f sqldk!SchedulerManager::WorkerEntryPoint+0x2a1
14 00000006`b2dff7d0 00007ffd`c58d83fa sqldk!SystemThreadDispatcher::ProcessWorker+0x42a
15 00000006`b2dffad0 00007ffd`df0c7974 sqldk!SchedulerManager::ThreadEntryPoint+0x406
16 00000006`b2dffbc0 00007ffd`df7ea2f1 kernel32!BaseThreadInitThunk+0x14
17 00000006`b2dffbf0 00000000`00000000 ntdll!RtlUserThreadStart+0x21

Read the rest of this entry »

Written by Masayuki.Ozawa

10月 30th, 2022 at 10:29 pm

Posted in SQL Server

Tagged with