Kipmi0 comendo até 99,8% da CPU no centos 6.4

15

Temos o CentOS 6.4 e kipmi0está mostrando como 99,8% da CPU e 0,0% de memória e carga média é de 1,00. O que devemos fazer para corrigir isso?

biz14
fonte
você deve começar por ler este www-01.ibm.com/support/...
squareborg
2
@ Eu li isso antes, então diz apenas ignorar devo ignorar, mas minhas outras máquinas não estão tendo esse problema?
22413 biz14
Os outros sistemas são idênticos a esse sistema? Você terá que determinar que são. Tem que haver algo fundamentalmente diferente entre eles. Firmware? Mesmas versões RPM?
slm
@Sim existem duas mesmas máquinas com os mesmos centos 6.4 o que devo procurar agora?
biz14
Compare as saídas de lshwe dmidecodeseria minhas próximas áreas para examinar.
slm

Respostas:

5

Depurando o problema

Os outros sistemas são idênticos a esse sistema? Você terá que determinar que são. Tem que haver algo fundamentalmente diferente entre eles. Firmware? Mesmas versões RPM?

Você pode usar ferramentas como lshw, dmidecode, e olhando para o dmesglog em busca de pistas sobre o que é diferente e que é a causa raiz.

Eu obteria uma boa linha de base dos RPMs instalados executando este comando em um dos sistemas que não está apresentando esse problema e no que está e compararia as listas de pacotes para garantir que eles estejam nas mesmas versões.

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

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

Em seguida, pegue os arquivos na mesma máquina e faça um sdiff dos 2 arquivos:

 sdiff machine1_rpms.txt machine2_rpms.txt

Causa potencial # 1

O site da IBM tinha esta nota técnica intitulada: Kipmi0 pode mostrar aumento da utilização da CPU no Linux , em relação a esse problema. De acordo com esse problema, você pode essencialmente ignorar o problema.

Descrição da questão

O processo kipmi0 pode mostrar uma maior utilização da CPU no Linux. A utilização pode aumentar até 100% quando o dispositivo IPMI (Intelligent Platform Management Interface), como um BMC (Controlador de gerenciamento de placa base) ou IMM (Controlador de gerenciamento integrado) está ocupado ou não responde.

Consertar

Nenhuma correção é necessária. Você deve ignorar o aumento da utilização da CPU, pois não afeta o desempenho real do sistema.

Gambiarra

  1. Se estiver usando um dispositivo IPMI, redefina o BMC ou reinicie o sistema.
  2. Se não estiver usando um dispositivo IPMI, pare o serviço IPMI emitindo o seguinte comando:

    parada de ipmi de serviço

Solução potencial # 2

Eu encontrei este post no blog de alguém simplesmente intitulado: kipmi0 problem . Esse problema parecia idêntico ao seu. O problema foi atribuído a um problema com dois módulos do kernel que estavam sendo carregados como parte do lm_sensorspacote.

Estes foram os 2 módulos do kernel:

  • ipmi_si
  • ipmi_msghandler

Gambiarra

Você pode removê-los manualmente com os seguintes comandos:

rmmod ipmi_msghandler
rmmod ipmi_si

Para tornar essa correção permanente, você precisará desativar o carregamento desses módulos específicos do kernel em um dos lm_sensorsarquivos de configuração, comentando-os da seguinte forma:

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

Reinicie lm_sensorsapós fazer essas alterações:

/etc/init.d/lm_sensors
slm
fonte
Estive no site e no meu sistema não encontro este arquivo / etc / sysconfig / lm_sensors. Algo engraçado quando eu faço a classificação no primeiro arquivo é Asc, mas o segundo arquivo é desc? Em segundo lugar, como gerar a diferença em um arquivo. Sim, também vejo muitas diferenças.
biz14
Sim, agora eu fiz a segunda vez que é classificado em conformidade decrescente. Eu não entendo como usar o grep "|". O que mais devo fazer para corrigir este problema?
biz14
Tudo o que eu estava dizendo era fazer isso: sdiff machine1_rpms.txt machine2_rpms.txt | grep "|"eliminará todas as diferenças entre os 2 arquivos .txt. Existem outras maneiras de fazer isso, mas essa é uma maneira.
slm
Eu executei este comando e aqui está a saída 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. O 12_rpms é a máquina do problema e o outro está sem o problema. Mas quando eu olho manualmente 12_rpms tem 247 linhas e 11_rpms tem 263, mas o sdiff é apenas um? Então, qual deve ser o meu próximo passo agora com base nessa diferença?
biz14
Poste esses arquivos também em pastebin.com .
Slm
24

