Kipmi0 consuma fino al 99,8% di cpu in centos 6.4


15

Abbiamo CentOS 6.4 e kipmi0viene visualizzato come 99,8% cpu e 0,0% di memoria e la media del carico è 1,00. Cosa dovremmo fare per correggere questo?


dovresti iniziare leggendo questo www-01.ibm.com/support/…
squareborg

2
@Ho già letto prima, quindi dice semplicemente Ignora, devo semplicemente ignorare, ma le altre mie macchine non hanno questo problema?
biz14

Gli altri sistemi sono identici a questo sistema? Dovrai determinare che lo sono. Deve esserci qualcosa di sostanzialmente diverso tra loro. Firmware? Stesse versioni RPM?
slm

@Sì ci sono due stesse macchine con gli stessi centos 6.4 cosa devo cercare ora?
biz14

Confronta le uscite da lshwe dmidecodesarebbero le mie prossime aree da esaminare.
slm

Risposte:


5

Debug del problema

Gli altri sistemi sono identici a questo sistema? Dovrai determinare che lo sono. Deve esserci qualcosa di sostanzialmente diverso tra loro. Firmware? Stesse versioni RPM?

Puoi usare strumenti come lshw, dmidecodee guardare il dmesgregistro per trovare indizi su ciò che è diverso e qual è la causa principale.

Otterrei una buona linea di base degli RPM installati eseguendo questo comando su uno dei sistemi che non presentano questo problema e quello che è e confronterei gli elenchi dei pacchetti per assicurarmi che siano tutti nelle stesse versioni.

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

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

Quindi ottenere i file sullo stesso computer ed eseguire uno sdiff dei 2 file:

 sdiff machine1_rpms.txt machine2_rpms.txt

Possibile causa n. 1

Il sito Web IBM aveva questo technote intitolato: Kipmi0 può mostrare un maggiore utilizzo della CPU su Linux , in merito a questo problema. Secondo questo problema, puoi essenzialmente ignorare il problema.

descrizione del problema

Il processo kipmi0 potrebbe mostrare un maggiore utilizzo della CPU in Linux. L'utilizzo può aumentare fino al 100% quando il dispositivo IPMI (Intelligent Platform Management Interface), come un BMC (Baseboard Management Controller) o IMM (Integrated Management Controller) è occupato o non risponde.

fix

Nessuna correzione richiesta. È necessario ignorare un maggiore utilizzo della CPU in quanto non ha alcun impatto sulle prestazioni effettive del sistema.

Work-around

  1. Se si utilizza un dispositivo IPMI, ripristinare BMC o riavviare il sistema.
  2. Se non si utilizza un dispositivo IPMI, interrompere il servizio IPMI emettendo il comando seguente:

    servizio ipmi stop

Soluzione potenziale n. 2

Ho trovato questo post sul blog di qualcuno semplicemente intitolato: problema kipmi0 . Questo problema sembrava identico al tuo. Il problema è stato ricondotto a un problema con 2 moduli del kernel che venivano caricati come parte del lm_sensorspacchetto.

Questi erano i 2 moduli del kernel:

  • ipmi_si
  • ipmi_msghandler

Work-around

Puoi rimuoverli manualmente con i seguenti comandi:

rmmod ipmi_msghandler
rmmod ipmi_si

Per rendere permanente questa correzione, dovrai disabilitare il caricamento di questi particolari moduli del kernel all'interno di uno dei lm_sensorsfile di configurazione, commentandoli così:

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

Riavvia lm_sensorsdopo aver apportato queste modifiche:

/etc/init.d/lm_sensors

Sono stato sul sito Web e nel mio sistema non trovo questo file / etc / sysconfig / lm_sensors. Qualcosa di divertente quando faccio l'ordinamento sul primo file è Asc ma il secondo file è desc? In secondo luogo, come generare la differenza in un file. Sì, posso vedere anche molte differenze.
biz14,

sì, ora ho fatto la seconda volta che è ordinato di conseguenza in ordine decrescente. Non ti capisco come usare il grep "|". Cos'altro dovrei fare per correggere questo problema?
biz14,

Tutto quello che stavo dicendo era fare questo: sdiff machine1_rpms.txt machine2_rpms.txt | grep "|"eliminerò tutte le differenze tra i 2 file .txt. Ci sono altri modi per farlo, ma è un modo.
slm

