Kipmi0在centos 6.4上的CPU占用率高达99.8%


15

我们有CentOS 6.4,kipmi0显示为99.8%cpu和0.0%内存,平均负载为1.00。我们应该怎么做才能对此进行纠正?



2
@我已经读过它,所以它只是说忽略我应该忽略但我的其他机器没有这个问题吗?
biz14 2013年

其他系统与此系统相同吗?您将必须确定它们是。两者之间必须有根本不同的东西。固件?相同的RPM版本?
slm

@是的,有两台具有相同centos 6.4的相同机器,我现在应该找什么?
biz14 2013年

比较来自以下方面的输出lshwdmidecode这将是我接下来要研究的领域。
slm

Answers:


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 machine1_rpms.txt machine2_rpms.txt

潜在原因1

关于此问题,IBM网站上的技术说明标题为:Kipmi0可能显示Linux上的CPU使用率增加。根据此问题,您基本上可以忽略该问题。

问题描述

在Linux中,kipmi0进程可能显示CPU使用率增加。当IPMI(智能平台管理接口)设备(例如BMC(基板管理控制器)或IMM(集成管理控制器))繁忙或无响应时,利用率可能会提高100%。

固定

无需修复。您应该忽略增加的CPU使用率,因为它不会影响实际的系统性能。

解决方法

  1. 如果使用IPMI设备,请重置BMC或重新引导系统。
  2. 如果不使用IPMI设备,请通过发出以下命令来停止IPMI服务:

    服务ipmi停止

潜在解决方案2

我在某人的博客上找到了该帖子,标题为:kipmi0 problem。这个问题听起来和您的一样。该问题可追溯到2个内核模块作为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

我去过网站和我的系统中都找不到/ etc / sysconfig / lm_sensors这个文件。当我在第一个文件上进行排序时,有些有趣的事情是Asc但第二个文件是desc?其次,如何将差异输出到文件中。是的,我也可以看到很多不同之处。
biz14 2013年

是的,现在我第二次对它进行了降序排列。我不明白如何使用grep“ |”。我还应该怎么做才能解决这个问题?
biz14 2013年

我只是说要这样做:sdiff machine1_rpms.txt machine2_rpms.txt | grep "|"会清除2个.txt文件中的所有差异。还有其他方法可以做到这一点,但这只是一种方法。
slm

我运行了此命令,这是输出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 2013年

请将这些文件也发布在pastebin.com上
slm

24

根据IPMI文件

根据接口的性能,该线程会占用大量CPU。这会浪费大量CPU,并会导致检测空闲CPU和使用额外电源的各种问题。为避免这种情况,kipmid_max_busy_us设置了kipmid在睡眠a刻之前将旋转的最长时间(以微秒为单位)。该值在性能和CPU浪费之间建立了平衡,需要根据需要进行调整。也许有一天,会添加自动调整功能,但这并不是一件容易的事,即使自动调整功能也需要调整到用户所需的性能。

因此,我们可以执行以下命令来设置kipmid_max_busy_us参数:

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

在我们的系统中,设置此参数后,kipmi0的cpu降低到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


尽管这可能是正确的答案,但是在SE网站上最好将详细的推理作为答案的一部分,并引用任何外部链接,这是最佳实践。这样,如果外部链接失效,则此处的逻辑和推理仍然可见。
Drav Sloan 2013年

有没有使之永久生效的标准方法?
tgharold 2013年

在CentOS / RHEL上,可以通过将该命令添加到/etc/rc.d/rc.local使其永久化。rc.local在所有其他初始化脚本之后运行。
tgharold

1

通过添加ipmi_si.force_kipmid=0为内核参数,可以完全在CentOS 6上禁用kipmi0

通过突出显示要引导的内核,在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配置不起作用。


1

CentOS 6具有在内核中编译的ipmi驱动程序。如果不需要ipmi支持,则禁用它grub.conf

ipmi_si.tryacpi=0 ipmi_si.trydmi=0 ipmi_si.trydefaults=0

1

我发现以下有助于解决此问题的方法:

ipmitool bmc info

这似乎唤醒了IPMI,然后停止使用100%的内核。

我还发现以下帮助:

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

同样,在过去,我还可以通过以下方法在某些服务器上解决100%的CPU使用率:

ipmitool lan print

ipmitool bmc reset cold

但在我最近的经验,上述选项只会导致ipmitool为非响应和坐在那里,害我Ctrl+ C它。

希望这对某人有帮助。


有什么问题echo 1 > /sys/module/ipmi_si/parameters/kipmid_max_busy_us吗?
钱琛

0

我发现它正在运行CentOS 7,并试图弄清楚它是怎么处理的。

对我而言,这是Supermicro的“ ipmicfg”,它是根据我编写的脚本或其他内容运行的。我只是将其杀死,kipmi0的用法就消失了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.