Какой тип нагрузки преобладает на ваших серверах?

Какой тип нагрузки преобладает на ваших серверах?Прочитал сегодня интересный рецепт, как быстро определить, кто даёт слабину, процессор или дисковая подсистема. Ну и заодно в очередной раз убедился в полезности книжки: Проектирование и оптимизация доступа к базам данных Microsoft SQL Server 2005. Учебный курс Microsoft (+ CD-ROM)

Авторы этого учебного курса считают, что соотношение суммарных ожиданий процессоров и ввода-вывода можно использовать для того, чтобы определить, кто из них из-за кого простаивает. Впрочем, вот выдержка из этой замечательной книги, со страницы 400:

Одной из самых сложных задач, с которыми сталкиваются разработчики баз данных, является прогнозирование поведения приложения в реальных условиях. Чтобы иметь точное представление о характеристиках производительности приложения, разработчик должен знать конкретную причину любого состояния ожидания, которое возникает во время выполнения приложения. На самом общем уровне состояния ожидания можно разбить на две категории: ожидание сигнала и ожидание ресурса. В SQL Server ожидание сигнала происходит, когда планировщик ждет процессор, чтобы запланировать задачу, а ожидание ресурса возникает, когда задача получила время процессора, но находится в ожидании ресурсов диска или памяти. При исследовании состояний ожидания в приложении нужно иметь в виду следующее. Если отношение времени ожидания сигнала ко времени ожидания ресурса велико (т.е. если состояний ожидания сигнала значительно больше, чем состояний ожидания ресурса), это может служить показателем неэффективного использования процессора. Если же велик коэффициент отношения времени ожидания ресурса ко времени ожидания сигнала, это может указывать на неэффективное использование ресурсов диска. Приступая к оценке производительности приложения, разработчики должны понимать, какой из типов ожидания преобладает. К счастью, SQLOS предоставляет “окно” в систему, достаточно прозрачное для того, чтобы разработчики могли использовать его для ответа на этот вопрос.

Представляю вам слегка модифицированный запрос из примера в этой книге, который использует динамическое административное представлениеsys.dm_os_wait_states, чтобы запросить у SQLOS информацию о суммарных временах ожидания ресурса и сигнала:

Один из моих подопечных серверов вернул следующие результаты:

Тип ожидания ожидания сигнала % ожидания ресурса % ожидания ms
BCE! 10.18 89.82 109070003
LCK_M_U 0.19 99.81 63195933
BROKER_TASK_STOP 0.14 99.86 4831680
LAZYWRITER_SLEEP 0.02 99.98 4768764
REQUEST_FOR_DEADLOCK_SEARCH 100.00 0.00 4764971
XE_TIMER_EVENT 100.00 0.00 4741221
LOGMGR_QUEUE 4.04 95.96 4729823
FT_IFTS_SCHEDULER_IDLE_WAIT 0.00 100.00 4680082
CHECKPOINT_QUEUE 0.00 100.00 4519827
WRITELOG 21.61 78.39 2546141
SLEEP_TASK 0.26 99.74 2398521
BROKER_TO_FLUSH 0.03 99.97 2384867
XE_DISPATCHER_WAIT 0.00 100.00 1770518
PAGEIOLATCH_EX 0.75 99.25 1307584
CXPACKET 14.20 85.80 955856
PAGELATCH_EX 84.97 15.03 486757
IO_COMPLETION 2.24 97.76 270499
SLEEP_BPOOL_FLUSH 2.22 97.78 224846
PAGEIOLATCH_SH 1.04 98.96 151759
SOS_SCHEDULER_YIELD 99.89 0.11 133034
ASYNC_NETWORK_IO 5.06 94.94 79275

Результирующий набор будет содержать суммарное время ожидания и процентное соотношение этих значений. В верхней строке сумма по всем типам ожиданий (такой же результат даёт запрос из книжки), я ниже расположены уточняющие сведения, т.е. группировка по самой прожорливой десятке типов ожиданий.

В книге утверждается что, как правило, системы, имеющие низкий показатель ожидания сигнал/ресурс демонстрируют лучшую общую производительность.

Автор: Александр Гладченко

Запись опубликована в рубрике Полезно и интересно с метками . Добавьте в закладки постоянную ссылку.

4 комментария на «Какой тип нагрузки преобладает на ваших серверах?»

  1. Msg 102, Level 15, State 1, Line 19
    Incorrect syntax near ‘.’.

  2. Сергей Попов говорит:

    Сообщение 4145, уровень 15, состояние 1, строка 10
    Рядом с «;» в контексте, где ожидается условие, указано выражение типа, отличного от логического.

Добавить комментарий

Войти с помощью: