Простой вопрос
Как SQL Server Quantum (4 мс) синхронизируется с серверной ОС Quantum (обычно 187,5 мс)?
Простой вопрос объяснил
После использования 184 мс кванта ОС (что соответствует 46 полным квантам SQL) у кванты ОС есть 3,5 мс времени, прежде чем он должен будет передать расписание другому процессу. ОС SQL запускает квант (4 мс), и после 3,5 мс квант ОС решил остановить текущий поток ОС SQL, у которого все еще есть 0,5 мс, прежде чем он выдаст расписание. Что происходит сейчас?
Глубокое погружение на ОС Quantum
В следующих нескольких разделах я напишу то, что я нашел до сих пор относительно кванта ОС и как можно вычислить длительность кванта. Длительность «кванта» ОС основана на «тиках», а длительность самого «тика» - на «тактовом интервале», который обычно составляет 15,625000 мс. Но позвольте мне остановиться подробнее ...
Поставить галочку
В статье блога Know Thy Tick автор Джим объясняет основы тактовых интервалов (или «тиков») и для чего они нужны.
Когда я читаю что-то вроде «тактовый интервал… для большинства мультипроцессоров x86 составляет около 15 миллисекунд», я вынужден определить значение моего тактового интервала, или «тикового» интервала. К счастью, в книге, в которой я читал эту цитату, «Четвертое издание Windows Internals», есть справка, которая поможет мне справиться со своими проблемами. ... Автор вышеупомянутой книги Марк Руссинович любезно предоставил утилиту ClockRes на своем веб-сайте. Запустив эту утилиту, я смог определить, что тактовый интервал на моем многопроцессорном компьютере x86 составляет 15,625000 мс. Интересно, но мой любопытный ум хочет знать больше.
квант
Автор статьи продолжает объяснять в своей второй статье тот...
Конечно, реальная причина, по которой интервал между тиками важен, заключается в том, что он влияет на планирование потоков . Планировщик Windows дает каждому потоку «квант» времени для выполнения, прежде чем разрешить выполнение другой задачи с тем же уровнем приоритета. Квант, который планировщик назначает потоку, кратен тиковому интервалу . Конкретное квантовое значение, выбранное для определенного потока, немного превосходит то, к чему я хочу обратиться в этой статье.
Хорошо, я знаю, что такое квант, но не знаю, как долго он будет работать.
А пока давайте просто рассмотрим квантовое значение по умолчанию для потока переднего плана в XPe. В этом случае планировщик Windows назначает такт из 18 или 6 интервалов тиков. (Да, чтобы преобразовать квантовые интервалы в тиковые, нужно делить на 3. ..., но причина для кратного состоит в том, чтобы планировщик мог «заряжать» поток за выполнение операции, которая вызывает его приостановку.)
Теперь мы знаем, что тактовый интервал (тик) должен составлять около 15,625000 мс, а в Windows Desktop OS, где квант по умолчанию равен 18, что приведет к 6 тикам или 93,750000 мс (18/3 * 15,625000 мс).
В ОС Windows Server квант по умолчанию отличается. Параметр «Планирование процессора» имеет значение «Фоновые службы»
Этот параметр можно найти в «Системных настройках | Дополнительно (вкладка) | Производительность (раздел) | Настройки ...», которые откроют «Параметры производительности | Расширенные (вкладка) | Планирование процессора»
Квантовые настройки по умолчанию - от 36 (Фон) до 36 (Передний план). Квант больше и, следовательно, длиннее. Это вдвое больше, чем 93,750000 мс из 18 (6 тиковых) параметров квантового переднего плана в ОС Windows для настольных ПК, что в серверной ОС, настроенной для фоновых служб, составляет около 187,500000 мс.
Наблюдение / Объяснение
При изменении значения параметра «Фоновые службы» на «Приложения» на сервере или настольном компьютере ключ HKLM \ SYSTEM \ CurrentControlSet \ Control \ PriorityControl \ Win32PrioritySeparation в реестре изменяется с 0x18 на 0x02. Какое значение по умолчанию для 0x02? Это можно найти в комментарии:
Значение 0x02 означает, что поля «Короткий против длинного» и «Переменный против фиксированного» являются значениями по умолчанию для ОС.
Значения по умолчанию для этих полей для XPe & XP Pro: Short & Variable, что аналогично установке следующих битов в дополнительных битах: 0x24.
ИЛИ, добавив это значение в 0x02, вы получите 0x26, который вы найдете в таблице в статье.
Ссылка: Комментарий к "Освой свой квант" (блоги MSDN)
Таблица, объясняющая квантовые настройки из той же статьи:
Win32PrioritySeparation Foreground Background
0x28, 0x29, 0x2A 18 18
0x18, 0x19, 0x1A 36 36
0x24 6 6
0x25, 0x14 12 6
0x26 18 6
0x15 24 6
0x16 36 6
Краткое описание ОС Quantum
Основываясь на приведенной выше информации и цитатах из статей, мы знаем, что квант не является фиксированным размером, а скорее получен из настройки ОС в Свойствах системы. Квант изменяется в зависимости от Win32PrioritySeparation
параметра в реестре, который обычно соответствует одному из параметров в «Свойствах системы» («Фоновые службы» или «Приложения»).
Квант на уровне ОС
- для настройки «Приложения»
- 18 (что составляет 6 тиков) для приложений переднего плана (93,75 мс)
- 6 (что составляет 2 галочки) для фоновых приложений (31,25 мс)
- для настройки «Фоновые службы»
- 36 (что составляет 18 тиков) для приложений переднего плана (187,5 мс)
- 36 (что составляет 18 тиков) для фоновых приложений (187,5 мс)
Итак, теперь мы знаем, что квант ОС при настройке Windows Server для оптимизации для фоновых служб ...
36 / 3 * 15.625000 ms = 187.5 ms
SQL OS Quantum
В этом разделе перечислены то, что я нашел на квантовой ОС SQL ...
SOS_SCHEDULER_YIELD Тип ожидания
Из описания Пола Рэндалла о типе ожидания SOS_SCHEDULER_YIELD:
Это тип ожидания, когда поток мог выполнить для своего полного потока (4 миллисекунды во всех версиях SQL Server, неизменяемый ) и поэтому добровольно выдал планировщик, переместившись в конец Runnable Queue в своем планировщике.
Ссылка: SOS_SCHEDULER_YIELD (Типы ожидания SQLSkills.com)
Планировщики в SQL Server DMV
В пояснении к DMV для SQL Server для DMV sys.dm_os_schedulers.
[...] Windows использует механизм упреждающего планирования и назначает квант процессорного времени каждому потоку, когда поток потребляет свой квант, он отправляется в очередь, а другим потокам предоставляется выполнение.
В противоположность этому, SQL Server использует механизм совместного планирования, когда потоки могут добровольно выдавать свой квант времени (вы можете увидеть это поведение, когда у вас есть тип ожидания SOS_SCHEDULER_YIELD). Это позволяет SQL Server оптимизировать загрузку ЦП, поскольку, когда поток получает сигнал о выполнении, но не готов к запуску, он может дать свой квант времени в пользу других потоков .
Ссылка: Понимание планировщиков SQL Server, рабочих и задач (MSSQLTips.com)
Определить нагрузку на процессор SQL Server
Это очень маленький раздел статьи, касающейся нагрузки на процессор в SQL Server.
Происходит, когда задача добровольно дает планировщик для выполнения других задач. Во время этого ожидания задача ожидает обновления кванта .
Справка: определение нагрузки на процессор SQL Server (MSSQLTips.com)
sys.dm_os_schedulers (Документы Microsoft)
Я предполагаю, что следующая цитата - самый важный фрагмент информации о квантах SQL OS, который я мог найти:
quantum_length_us bigint Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. Exposes the scheduler quantum used by SQLOS.
Ссылка: sys.dm_os_schedulers (Transact-SQL) (Microsoft | Документы)
Моя загадка
Серверная ОС Quantum регулирует, сколько времени предоставляется службе SQL Server для выполнения «задач». Операционная система SQL Server Quantum определяется как 4 мс. Если я разделю 187,5 мс на 4 мс, то у меня останется 3,5 мс.
И мы даже не начали обсуждение того, когда для параметра Интервал синхронизации установлено значение, отличное от значения по умолчанию, равного 15,625000 мс ...
Простой вопрос
Как SQL Server Quantum (4 мс) синхронизируется с серверной ОС Quantum (обычно 187,5 мс)?
Простой вопрос объяснил
После использования 184 мс кванта ОС (что соответствует 46 полным квантам SQL) у кванты ОС есть 3,5 мс времени, прежде чем он должен будет передать расписание другому процессу. ОС SQL запускает квант (4 мс), и после 3,5 мс квант ОС решил остановить текущий поток ОС SQL, у которого все еще есть 0,5 мс, прежде чем он выдаст расписание. Что происходит сейчас?