ฉันจะรู้ได้อย่างไรว่า IRQ ใดรับผิดชอบการใช้งาน CPU สูง


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 / ขัดจังหวะ

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

ฉันจะทราบได้อย่างไรว่า IRQ ใดที่ทำให้เกิดการใช้งาน CPU สูง

แก้ไข:

ผลผลิตจาก 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แสดง
Tim Kennedy

@ TimKennedy: ใช่ ฉันได้แก้ไขคำถามเพื่อแสดงสิ่งที่ dmesg แสดง
eproyectos

คำตอบ:


21

เนื่องจากคุณถามว่าจะรู้ว่า IRQ ตัวใดที่รับผิดชอบหมายเลขmpstatนั้นโดยเฉพาะคุณสามารถสันนิษฐานได้ว่ามันไม่ใช่ Local Interrupt Timer (LOC) เนื่องจากตัวเลขเหล่านั้นมีค่าเท่ากัน แต่ยังmpstatแสดง cpus บางส่วนที่ 0% IRQ

นั่นทำให้ IRQ 0 ซึ่งเป็นตัวจับเวลาระบบและคุณไม่สามารถทำอะไรได้และ IRQ 177 ซึ่งเชื่อมโยงกับไดรเวอร์ b4xxp ของคุณ

ฉันเดาว่า IRQ 177 จะเป็นผู้ร้ายของคุณ

หากนี่เป็นสาเหตุของปัญหาและคุณต้องการเปลี่ยนพฤติกรรมที่คุณเห็นลอง:

  1. ปิดใช้งานซอฟต์แวร์ที่ใช้การ์ดนั้นและดูว่าอินเทอร์รัปต์ลดลงหรือไม่

  2. ถอดการ์ดนั้นออกจากระบบและยกเลิกการโหลดไดรเวอร์และดูว่ามีการปรับปรุงหรือไม่

  3. ย้ายการ์ดใบนั้นไปที่อีกช่องหนึ่งแล้วดูว่าช่วยได้ไหม

  4. ตรวจสอบไดรเวอร์หรือแพตช์ที่ได้รับการอัพเดตสำหรับซอฟต์แวร์

ถ้ามันไม่ใช่ปัญหาและคุณแค่อยากรู้อยากเห็น :)


ปัญหาเกิดขึ้นหลังจากเปลี่ยน MB บางทีการเปลี่ยนการ์ดไปเป็นสล็อต PCI อื่นอาจคุ้มค่าที่จะลอง
eproyectos

ตรวจสอบหน้านี้: voip-info.org/wiki/view/Asterisk+PCI+bus+Troubleshooting ข้อมูลที่ดีสำหรับการระบุปัญหารวมถึงปัญหา IRQ
ทิมเคนเนดี้

4
watch -n1 -d cat /proc/interrupts

สิ่งนี้ไม่ตอบคำถาม OP จริงที่ถาม
heemayl

วิธีการที่คุณเห็นการเปลี่ยนแปลงมากที่สุดขัดจังหวะฉันรู้ว่ามันไม่ได้ความช่วยเหลือฉันเมื่อการแก้ไขปัญหาว่าปัญหาที่ได้อธิบายไว้ในหัวข้อ
sjas

4

BP410P เป็นการ์ด ISDN ที่มี 4 BRI Lines หากทั้งสี่สายเชื่อมต่อคุณควรจะได้รับแพ็กเก็ตซิงค์สี่ครั้งและเมื่อมีการโทรคุณสามารถมี 8 ช่องเสียงที่ใช้งานทุกแพ็กเก็ตที่ส่ง ฯลฯ

หากคุณได้รับการนับ IRQ สูงโดยไม่ต้องทำการโทรใด ๆ นี่อาจเป็นอาการของสิ่งเลวร้าย 2 อย่าง:

  1. มีปัญหาการซิงค์กับผู้ให้บริการคุณควรได้รับคุณภาพเสียงที่ไม่ดี
  2. บรรทัด IRQ นั้นขัดแย้งกันในกรณีนี้ata_piix(ide / sata) ของคุณกำลังใช้สายเดียวกันมีการ์ด BP410P ไดรเวอร์อาจไม่ชอบมากนักในกรณีนี้มีคำตอบก่อนหน้านี้ที่แนะนำให้ลองเปลี่ยนการ์ดเป็นช่องอื่น .

ในการดีบักคุณสามารถลองถอดสายเคเบิล BRI และดูว่ามันสร้างความแตกต่างหรือไม่


+1ฉันจะตรวจสอบคำแนะนำของคุณ ขอบคุณ
eproyectos

1
ว้าวน่าตกใจ ครั้งสุดท้ายที่ฉันต้องเล่นไพ่จ๊อกกี้อยู่ในช่วงกลางทศวรรษที่เก้า ยังไม่ได้ใช้คำว่า 'จ๊อกกี้การ์ด' ตั้งแต่ ฉันคิดว่าทั้งหมดนี้เป็นสิ่งที่ดีสำหรับเรา APIC, MSI ฯลฯ
Alexios

2

ฉันพบว่าตัวเองอยู่ในสถานการณ์เช่นนี้เมื่อไม่นานมานี้และฉันได้เขียนirqtopเครื่องมือเล็กน้อยเพื่อตรวจสอบสิ่งที่เกิดขึ้นได้อย่างง่ายดาย โดยพื้นฐานแล้วมันก็เหมือนกับการทำ a watch -n 1 cat /proc/interruptsด้วยเอาต์พุตที่ดีกว่า

มีซอร์สโค้ดที่นี่: https://gitlab.com/elboulangero/irqtop

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.