В течение последних двух недель мы наблюдаем периодические резкие всплески использования системного процессора (показанные как% sys), которые длятся примерно полминуты, блокируя большинство процессов, включая ssh.
Я пытался понять это, но поверх не показывает ничего значимого (использование системы для процессов, которые он показывает, незначительно), всплески прерывистые, и я не мог воспроизвести всплеск, используя любую рабочую нагрузку для веб-приложения, размещенного на этом веб-сервере.
Если у вас есть идеи о том, как отлаживать высокие% sys и (иногда)% si загрузки ЦП, поделитесь ими.
Системные характеристики (не знаю, актуально ли что-либо из этого): выделенный сервер, CentOS 6, core i7 950, постоянная свободная оперативная память от 4 до 8 ГБ в любое время, жесткие диски находятся в RAID-1.
Дополнительная информация:
Добавление 07.11.11: выглядит как простая перезагрузка, восстановившая состояние системы, и мы, возможно, никогда не узнаем, что в первую очередь вызвало нарушение.
Я знаю, что этот поток действительно старый, и я знаю, что вы уже знаете об этом,% sys -> если цикл проводится в% system, тогда большая часть выполнения выполняется в коде более низкого уровня, т.е. может возникнуть проблема на стороне ядра. Если эта проблема снова воспроизводится, соберите вывод:
echo t > /proc/sysrq-trigger
И проверьте системные сообщения (var/log/messages
или /var/log/syslog
), чтобы увидеть, может ли какой-либо поток использовать много системного процессорного времени.
В centos 6.2 и 6.3 отключите поддержку огромных страниц:
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
Высокий% si предполагает высокую частоту прерываний (si - время, затрачиваемое на обработчики softtirq, AFAIK). Поэтому я сначала предполагаю, что сетевой интерфейс сервера забивается.
Это звучит глупо, но перезагрузка помогла, и мы никогда не узнаем, что в первую очередь вызвало скачки.
Тем не менее, спасибо за ответы.
Существует множество факторов, способствующих высокому использованию% sys, таких как вход в систему, системный вызов, переключение контекста (как потока, так и процедуры), ввод-вывод и даже копирование данных сокетов из режима ядра в режим пользователя. Я предлагаю вам использовать sar, vmstat и iostat, чтобы проверить это. Более того, было бы неплохо узнать, какой процесс вызвал использование высокого% sys при скачке. В этом случае будет полезен gdb. Найдите процесс и используйте gdb для присоединения к нему, и вы увидите, что происходит с этим процессом в данный момент. Единственное, что вам нужно заметить, это то, что эта операция требует отладочной информации, встроенной в процедуру .