Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SOS_SCHEDULER_YIELD, кто нибудь сталкивался?  [new]
aleksrov
Member

Откуда:
Сообщений: 948
В общем наткулся на статью http://www.sqlskills.com/blogs/paul/worrying-wait-type/, там этот тип указало аж 9%. Смотрел как то выступление Олонцева, он там упоминал этот тип и сказал что он встречался ему всего один раз, я тоже не разу не сталкивался, знакомые админы тоже, а тут аж 9%! Хотя я думаю народ просто указал что у них есть этот тип, хотя он не всегда является проблемой, http://dba.stackexchange.com/questions/106808/sos-scheduler-yield-wait-type.
В чем собственно вопрос, кто сталкивался с проблемами из за этого типа, в чем была их причина и как решили?
Просто я до конца так и не понял, что может его вызвать чтобы он стал проблемой.
1 дек 16, 07:56    [19953764]     Ответить | Цитировать Сообщить модератору
 Re: SOS_SCHEDULER_YIELD, кто нибудь сталкивался?  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
Ну-у видел, при массовом DELETE из большой таблицы.
Проблема была вполне тривиальная - удаление мешало другим пользователям. Хинт ROWLOCK в DELETE кляузе снял остроту проблемы.
Поменялся ли тип ожиданий после этого, не обратил внимания.

Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
May 14 2014 18:34:29
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )
+
А ездовые почтальоны вам встречались? (с)
1 дек 16, 10:23    [19954070]     Ответить | Цитировать Сообщить модератору
 Re: SOS_SCHEDULER_YIELD, кто нибудь сталкивался?  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
aleksrov,

Были такие, на DWH при ночной переливки, когда для 5 запросов памяти не хватало. То стояли и курили в сторонке с этим типом ожидания. Они разом запускались при заливке из пакета SSIS.
А ещё когда туча мелких запросов ломятся на процессор и не успевают в один такт отработать, то собираются в очередь и ждут. Так же бывало когда клерков не хватало.
Ну по большей степени сталкивался на DWH.
1 дек 16, 10:43    [19954142]     Ответить | Цитировать Сообщить модератору
 Re: SOS_SCHEDULER_YIELD, кто нибудь сталкивался?  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
aleksrov
Просто я до конца так и не понял, что может его вызвать чтобы он стал проблемой.
Данное ожидание возникнет, когда количество процессов в состоянии runnable превышает число планировщиков. Т.е. когда процессорных ресурсов на всех желающих не хватает.
Можете запустить множество запросов, типа
declare @r float;
while 1 = 1
 select @r = rand(checksum(newid()));
в количестве, превышающим число планировщиков.
И наблюдайте за ростом значений для SOS_SCHEDULER_YIELD в sys.dm_os_wait_stats.
1 дек 16, 11:04    [19954238]     Ответить | Цитировать Сообщить модератору
 Re: SOS_SCHEDULER_YIELD, кто нибудь сталкивался?  [new]
aleksrov
Member

Откуда:
Сообщений: 948
invm
aleksrov
Просто я до конца так и не понял, что может его вызвать чтобы он стал проблемой.
Данное ожидание возникнет, когда количество процессов в состоянии runnable превышает число планировщиков. Т.е. когда процессорных ресурсов на всех желающих не хватает.
Можете запустить множество запросов, типа
declare @r float;
while 1 = 1
 select @r = rand(checksum(newid()));
в количестве, превышающим число планировщиков.
И наблюдайте за ростом значений для SOS_SCHEDULER_YIELD в sys.dm_os_wait_stats.


Запустил, через пару минут этот тип блокировки занял почетное первое место :) В общем понятно, спасибо!
1 дек 16, 11:25    [19954336]     Ответить | Цитировать Сообщить модератору
 Re: SOS_SCHEDULER_YIELD, кто нибудь сталкивался?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
invm,
это да, но более часто наверное всё такие такой вариант

автор
The most common piece of code where quantum exhaustion can occur and rack up large amounts of SOS_SCHEDULER_YIELD waits is scanning an index/table where all the necessary data files pages are in memory and there is no contention for access to those pages, and so that’s what I encourage you to look for in query plans when you see SOS_SCHEDULER_YIELD as the top wait type – large and/or repeated index/table scans.
1 дек 16, 11:46    [19954480]     Ответить | Цитировать Сообщить модератору
 Re: SOS_SCHEDULER_YIELD, кто нибудь сталкивался?  [new]
aleksrov
Member

Откуда:
Сообщений: 948
TaPaK
invm,
это да, но более часто наверное всё такие такой вариант

автор
The most common piece of code where quantum exhaustion can occur and rack up large amounts of SOS_SCHEDULER_YIELD waits is scanning an index/table where all the necessary data files pages are in memory and there is no contention for access to those pages, and so that’s what I encourage you to look for in query plans when you see SOS_SCHEDULER_YIELD as the top wait type – large and/or repeated index/table scans.


Я это тоже читал, квант равен 4 мс. Также нашел:
There is case where thread by pass the Suspended state and directly move to the Runnable from Running and this is called quantum exhaustion.If a thread does not need to wait for any resources, it will continue to run till its quantum is exhausted. The quantum is fixed to 4ms and not configurable. The last column of the DMV sys.dm_os_schedulers define this value. Even if the thread does not need to wait for any resources,after the completion of its quantum time, it will move out of the processor and its state change from Running to Runnable. The thread move directly from Processor to bottom of Runnable queue bypassing the waiter list as it does not need to wait for a resource.
Или:
Each thread is given a 4 millisecond duration (or quantum) to use CPU without interruptions. If every scheduler is running a thread, those that have exhausted their quantum will voluntarily yield to give the next thread in the runnable queue its CPU time. Yielded threads don’t go on the waiter list because they’re not waiting for resource. Instead, they go to the bottom of the runnable queue and wait for their quantum to be renewed.
Т.е. в принципе это любой запрос у которого есть все для выполнения, но он не укладывается в эти 4 мс, а других желающих много и его кидают в конец очереди.
1 дек 16, 12:05    [19954579]     Ответить | Цитировать Сообщить модератору
 Re: SOS_SCHEDULER_YIELD, кто нибудь сталкивался?  [new]
bbx1389
Member

Откуда: Русија
Сообщений: 23342
а как его побороть?
у меня хронический SOS_SCHEDULER_YIELD в MDS(2014) . Скорость запросов привести в норму удалось, а вот тип не меняется.
20 дек 16, 12:15    [20026414]     Ответить | Цитировать Сообщить модератору
 Re: SOS_SCHEDULER_YIELD, кто нибудь сталкивался?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
bbx1389,

ядер добавьте.
20 дек 16, 12:31    [20026472]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить