WmiPrvSe и двухядерный процессор

Jun 15, 23

С чего началось

Мониторинг стал показывать и генерировать сообщения, что периодически возрастает загрузка процессора больше 70% на 5-10 секунд. Стреляло не часто, поэтому местный персонал не обращал внимания на данную проблему. Но приехали “люди из Москвы” и им не понравилось, что такие сообщения проскакивают. Ну раз есть проблема, то решаем её.

Решение

Немного о железе: HP ProLiant DL 120 G6 с процессором Intel Pentium G6950 (2.80Ghz). Сразу отмету вопросы об апгрейде - нет, пока не время и апгрейд будет позже, а пока что есть, то и используем.

HP ProLiant DL 120 G6

Первым делом смотрим нагрузку процессора через диспетчер задач.

Нагрузка

Дополнительно к этому в этот же момент начинает проверять что-то Касперский и получаем в сумме нагрузку уже больше 75% в пике.

Натыкаюсь на данную статью от Microsoft, и начинаю выяснять, кто тут замешан.

Первым делом, как и в статье, добавляю счетчики в Мониторе производительности, чтобы выяснить PID процесса.

Это к ничему интересному не наводит, поэтому перевожу службу WMI на собственный процесс svchost.exe через команду sc config Winmgmt type= own

А вот теперь подозреваемых стало меньше. Теперь отдельный svchost.exe дает нагрузку, а WmiPrvSe стабильно 0%.

Нагрузка

Для помощи из списка утилит Sysinternals открываем Process Explorer, ищем найденый PID процесса и смотрим:

Eventlog

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

В целом, проблема бы решилась сразу, если знал бы, где основная загвоздка. Потому что в начале грешили на мониторинг по WMI, либо на другие процессы, которые используют WMI.