De acordo com o documento IPMI :

esse encadeamento pode usar muita CPU, dependendo do desempenho da interface. Isso pode desperdiçar muita CPU e causar vários problemas na detecção da CPU ociosa e no uso de energia extra. Para evitar isso, o kipmid_max_busy_us define a quantidade máxima de tempo, em microssegundos, que o kipmid irá girar antes de dormir para um carrapato. Esse valor estabelece um equilíbrio entre desempenho e desperdício de CPU e precisa ser ajustado às suas necessidades. Talvez, algum dia, o ajuste automático seja adicionado, mas isso não é uma coisa simples e até o ajuste automático precisaria ser ajustado ao desempenho desejado do usuário.

Portanto, podemos executar este comando para definir o parâmetro kipmid_max_busy_us:

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

Em nosso sistema, após definir esse parâmetro, a CPU do kipmi0 caiu para 15%.

Você pode tentar isso.

Para tornar as alterações persistentes, você pode configurar as opções para o módulo do kernel ipmi_si.
Crie um arquivo /etc/modprobe.d/, ou seja /etc/modprobe.d/ipmi.conf, e adicione o seguinte conteúdo: Agora, toda vez que o módulo do kernel ipmi_si é carregado no kernel, o parâmetro deve ser definido automaticamente e corretamente.
# Prevent kipmi0 from consuming 100% CPU
options ipmi_si kipmid_max_busy_us=100

d0ngw
fonte
Embora essa possa ser a resposta correta, é considerada uma prática recomendada nos sites da SE detalhar detalhadamente o raciocínio como parte de sua resposta, além de citar links externos. Dessa forma, se o link externo se tornar extinto, a lógica e o raciocínio ainda estarão visíveis aqui.
Drav Sloan
Existe uma maneira padrão de fazer isso entrar em vigor permanentemente?
tgharold
No CentOS / RHEL, esse comando pode ser permanente, adicionando-o ao /etc/rc.d/rc.local. O rc.local é executado após todos os outros scripts init.
tgharold
1

O kipmi0 pode ser desabilitado inteiramente no CentOS 6 adicionando ipmi_si.force_kipmid=0como um parâmetro do kernel

Teste na tela de inicialização do GRUB destacando o kernel que você deseja inicializar, pressione 'a' para modificar os parâmetros e anexando ipmi_si.force_kipmid=0

Torne permanente anexando ipmi_si.force_kipmid=0às linhas relevantes do kernel em/boot/grub/grub.conf

NOTA: Nas distros que possuem ipmi_si como um módulo separado do kernel, é mais apropriado usar um arquivo modprobe.d conf. No CentOS, o ipmi_si é incorporado à imagem do kernel, portanto, as configurações do modprobe não funcionam.

Dev
fonte
1

O CentOS 6 possui um driver ipmi compilado no kernel. Se você não precisa do suporte ao ipmi, desative-o grub.conf

ipmi_si.tryacpi=0 ipmi_si.trydmi=0 ipmi_si.trydefaults=0
user72911
fonte
1

Encontrei as seguintes ajudas com esse problema:

ipmitool bmc info

Isso parece ativar o IPMI e então deixa de usar 100% de um núcleo.

Eu também achei o seguinte útil:

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

Também no passado, em alguns servidores, consegui resolver o uso de 100% da CPU:

ipmitool lan print

e

ipmitool bmc reset cold

mas na minha experiência mais recente opções acima seria justa causa ipmitoolpara ser não-responsivos e sentar-se lá, fazendo-me Ctrl+ C-lo.

Espero que isso ajude alguém.

TheLinuxBug
fonte
Existe algum problema a fazer echo 1 > /sys/module/ipmi_si/parameters/kipmid_max_busy_us?
Qian Chen
0

Eu encontrei isso rodando o CentOS 7 e tentando descobrir o que estava acontecendo.

Para mim, era o "ipmicfg" do Supermicro, executado a partir de um script que escrevi ou algo assim. Acabei de compilá-lo e o uso do kipmi0 foi embora.

Locane
fonte