Как я решил проблему с загрузкой системы процессом System Interrupts

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

Процесс Interrupts грузит процессор. Что делать?

Автор статьи: volego

2018-01-26 12:11:57

Есть в моём техно-зоопарке такой древний мамонт как сервер IBM xSeries 226. Основная его функция - сетевое файловое хранилище. Ежедневно к нему обращаются порядка 70 рабочих станций. Важные для нас технические подробности:

  • двухъядерный процессор Intel Xeon CPU 3.4GHz
  • ОС Windows Server 2003
  • система расположена на отдельном RAID-массиве
  • файловое хранилище - на обычном SATA-винчестере Western Digital 1TB

Как всё развивалось:

Месяц назад пользователи начали понемногу жаловаться на периодическое падение скорости копирования/записи файлов на сетевой диск нашего сервера. Была пора отчётов, все что-то копировали - падение скорости трафика можно было объяснить естественными причинами. Но вот прошли Новогодние каникулы, всё вернулось в обычное русло, а проблема осталась. Нужно было уже серьёзно разбираться с причинами происходящего:

В стандартном диспетчере задач сервера было видно, что общая загрузка процессора постоянно колеблется в районе 50%, а одно из двух ядер - почти 100%! Правда было непонятно какой процесс занимает столько ресурсов. Для глубокого анализа я воспользовался программой Process Explorer. И вот что я увидел: 

Процесс Interrupts грузит процессор

Некий процесс Interrupts съедает половину процессорной мощности! Что еще за аппаратные прерывания? такого в моей практике ещё не было. Яндекс готового решения по устранению проблемы не предоставил. Стало только ясно, что причина скорее всего в железе, так как нового софта уже очень давно не устанавливалось и антивирусная проверка ничего не нашла. 

Опытным путём установил, что если отключить сетевой адаптер - нагрузка практически моментально падает до нормальных значений и процесс System/Interrupts колеблется в районе 0-2%. После включения, проходит минут 10 - нагрузка опять повышается. Решил разбираться с сетевым адаптером: обновлял драйвера встроенного, устанавливал дополнительную сетевую карту и пускал трафик через неё - ничего не помогало :(

Дело принимало серьёзный оборот. Проводя эксперименты по выявлению причины происходящего я установил: как только происходит копирование/запись данных на SATA-диск (даже с отключенным сетевым контроллером), нагрузка на процессор резко возрастает. Вот оно! Сетевой трафик тут вообще не причем! Отключение сетевого адаптера просто разрывало обращения пользователей к диску. Поставил новый HDD в тот же самый SATA-порт, протестировал - всё отлично работает без каких-либо существенных нагрузок.

Заключение

Наконец-то я разобрался с причинами проседания трафика и загрузкой процессора сервера. Виной всему - совсем нестандартное поведение умирающего HDD, который в работе уже почти 10 лет. Проверять на ошибки жёсткий диск размером 1TB - слишком долго. Я решил не искушать судьбу и скопировать всё на заведомо исправный. А пока продолжается копирование - я заканчиваю эту статью. Надеюсь она кому-нибудь поможет в похожей ситуации.