Назад | Перейти на главную страницу

Нерегулярный баланс прерываний в AMD Opteron Quad-Core

У меня возникла проблема с перегрузкой CPU7. Я обнаружил, что это было вызвано прерываниями eth0, как вы можете видеть на cat / proc / interrupts ниже. Я использую ядро ​​2.6.35.2 и четырехъядерный процессор AMD Opteron (tm) 2354. Я хотел бы, чтобы это прерывание поддерживалось всеми ядрами, поэтому я попытался повторить ff> / proc / irq / 16 / smp_affinity, но это не так. работает. Если я установил 1, 2, 4, 8, 16 и т.д., он работает для каждого ядра, но не для нескольких. У меня также есть другие серверы, где для smp_affinity установлено значение «ff», и он работает, но эти машины работают на Intel.

           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7
  0:        126          0          0          0          0          0          0          0   IO-APIC-edge      timer
  1:          0          0          0          0          0          0          0          8   IO-APIC-edge      i8042
  9:          0          0          0          0          0          0          0          0   IO-APIC-fasteoi   acpi
 10:          0          0          0          0          0          0          0          2   IO-APIC-fasteoi   ehci_hcd:usb1, ohci_hcd:usb2, ohci_hcd:usb3
 11:          0          0          0          0          0          0          0          0   IO-APIC-fasteoi   sata_svw
 14:          0          0          0          0          0          0          0         44   IO-APIC-edge      ide0
 16:     523739      38196      20957    1288960      40051      33985      99858   12142246   IO-APIC-fasteoi   eth0
 28:      33784          0          1         24          0          4       1017     199001   IO-APIC-fasteoi   megasas
NMI:          0          0          0          0          0          0          0          0   Non-maskable interrupts
LOC:   51149605   52755152   47000502   38164758   47335488   49653390   44361349   19201949   Local timer interrupts
SPU:          0          0          0          0          0          0          0          0   Spurious interrupts
PMI:          0          0          0          0          0          0          0          0   Performance monitoring interrupts
PND:          0          0          0          0          0          0          0          0   Performance pending work
RES:   29252262   26917272   17461908    9927632   26959155   24081482   15451952    5680615   Rescheduling interrupts
CAL:      86814        186        188        177       9656        176        169        176   Function call interrupts
TLB:      13134      52049      17599      15275       9937      18316      15062       9433   TLB shootdowns
ERR:          0
MIS:          0

С уважением, Андрей

Ну, smp_affinity - это битовая маска. Поскольку двоичные представления ваших чисел

1:  0000 0001
2:  0000 0010
4:  0000 0100
8:  0000 1000
16: 0001 0000

вы явно выбрали неправильные значения. Если «ff» не работает, попробуйте использовать «7», который должен установить битовую маску, чтобы разрешить обработку прерываний процессорами 0–2. В противном случае определите «не работает» и опубликуйте результат cat /proc/irq/16/smp_affinity

Вы также можете прочитать эта статья в блоге который более подробно описывает сходство с SMP.