Kipmi0 съедает до 99,8% процессорного времени на сентос 6,4

15

У нас есть CentOS 6.4, и kipmi0он показывает 99,8% процессора и 0,0% памяти, а средняя загрузка составляет 1,00. Что мы должны сделать, чтобы исправить это?

biz14
источник
Вы должны начать с чтения этого www-01.ibm.com/support/…
squareborg
2
@ Я читал это раньше, так что он просто говорит «игнорировать», должен ли я просто игнорировать, но на других моих машинах такой проблемы нет?
biz14
Другие системы идентичны этой системе? Вы должны будете определить, что они есть. Между ними должно быть что-то принципиально другое. Прошивка? Те же версии RPM?
SLM
@ Да, есть две одинаковые машины с одинаковыми ценами 6.4. Что мне теперь искать?
biz14
Сравните результаты с lshwи dmidecodeбуду моей следующей областью для изучения.
СЛМ

Ответы:

5

Отладка проблемы

Другие системы идентичны этой системе? Вы должны будете определить, что они есть. Между ними должно быть что-то принципиально другое. Прошивка? Те же версии RPM?

Вы можете использовать такие инструменты, как lshw, dmidecodeи , глядя наdmesg журнал для подсказки относительно того , что по - другому и что первопричиной.

Я получил бы хороший базовый уровень установленных RPM, выполнив эту команду на одной из систем, в которой эта проблема не обнаружена, и на той, которая есть, и сравнил бы списки пакетов, чтобы убедиться, что все они имеют одинаковые версии.

 # machine #1
 $ rpm -aq | sort -rn > machine1_rpms.txt

 # machine #2
 $ rpm -aq | sort -rn > machine2_rpms.txt     

Затем получите файлы на той же машине и выполните sdiff из 2 файлов:

 sdiff machine1_rpms.txt machine2_rpms.txt

Потенциальная причина № 1

Веб-сайт IBM имел эту технику под названием: Kipmi0 May Show Увеличение загрузки ЦП в Linux , касающееся этой проблемы. Согласно этой проблеме вы можете по существу игнорировать проблему.

описание проблемы

Процесс kipmi0 может показать увеличение загрузки процессора в Linux. Использование может увеличиться до 100%, когда устройство IPMI (интеллектуальный интерфейс управления платформой), такое как BMC (контроллер управления основной платой) или IMM (встроенный контроллер управления), занято или не отвечает.

Fix

Исправление не требуется. Вы должны игнорировать повышенную загрузку ЦП, поскольку это не влияет на реальную производительность системы.

Работа вокруг

  1. При использовании устройства IPMI перезагрузите BMC или перезагрузите систему.
  2. Если устройство IPMI не используется, остановите службу IPMI, введя следующую команду:

    сервис ipmi stop

Потенциальное решение № 2

Я нашел этот пост в чьем- то блоге просто под названием: проблема kipmi0 . Эта проблема звучала идентично вашей. Эта проблема была связана с двумя модулями ядра, которые загружались как часть lm_sensorsпакета.

Это были 2 модуля ядра:

  • ipmi_si
  • ipmi_msghandler

Работа вокруг

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

rmmod ipmi_msghandler
rmmod ipmi_si

Чтобы сделать это исправление постоянным, вам нужно будет отключить загрузку этих конкретных модулей ядра в одном из lm_sensorsфайлов конфигурации, закомментировав их следующим образом:

# /etc/sysconfig/lm_sensors
# MODULE_0=ipmi-si
# MODULE_1=ipmisensors
# MODULE_2=coretemp

Перезапустите lm_sensorsпосле внесения этих изменений:

/etc/init.d/lm_sensors
SLM
источник
Я был на сайте, и в моей системе я не могу найти этот файл / etc / sysconfig / lm_sensors. Что-то смешное, когда я делаю сортировку по первому файлу - Asc, а второй файл - desc? Во-вторых, как вывести разницу в файл. Да, я тоже вижу много различий.
biz14
да теперь я второй раз сортируюсь соответственно по убыванию. Я не понимаю, как использовать grep "|". Что еще я должен сделать, чтобы исправить эту проблему?
biz14
Все, что я говорил, было сделать это: sdiff machine1_rpms.txt machine2_rpms.txt | grep "|"вытащить все различия ч / б 2 .txt файлов. Есть и другие способы сделать это, но это один из способов.
СЛМ
Я выполнил эту команду, и вот вывод sdiff 12_rpms.txt 11_rpms.txt | grep "|" perl-DBI-1.609-4.el6.x86_64 | perl-Digest-SHA-5.47-131.el6_4.x86_64. 12_rpms - это проблемный компьютер, а другой - без проблем. Но когда я смотрю вручную, 12_rpms имеют 247 строк, а 11_rpms имеют 263, но sdiff - всего одна? Итак, каким должен быть мой следующий шаг, основанный на этой разнице?
biz14
Пожалуйста, разместите эти файлы также на pastebin.com .
SLM
24

