He movido un servidor de una placa base a otra debido a una falla del controlador de disco.
Desde entonces, he notado que constantemente el 25% de uno de los núcleos va siempre a IRQ, sin embargo, no he logrado saber cuál es el IRQ responsable de eso.
El núcleo es un Linux 2.6.18-194.3.1.el5 (CentOS). mpstat -P ALL
muestra:
18:20:33 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
18:20:33 all 0,23 0,00 0,08 0,11 6,41 0,02 0,00 93,16 2149,29
18:20:33 0 0,25 0,00 0,12 0,07 0,01 0,05 0,00 99,49 127,08
18:20:33 1 0,14 0,00 0,03 0,04 0,00 0,00 0,00 99,78 0,00
18:20:33 2 0,23 0,00 0,02 0,03 0,00 0,00 0,00 99,72 0,02
18:20:33 3 0,28 0,00 0,15 0,28 25,63 0,03 0,00 73,64 2022,19
Este es el / proc / interrupciones
cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
0: 245 0 0 7134094 IO-APIC-edge timer
8: 0 0 49 0 IO-APIC-edge rtc
9: 0 0 0 0 IO-APIC-level acpi
66: 67 0 0 0 IO-APIC-level ehci_hcd:usb2
74: 902214 0 0 0 PCI-MSI eth0
169: 0 0 79 0 IO-APIC-level ehci_hcd:usb1
177: 0 0 0 7170885 IO-APIC-level ata_piix, b4xxp
185: 0 0 0 59375 IO-APIC-level ata_piix
NMI: 0 0 0 0
LOC: 7104234 7104239 7104243 7104218
ERR: 0
MIS: 0
¿Cómo puedo identificar qué IRQ está causando el uso elevado de la CPU?
Editar:
Salida de dmesg | grep -i b4xxp
wcb4xxp 0000:30:00.0: probe called for b4xx...
wcb4xxp 0000:30:00.0: Identified Wildcard B410P (controller rev 1) at 00012000, IRQ 177
wcb4xxp 0000:30:00.0: VPM 0/1 init: chip ver 33
wcb4xxp 0000:30:00.0: VPM 1/1 init: chip ver 33
wcb4xxp 0000:30:00.0: Hardware echo cancellation enabled.
wcb4xxp 0000:30:00.0: Port 1: TE mode
wcb4xxp 0000:30:00.0: Port 2: TE mode
wcb4xxp 0000:30:00.0: Port 3: TE mode
wcb4xxp 0000:30:00.0: Port 4: TE mode
wcb4xxp 0000:30:00.0: Did not do the highestorder stuff
wcb4xxp 0000:30:00.0: new card sync source: port 3
dmesg | grep -i b4xxp
muestraRespuestas:
Bueno, ya que está preguntando específicamente cómo saber qué IRQ es responsable del número
mpstat
, puede suponer que no es el temporizador de interrupción local (LOC), ya que esos números son bastante iguales y, sin embargo,mpstat
muestra algunos de esos cpus al 0% irq.Eso deja IRQ 0, que es el temporizador del sistema, y sobre el que no puede hacer nada, e IRQ 177, que está vinculado a su controlador b4xxp.
Supongo que IRQ 177 sería tu culpable.
Si esto está causando un problema, y desea cambiar el comportamiento que ve, intente:
deshabilite el software que usa esa tarjeta y vea si las interrupciones disminuyen.
quitando esa tarjeta del sistema y descargando el controlador, y vea si hay una mejora.
mueva esa tarjeta a otra ranura y vea si eso ayuda.
busque controladores o parches actualizados para el software.
Si no es un problema, y solo tenía curiosidad, continúe. :)
fuente
fuente
BP410P es una tarjeta RDSI con 4 líneas BRI, si las cuatro líneas están conectadas, debería recibir cuatro paquetes de sincronización a la vez y cuando se realizan llamadas, puede tener 8 canales de voz activos todos los paquetes de envío, etc.
Si obtiene un recuento alto de IRQ sin hacer ninguna llamada, esto podría ser un síntoma de 2 cosas malas:
ata_piix
(ide / sata) está usando la misma línea que tiene la tarjeta BP410P, los controladores pueden no gustarle mucho, en este caso la respuesta anterior sugiere probar y cambiar la tarjeta a otra ranura .Para depurar, también puede intentar quitar los cables BRI y ver si hace la diferencia.
fuente
+1
Revisaré tus consejos. GraciasMe encontré en una situación así hace algún tiempo, y escribí una pequeña
irqtop
herramienta para monitorear fácilmente lo que está sucediendo. Básicamente es lo mismo que hacer unwatch -n 1 cat /proc/interrupts
, con una salida más agradable.Código fuente disponible aquí: https://gitlab.com/elboulangero/irqtop
fuente