Ho eseguito questo comando ed ecco l'output 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 è la macchina problematica e l'altra è senza problemi. Ma quando guardo manualmente 12_rpms hanno 247 linee e 11_rpms hanno 263 ma lo sdiff è solo uno? Quindi quale dovrebbe essere il mio prossimo passo ora basato su questa differenza?
biz14,

Pubblica anche questi file su pastebin.com .
slm

24

Secondo il documento IPMI :

questo thread può usare molta CPU a seconda delle prestazioni dell'interfaccia. Ciò può sprecare molta CPU e causare vari problemi con il rilevamento della CPU inattiva e l'utilizzo di energia aggiuntiva. Per evitarlo, kipmid_max_busy_us imposta il tempo massimo, in microsecondi, in cui kipmid girerà prima di dormire per un tick. Questo valore stabilisce un equilibrio tra prestazioni e spreco di CPU e deve essere adattato alle tue esigenze. Forse, un giorno, verrà aggiunta l'auto-tuning, ma non è una cosa semplice e anche l'auto-tuning dovrebbe essere sintonizzata sulla performance desiderata dell'utente.

Quindi, possiamo eseguire questo comando per impostare il parametro kipmid_max_busy_us:

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

Nel nostro sistema, dopo aver impostato questo parametro, la cpu di kipmi0 è diminuita al 15%.

Puoi provare questo.

Per rendere persistenti le modifiche è possibile configurare le opzioni per il modulo del kernel ipmi_si.
Creare un file /etc/modprobe.d/, ad esempio /etc/modprobe.d/ipmi.conf, e aggiungere il seguente contenuto: Ora ogni volta che il modulo del kernel ipmi_si viene caricato nel kernel, il parametro dovrebbe essere impostato automaticamente e correttamente.
# Prevent kipmi0 from consuming 100% CPU
options ipmi_si kipmid_max_busy_us=100


Sebbene questa possa essere la risposta corretta, si ritiene che le migliori pratiche sui siti SE descrivano dettagliatamente il ragionamento come parte della risposta, nonché citando eventuali link esterni. In questo modo, se il collegamento esterno diventa inattivo, la logica e il ragionamento sono ancora visibili qui.
Drav Sloan,

Esiste un modo standard per rendere questo effetto permanente?
tgharold,

Su CentOS / RHEL, quel comando può essere reso permanente aggiungendolo a /etc/rc.d/rc.local. Rc.local viene eseguito dopo tutti gli altri script init.
tgharold,

1

kipmi0 può essere disabilitato su CentOS 6 interamente aggiungendo ipmi_si.force_kipmid=0come parametro del kernel

Provare nella schermata di avvio di GRUB evidenziando il kernel che si desidera avviare, premere 'a' per modificare i parametri e aggiungere ipmi_si.force_kipmid=0

Rendi permanente aggiungendo ipmi_si.force_kipmid=0le relative linee del kernel in/boot/grub/grub.conf

NOTA: nelle distribuzioni che hanno ipmi_si come modulo kernel separato, è più appropriato usare un file conf modprobe.d. In CentOS ipmi_si è integrato nell'immagine del kernel, quindi le configurazioni di modprobe non funzionano.


1

CentOS 6 ha un driver ipmi compilato nel kernel. Se non hai bisogno del supporto ipmi, disabilitalo semplicemente grub.conf

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

1

Ho trovato i seguenti aiuti con questo problema:

ipmitool bmc info

Questo sembra riattivare IPMI e quindi smette di usare il 100% di un core.

Ho anche trovato utile quanto segue:

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

Anche in passato sono stato in grado su alcuni server di risolvere l'utilizzo della CPU al 100%:

ipmitool lan print

e

ipmitool bmc reset cold

ma nella mia esperienza più recente le opzioni sopra menzionate potrebbero ipmitoolnon essere reattive e rimanere lì, causandomi Ctrl+ C.

Spero che questo aiuti qualcuno.


C'è qualche problema da fare echo 1 > /sys/module/ipmi_si/parameters/kipmid_max_busy_us?
Qian Chen,

0

Ho trovato CentOS 7 in esecuzione e ho cercato di capire cosa lo stava prendendo in giro.

Per me, è stato "ipmicfg" di Supermicro in esecuzione da una sceneggiatura che ho scritto o qualcosa del genere. L'ho appena inserito e l'uso di kipmi0 è andato via.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.