Согласно Документу IPMI :

этот поток может использовать много ЦП в зависимости от производительности интерфейса. Это может тратить много ресурсов ЦП и вызывать различные проблемы с обнаружением простоя ЦП и использованием дополнительной мощности. Чтобы избежать этого, kipmid_max_busy_us устанавливает максимальное количество времени (в микросекундах), в течение которого кипмид будет вращаться перед сном для тика. Это значение устанавливает баланс между производительностью и загрузкой процессора и должно быть настроено в соответствии с вашими потребностями. Возможно, когда-нибудь будет добавлена ​​автонастройка, но это не простая вещь, и даже автонастройка должна быть настроена на желаемую производительность пользователя.

Итак, мы можем выполнить эту команду, чтобы установить параметр kipmid_max_busy_us:

echo 100 > /sys/module/ipmi_si/parameters/kipmid_max_busy_us

В нашей системе после установки этого параметра процессор kipmi0 уменьшился до 15%.

Вы можете попробовать это.

Чтобы изменения были постоянными, вы можете настроить параметры модуля ядра ipmi_si.
Создайте файл /etc/modprobe.d/, т. Е. /etc/modprobe.d/ipmi.confДобавьте следующее содержимое: Теперь каждый раз, когда модуль ядра ipmi_si загружается в ядро, параметр должен быть установлен автоматически и правильно.
# Prevent kipmi0 from consuming 100% CPU
options ipmi_si kipmid_max_busy_us=100

d0ngw
источник
Хотя это может быть правильным ответом, на сайтах SE считается наилучшей практикой подробно описывать аргументацию как часть вашего ответа, а также цитировать любые внешние ссылки. Таким образом, если внешняя ссылка перестает функционировать, логика и аргументация все еще доступны для просмотра.
Драв Слоан
Есть ли стандартный способ сделать так, чтобы это вступило в силу навсегда?
Царольд
В CentOS / RHEL эту команду можно сделать постоянной, добавив ее в /etc/rc.d/rc.local. Rc.local запускается после всех других сценариев инициализации.
Царольд
1

kipmi0 можно полностью отключить в CentOS 6, добавив ipmi_si.force_kipmid=0 в качестве параметра ядра

Проведите тестирование на загрузочном экране GRUB, выделив ядро, которое вы хотите загрузить, нажмите «a», чтобы изменить параметры, и добавьте ipmi_si.force_kipmid=0

Сделать постоянным, добавив ipmi_si.force_kipmid=0соответствующие строки ядра в/boot/grub/grub.conf

ПРИМЕЧАНИЕ. В дистрибутивах с ipmi_si в качестве отдельного модуля ядра более подходящим является использование файла modprobe.d conf. В CentOS ipmi_si встроен в образ ядра, поэтому конфиги modprobe не работают.

Dev
источник
1

CentOS 6 имеет драйвер ipmi, скомпилированный в ядре. Если вам не нужна поддержка ipmi, просто отключите grub.conf

ipmi_si.tryacpi=0 ipmi_si.trydmi=0 ipmi_si.trydefaults=0
user72911
источник
1

Я нашел следующее помогает с этой проблемой:

ipmitool bmc info

Кажется, что это пробуждает IPMI, а затем перестает использовать 100% ядра.

Я также нашел следующее полезное:

echo 100 > /sys/module/ipmi_si/parameters/kipmid_max_busy_us

Также в прошлом я мог на некоторых серверах разрешать 100% загрузку ЦП:

ipmitool lan print

и

ipmitool bmc reset cold

но в моем самом недавнем опыте вышеупомянутые варианты просто заставили ipmitoolбы не отвечать и сидеть там, заставляя меня Ctrl+C это.

Надеюсь, это кому-нибудь поможет.

TheLinuxBug
источник
Есть ли проблема сделать echo 1 > /sys/module/ipmi_si/parameters/kipmid_max_busy_us ?
Цянь Чен
0

Я обнаружил, что работает CentOS 7 и пытаюсь выяснить, что с этим связано.

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

Locane
источник