Hangi IRQ'nun yüksek CPU kullanımından sorumlu olduğunu nasıl bilebilirim?


20

Disk denetleyicisi hatası nedeniyle bir sunucuyu bir anakarttan diğerine taşıdım.

O zamandan beri sürekli olarak çekirdeklerden birinin% 25'inin her zaman IRQ'ya gittiğini fark ettim, ancak kendimi bunun için IRQ'nun hangisi olduğunu bilmeyi başaramadım.

Çekirdek bir Linux 2.6.18-194.3.1.el5'tir (CentOS). mpstat -P ALLgösterileri:

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

Bu / proc / kesmeler

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

Hangi IRQ'nun yüksek CPU kullanımına neden olduğunu nasıl belirleyebilirim?

Düzenle:

Çıktı 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

1
bu bir yıldız işareti sunucusu mu? ne dmesg | grep -i b4xxpgösteriyor?
Tim Kennedy

@TimKennedy: evet öyle. Sorumumu dmesg'in ne gösterdiğini göstermek için düzenledim.
eproyectos

Yanıtlar:


21

Özellikle, hangi IRQ'nun sayıdan sorumlu olduğunu nasıl bileceğinizi sorduğunuzdan mpstat, bu sayılar oldukça eşit olduğundan ve mpstatbu cpus'lardan bazılarını% 0'da gösterdiğinden , yerel kesme zamanlayıcısı (LOC) olmadığını varsayabilirsiniz. irq.

Bu, sistem zamanlayıcısı olan ve hiçbir şey yapamayacağınız IRQ 0'ı ve b4xxp sürücünüze bağlı IRQ 177'yi bırakır.

Benim tahminim IRQ 177'nin suçlu olacağı.

Bu bir soruna neden oluyorsa ve gördüğünüz davranışı değiştirmek istiyorsanız şunu deneyin:

  1. bu kartı kullanan yazılımı devre dışı bırakabilir ve kesintilerin azalıp azalmayacağını görebilirsiniz.

  2. kartın sistemden çıkarılması ve sürücünün boşaltılması ve iyileştirme olup olmadığına bakın.

  3. kartı başka bir yuvaya taşıyın ve yardımcı olup olmadığına bakın.

  4. yazılım için güncellenmiş sürücüleri veya yamaları kontrol edin.

Sorun değilse ve sadece merak ediyorsanız, devam edin. :)


MB değiştirildikten sonra sorun ortaya çıktı. Belki kartı başka bir PCI yuvasına değiştirmek denemeye değer.
eproyectos

bu sayfayı kontrol edin: voip-info.org/wiki/view/Asterisk+PCI+bus+ IRQ sorunları da dahil olmak üzere sorunları tanımlamak için iyi bilgileri giderin.
Tim Kennedy

4
watch -n1 -d cat /proc/interrupts

Bu OP'nin sorduğu asıl soruya cevap vermez .
heemayl

Bu şekilde en fazla kesme değişikliğini görürsünüz, bu konuda açıklanan sorunu tam olarak giderirken bana yardımcı olduğunu biliyorum .
sjas

4

BP410P, 4 BRI Hattına sahip bir ISDN kartıdır, eğer dört hattın hepsi bağlıysa, bir seferde dört senkronizasyon paketi almanız gerekir ve aramalar yapıldığında, tüm gönderme paketleri vb. 8 ses kanalını aktif hale getirebilirsiniz.

Herhangi bir çağrı yapılmadan yüksek bir IRQ sayımı alırsanız, bu 2 kötü şeyin belirtisi olabilir:

  1. Operatörle bir senkronizasyon sorunu var, ayrıca kötü ses kalitesi almalısınız.
  2. IRQ hatları çakışıyor, bu durumda ata_piix(ide / sata) aynı satırda BP410P kartı kullanıyor, sürücüler çok hoşunuza gitmeyebilir, bu durumda önceki cevaba sahip olun ve kartı başka bir yuvaya değiştirin .

Hata ayıklamak için BRI kablolarını çıkarmayı deneyebilir ve bir fark yaratıp yaratmadığını görebilirsiniz.


+1Tavsiyelerinizi kontrol edeceğim. Teşekkürler
eproyectos

1
Vay canına, şok edici. En son kart-jokey oynamak zorunda kaldım, doksanların ortasındaydı. O zamandan beri 'kart-jokey' terimini bile kullanmadım. Tüm bunların arkamızda olduğunu düşündüm, APIC'ler, MSI vb. İle ilgili
Alexios

2

Bir süre önce kendimi böyle bir durumda buldum ve irqtopneler olduğunu kolayca izlemek için küçük bir araç yazdım . Temelde watch -n 1 cat /proc/interruptsgüzel bir çıktı ile a yapmakla aynı şey .

Kaynak kodu burada bulunabilir: https://gitlab.com/elboulangero/irqtop

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.