CPU 사용량이 많은 IRQ를 어떻게 알 수 있습니까?


20

디스크 컨트롤러 오류로 인해 한 메인 보드에서 다른 메인 보드로 서버를 이동했습니다.

그 이후로 코어 중 하나의 25 %가 항상 IRQ로 이동하지만 IRQ가 어떤 역할을하는지 알지 못했습니다.

커널은 Linux 2.6.18-194.3.1.el5 (CentOS)입니다. mpstat -P ALL보여줍니다 :

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

이것은 / proc / interrupts입니다

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

CPU 사용률을 높이는 IRQ를 어떻게 식별 할 수 있습니까?

편집하다:

출력 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
이 별표 서버입니까? 무엇을 dmesg | grep -i b4xxp보여줍니까?
팀 케네디

@ TimKennedy : 그렇습니다. dmesg가 표시하는 내용을 보여주기 위해 내 질문을 편집했습니다.
eproyectos

답변:


21

글쎄, 특별히 IRQ가의 숫자에 대한 책임 알고하는 방법을 요구하고 있기 때문에 mpstat, 당신은 그 숫자가 상당히 동일하기 때문에, 로컬 인터럽트 타이머 (LOC) 아니에요, 아직 가정 할 수있다 mpstat쇼 0 %에서 그 CPU를 일부 irq.

IRQ 0은 시스템 타이머이며 어떤 것도 할 수 없으며 IRQ 177은 b4xxp 드라이버와 연결되어 있습니다.

내 생각 엔 IRQ 177이 당신의 범인 일 것입니다.

이로 인해 문제가 발생하여보고있는 동작을 변경하려면 다음을 시도하십시오.

  1. 해당 카드를 사용하는 소프트웨어를 비활성화하고 인터럽트가 감소하는지 확인하십시오.

  2. 시스템에서 해당 카드를 제거하고 드라이버를 언로드하고 개선 사항이 있는지 확인하십시오.

  3. 해당 카드를 다른 슬롯으로 옮기고 도움이되는지 확인하십시오.

  4. 소프트웨어의 업데이트 된 드라이버 또는 패치를 확인하십시오.

문제가되지 않고 궁금한 점이 있다면 계속하십시오. :)


MB를 변경 한 후 문제가 발생했습니다. 카드를 다른 PCI 슬롯으로 변경하는 것이 좋습니다.
eproyectos

이 페이지를 확인하십시오 : voip-info.org/wiki/view/Asterisk+PCI+bus+IRQ 문제를 포함하여 문제를 식별하기위한 유용한 정보 문제 해결.
팀 케네디

4
watch -n1 -d cat /proc/interrupts

이것은 OP가 묻는 실제 질문에 대한 답변이 아닙니다 .
heemayl

가장 많은 인터럽트 변경을 볼 수있는 방법으로 , 주제에서 설명한 문제를 정확하게 해결할 때 도움이 되었다는 것을 알고 있습니다 .
sjas

4

BP410P는 4 개의 BRI 회선이있는 ISDN 카드입니다. 4 개의 회선이 모두 연결되어 있으면 한 번에 4 개의 동기 패킷을 가져와야하며 전화를 걸 때 8 개의 음성 채널을 모든 전송 패킷 등에서 활성화 할 수 있습니다.

전화를 걸지 않고 IRQ 수가 높으면 다음과 같은 두 가지 나쁜 증상이 있습니다.

  1. 교환 원과 동기화 문제가 있으며 음성 품질도 좋지 않습니다.
  2. IRQ 회선이 충돌합니다.이 경우 ata_piix(ide / sata) 동일한 회선을 사용하는 BP410P 카드가 있습니다. 드라이버는 그다지 좋아하지 않을 수 있습니다.이 경우 이전 답변이 제안한 카드를 다른 슬롯으로 변경하십시오 .

디버깅하려면 BRI 케이블을 제거하고 차이가 있는지 확인할 수도 있습니다.


+1나는 당신의 조언을 확인합니다. 감사
eproyectos

1
와우, 충격. 마지막으로 카드 자키를해야만했던시기는 90 년대 중반이었습니다. 그 이후로 '카드 자키'라는 용어를 사용하지 않았습니다. APIC, MSI 등으로이 모든 것이 우리 뒤에 있다고 생각했습니다.
Alexios

2

나는 얼마 전에 그런 상황에 처한 것을 발견했고, irqtop무슨 일이 일어나고 있는지 쉽게 모니터링 할 수 있는 작은 도구를 썼습니다 . 기본적 watch -n 1 cat /proc/interrupts으로을 수행하는 것과 동일한 결과이며 더 나은 출력을 제공합니다.

소스 코드 : https://gitlab.com/elboulangero/irqtop

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.