logo search
SQL2008_Administration

8.3.6. Счетчики для анализа загрузки процессора

Объект

Счетчик

Описание

Решение

Processor (Процессор)

% Processor Time (% загруженности процессора)

Значение этого счетчика не должно превышать 80 в течение длительного промежутка времени. Если оно стабильно больше, это значит, что процессорная подсистема работает с перегрузкой и является узким местом сервера.

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

System (Система)

Processor Queue Length (Длина очереди процессора)

показывает, сколько запросов стоит в очереди на обработку центральным процессором. Значение этого счетчика не должно в течение продолжительного времени превышать 2, умноженное на количество процессоров в системе

Process (Процесс) для процесса sqlservr с нужным номером

% Processor Time

показывает, сколько времени затрачивается процессором на обслуживание запросов SQL Server.

Processor (Процессор)

% Privileged Time (% работы в привилегированном режиме)

показывает, сколько времени тратится на обслуживание запросов ядра. Это время должно быть как можно меньше: на загруженном сервере все ресурсы должны отдаваться серверным приложениям (то есть SQL Server).

Если оно необычно большое (составляет десятки процентов), то нужно проверить, нет и у вас проблем с системой.

Processor (Процессор)

% Interrupt Time (% времени прерываний)

показывает, сколько времени процессору требуется на обработку прерываний от оборудования. Если при установке какого-либо оборудования значение этого счетчика сильно возрастает, с этим оборудованием наверняка какие-то проблемы

Необходимо заменить оборудование

Проблемы при работе на многопроцессорных системах

При работе на многопроцессорных системах SQL Server не всегда корректно производит распараллеливание при выполнении запросов. За счет избыточного числа переключений между процессорами (context switching) скорость выполнения запроса на многопроцессорной системе может оказаться заметно ниже, чем на однопроцессорной. В этой ситуации в вашем распоряжении — два решения:

  1. Использовать параметр настройки сервера cost threshold for parallelism. Этот параметр определяет стоимость запроса в секундах, начиная с которой выполнения запроса будет распараллеливаться;

  2. Использовать флаг трассировки 8687, который запрещает распараллеливание запросов. Помимо решения проблем с некорректным распараллеливанием, его применение не позволит особо "тяжелым" запросам захватить все ресурсы всех процессоров.

    1. Включить его можно так:

-- Вначале определяем, что флаг будет распространен на все подключения

DBCC TRACEON(-1)

-- Затем включаем сам флаг трассировки

DBCC TRACEON(8687)

    1. Можно настроить автоматическое включение этого флага трассировки при запуске сервера - при запуске службы SQL Server используется параметр командной строки -T с номером флага трассировки. В этом случае флаг будет автоматически применяться ко всем клиентским подключениям

    2. Для просмотра информации обо всех установленных флагах трассировки можно использовать команду

DBCC TRACESTATUS(-1)