[Решено]Страдания по IRQ

Добрый день!
Вот мое хозяйство:

cat /proc/interrupts 
           CPU0       CPU1       
  0:      15255      36507   IO-APIC-edge      timer
  1:          2          6   IO-APIC-edge      i8042
  7:          1          0   IO-APIC-edge    
  8:          2         76   IO-APIC-edge      rtc0
  9:          0          0   IO-APIC-fasteoi   acpi
 14:         31         39   IO-APIC-edge      pata_atiixp
 15:          0          0   IO-APIC-edge      pata_atiixp
 16:          0          2   IO-APIC-fasteoi   ohci_hcd:usb3, ohci_hcd:usb4
 17:          0          0   IO-APIC-fasteoi   ehci_hcd:usb1
 18:          4         27   IO-APIC-fasteoi   ohci_hcd:usb5, ohci_hcd:usb6
 19:      12537     136311   IO-APIC-fasteoi   ehci_hcd:usb2, eth0, wcte12xp0
NMI:          0          0   Non-maskable interrupts
LOC:      28129      10051   Local timer interrupts
SPU:          0          0   Spurious interrupts
RES:       7296       6899   Rescheduling interrupts
CAL:         16         29   Function call interrupts
TLB:        845        602   TLB shootdowns
ERR:          1
MIS:          0

Как видите:

19:      12537     136311   IO-APIC-fasteoi   ehci_hcd:usb2, eth0, wcte12xp0

две самые мои ресурсоемкие железки на одном прерывании плюс USB.
Второй день гуглю как дать каждой железке свое прерывание, ну или хотябы одной из них. На эту тему везде пессимизм. Нашел интересную оптимистичную статью. В биосе счастья нет. Также нашел таблицу опций загрузки для ядра. Пробовал отключать acpi и apic. При отключении apic прерываний действительно становится 16, но irq sharing не отключается и опять девайсы как гирлянда на одном прерывании. Еще нашел интересный материал, но мне не удается редактировать, например, /proc/irq/19/smp_affinity. Может поменялось с тех пор что-то, центос 4.5 уже старая, или у нас в генту по-другому.
1. Как отключить IRQ sharing кто-нибудь знает?
2. Имел ли кто опыт в подобных вещах, поделитесь :)

осталось понять зачем это

осталось понять зачем это делать ?
П.С Линух не DOS :)

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

позвольте угадать? :) у вас

позвольте угадать? :) у вас обоих (как и у меня) athlon. а вы видели cat /proc/interrupts на многоядерном интеле? там почти симметрично :)
а тут в РАЗЫ нагрузка на ядра отличается.
вероятно, особенность SMP в исполнении AMD. других мыслей нет. :)
походу, одно ядро на атлонах "сачкует" :)

P.S.: Linux - это красная таблетка :-) Windows - синяя...

.

Aladdin написал(а):
позвольте угадать? :) у вас обоих (как и у меня) athlon. а вы видели cat /proc/interrupts на многоядерном интеле?

...да мы не только intel и amd видели.

#0$ cat /proc/interrupts
           CPU0       CPU1
  0:        127          0   IO-APIC-edge      timer
  1:          2          0   IO-APIC-edge      i8042
  8:          1          0   IO-APIC-edge      rtc0
  9:          0          0   IO-APIC-fasteoi   acpi
 14:         56          0   IO-APIC-edge      ata_piix
 15:          0          0   IO-APIC-edge      ata_piix
 18:   10028885          0   IO-APIC-fasteoi   eth0
 19:    2148959          0   IO-APIC-fasteoi   ata_piix
NMI:          0          0   Non-maskable interrupts
LOC:  101244823  101245147   Local timer interrupts
SPU:          0          0   Spurious interrupts
PMI:          0          0   Performance monitoring interrupts
PND:          0          0   Performance pending work
RES:      87021     121509   Rescheduling interrupts
CAL:        168     229657   Function call interrupts
TLB:      25097      14865   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
MCE:          0          0   Machine check exceptions
MCP:        338        338   Machine check polls
ERR:          1
MIS:          0

#1$ cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
  0:      90806      21096  459586880    1619224    IO-APIC-edge  timer
  1:          4          1        156         24    IO-APIC-edge  i8042
  6:          1          0          1          0    IO-APIC-edge  floppy
  8:          2          0          1          0    IO-APIC-edge  rtc
  9:          0          0          0          0   IO-APIC-level  acpi
12:         33         32        125         32    IO-APIC-edge  i8042
209:     104937          0   68496895          0         PCI-MSI  ahci
225:       1842 3815866906       1843       1860   IO-APIC-level  eth0
233:      42623          0          0 3540210025         PCI-MSI  eth1
NMI:          0          0          0          0
LOC:  461083806  461083771  460995047  460994963
ERR:          0
MIS:          0

P.S. intel, Debian 2.6.33.3-grsec, up 1 day, это что то проясняет?
P.P.S. во втором случае мы видим, что два ядра из четырех тупо простаивают, MicroTick RouterOS и все тот же винтел

ws ~ # cat /proc/interrupts

ws ~ # cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3       
  0:        229         93         75         80   IO-APIC-edge      timer
  1:          1          0          1          0   IO-APIC-edge      i8042
  3:          0          1          0          0   IO-APIC-edge    
  4:          1          1          0          0   IO-APIC-edge    
  7:          0          0          0          0   IO-APIC-edge      parport0
  8:         23         23         24         22   IO-APIC-edge      rtc0
  9:          0          0          0          0   IO-APIC-fasteoi   acpi
 12:          1          1          1          1   IO-APIC-edge      i8042
 16:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb5
 18:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb4
 19:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb3
 23:      26610      26998      26635      27130   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb2
 28:      12960      13260      12771      13155   PCI-MSI-edge      i915
 29:     420033     421916     419946     421355   PCI-MSI-edge      ahci
 30:   10340013   10332710   10339807   10332883   PCI-MSI-edge      eth0
 31:     433729     438643     433934     439073   PCI-MSI-edge      hda_intel
NMI:          0          0          0          0   Non-maskable interrupts
LOC:   24098229   17537875   17749365   10172581   Local timer interrupts
SPU:          0          0          0          0   Spurious interrupts
PMI:          0          0          0          0   Performance monitoring interrupts
PND:          0          0          0          0   Performance pending work
RES:     141475      89310     144706      92438   Rescheduling interrupts
CAL:     440089      63637     443801      49971   Function call interrupts
TLB:      39724      55279      36901      55826   TLB shootdowns
TRM:          0          0          0          0   Thermal event interrupts
THR:          0          0          0          0   Threshold APIC interrupts
MCE:          0          0          0          0   Machine check exceptions
MCP:        344        344        344        344   Machine check polls
ERR:          3
MIS:          0

?
uptime ~2 дня

А можно я, можно?

А можно я, можно?

           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       
  0:         70          0          0 1862768764          0          0          0          0   IO-APIC-edge      timer
  1:          0          0          0          2          0          0          0          0   IO-APIC-edge      i8042
  4:          0          0          0    5598678          0          0          0          0   IO-APIC-edge      serial
  8:          0          0          0         37          0          0          0          0   IO-APIC-edge      rtc0
  9:          0          0          0          0          0          0          0          0   IO-APIC-fasteoi   acpi
 12:          0          0          0          3          0          0          0          0   IO-APIC-edge      i8042
 16:          0          0          0          0          0  140595955          0          0   IO-APIC-fasteoi   aacraid, uhci_hcd:usb3
 17:          0          0          0          0          0          0          0          0   IO-APIC-fasteoi   parport0, parport1
 18:          0          0          0          0          2          0          0          0   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb8
 19:          0          0          0          0          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb5, uhci_hcd:usb7
 21:          0          0          0          0          0         24          0          0   IO-APIC-fasteoi   uhci_hcd:usb4
 23:          0          0          0          0     192579          0          0          0   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb6
 31:          0  594348038          0          0          0          0          0          0   PCI-MSI-edge      eth1-rx-0
 32:          0  568029673          0          0          0          0          0          0   PCI-MSI-edge      eth1-tx-0
 33:          0          0          6          0          0          0          0          0   PCI-MSI-edge      eth1
 34:          0          0 1379251027          0          0          0          0          0   PCI-MSI-edge      eth0-rx-0
 35:          0          0          0  933360049          0          0          0          0   PCI-MSI-edge      eth0-tx-0
 36:          0          0          0         26          0          0          0          0   PCI-MSI-edge      eth0
 37:          0          0          0          0          0          0          3          0   PCI-MSI-edge      ioat-msix
 38:          0          0          0          0          0          0          3          0   PCI-MSI-edge      ioat-msix
 39:          0          0          0          0          3          0          0          0   PCI-MSI-edge      ioat-msix
 40:          0          0          0          0          3          0          0          0   PCI-MSI-edge      ioat-msix
 41:          0          0          0          0          0          3          0          0   PCI-MSI-edge      ioat-msix
 42:          0          0          0          0          0          3          0          0   PCI-MSI-edge      ioat-msix
 43:          0          0          0          0          0          0          3          0   PCI-MSI-edge      ioat-msix
 44:          0          0          0          0          0          0          3          0   PCI-MSI-edge      ioat-msix
NMI:          0          0          0          0          0          0          0          0   Non-maskable interrupts
LOC: 1137281638 1005896941  582094196  116800069 1885245687 1429333175  950533803 1122911136   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:  869303638  941760975  140289225  111539732  708112872  594002972   35259536   17396843   Rescheduling interrupts
CAL:   89040605       4512       4667       4838       2998       4520       4802       4797   Function call interrupts
TLB:     798499     453638     266079     165874     516380     471012     187854     136394   TLB shootdowns
TRM:          0          0          0          0          0          0          0          0   Thermal event interrupts
THR:          0          0          0          0          0          0          0          0   Threshold APIC interrupts
MCE:          0          0          0          0          0          0          0          0   Machine check exceptions
MCP:      30314      30314      30314      30314      30314      30314      30314      30314   Machine check polls

Это за 105 дней.

P.S. Имхо, использование этих значений для чего-то окромя попялится и порадоватся на непонятные цифорки - несколько неразумное занятие =)

Я тоже хочу. Аптайм 4 часа.

Я тоже хочу. Аптайм 4 часа. x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 5200+

            CPU0       CPU1       
   0:         43          0   IO-APIC-edge      timer
   1:          0          2   IO-APIC-edge      i8042
   3:          0          2   IO-APIC-edge    
   4:          0          2   IO-APIC-edge    
   7:          1          0   IO-APIC-edge      parport0
   8:          0          1   IO-APIC-edge      rtc0
   9:          0          0   IO-APIC-fasteoi   acpi
  12:          0          4   IO-APIC-edge      i8042
  14:       9409     164930   IO-APIC-edge      pata_amd
  15:          0          0   IO-APIC-edge      pata_amd
  16:        123      23583   IO-APIC-fasteoi   nvidia
  20:       4651     763415   IO-APIC-fasteoi   HDA Intel
  21:       1123      91549   IO-APIC-fasteoi   ohci_hcd:usb2
  22:       3722     345276   IO-APIC-fasteoi   ehci_hcd:usb1
  23:        638     158801   IO-APIC-fasteoi   sata_nv
  27:       1210     612439   PCI-MSI-edge      eth0
 NMI:          0          0   Non-maskable interrupts
 LOC:    3806388     539252   Local timer interrupts
 SPU:          0          0   Spurious interrupts
 PMI:          0          0   Performance monitoring interrupts
 PND:          0          0   Performance pending work
 RES:    1848241    1462991   Rescheduling interrupts
 CAL:     144089        883   Function call interrupts
 TLB:      37610      46111   TLB shootdowns
 TRM:          0          0   Thermal event interrupts
 THR:          0          0   Threshold APIC interrupts
 MCE:          0          0   Machine check exceptions
 MCP:         56         56   Machine check polls
 ERR:          1
 MIS:          0

slepnoga написал(а): осталось

slepnoga написал(а):
осталось понять зачем это делать ?

Не хватает прерывания. dahdi_test не проходит, если это о чем-то Вам расскажет :)

Aladdin написал(а):
позвольте угадать? :) у вас обоих (как и у меня) athlon

Да, у меня AMD Turion(tm) X2 Ultra Dual-Core Mobile ZM-84
А по вопросу есть мысли? :)

.

trscod написал(а):
slepnoga написал(а):
осталось понять зачем это делать ?

Не хватает прерывания. dahdi_test не проходит

Дык у коллег бы с forum.nag.ru и asteriskforum.ru поинтересовались данным вопросом, не? (:

я же отметил "в исполнении

я же отметил "в исполнении AMD" :)
ставил Eкакой-то там. 4 ядра по два треда. cat /proc/interrupts показывает практически равномерную загрузку.
а мысли - образованный товарищ рекомендовал почитать теорию SMP. а то что у вас 2 ядра из четырех простаивают - может ядро пересобрать? либо система недогружена? :)
Просто одно ядро ведущее, остальные - ведомые. т.е. первым прерывание ловит одно ядро, потом планировщик смотрит, какое ядро на данный момент менее загружено, и отдает обработку ему.
P.S.: По вопросу - Яндекс отказались от Цисок в пользу Linux. Только они ядро допиливали. Но, т.к. для себя пилили, в основную ветку эти патчи не попали. Кстати, пару месяцев назад такая тема здесь уже поднималсь.
P.P.S.: emerge -v sys-apps/irqbalance - оно работает!!!!!!!

P.S.: Linux - это красная таблетка :-) Windows - синяя...

То есть irqbalance — это

То есть irqbalance — это некий костыль над ядром?

.

Aladdin написал(а):
а то что у вас 2 ядра из четырех простаивают - может ядро пересобрать? либо система недогружена? :)

Две сетевых карты, система нагружена под завязку. Получаемая картина зависит от чипа сетевого интерфейса. 82571EB/82572EI имеют по 2 независимых TX/RX очереди и поддерживают MSI-X, соответственно каждая очередь может быть посажена на отдельный CPU. Подробнее здесь.

Aladdin написал(а):
P.S.: По вопросу - Яндекс отказались от Цисок в пользу Linux. Только они ядро допиливали. Но, т.к. для себя пилили, в основную ветку эти патчи не попали. Кстати, пару месяцев назад такая тема здесь уже поднималсь.

Yandex "допиливали" не ядро linux, это все слухи (обс - одна баба сказала).
тык

Aladdin написал(а):
P.P.S.: emerge -v sys-apps/irqbalance - оно работает!!!!!!!

P.S. переключите "Настройки просмотра комментариев" на "Древовидный-развернутый" и смотрите, кому и на что вы отвечаете.

Спасибо за советы, хотелось

Спасибо за советы, хотелось бы вернуться к моей проблеме. Гугл навел меня на realtime. Понимание пока пришло не до конца, читаю. Кто имеет опыт? rtirq - написано, что это средство для изменения таблицы DSDT, сформированной BIOS. realtime и rtirq помогут мне?

Возможно, что написанное ниже

Возможно, что написанное ниже прозвучит глупо... Но тем не менее, я рискну.

Насколько я понял, wctel2xp0 - это некое железное устройство, вставленное в PCI-слот?
eth0 - это что-то встроенное, или тоже вставленное в PCI-слот?

Мне довольно давно приходилось решать подобную задачу, с другими устройствами, но это неважно. На некоторых мат. платах PCI-слоты сидят на одном прерывании, а иногда встроенное железо сидит на одном прерывании с каким-нибудь из PCI-слотов. Может, имеет смысл попробовать расставить платы в другие слоты, и в BIOS-е отключить все, что не нужно (например, контроллер флоппи, LPT, что там еще...

Не знаю, что за железка этот wctel, но гугль выдал в первом же результате: "Help with IRQ conflict between wct2xxp and eth0", и первый же отвечающий посоветовал то же, что и я, только по-английски.

Спасибо за ответ. Да, я так и

Спасибо за ответ. Да, я так и делаю в обычных случаях. В этом же случае есть только один PCIe слот и в биосе нужных фич c IRQ нет, а eth0 не выключишь. Машина такая.

А поддерживает ли это железо

А поддерживает ли это железо MSI-(X)?

Спасибо, включил MSI в ядре,

Спасибо, включил MSI в ядре, пожертвовал EHCI и все получилось:

          CPU0       CPU1       
  0:      30662      55287   IO-APIC-edge      timer
  1:          3          5   IO-APIC-edge      i8042
  7:          1          0   IO-APIC-edge    
  8:          0         97   IO-APIC-edge      rtc0
  9:          0          0   IO-APIC-fasteoi   acpi
 14:         11         43   IO-APIC-edge      pata_atiixp
 15:          0          0   IO-APIC-edge      pata_atiixp
 16:          0          2   IO-APIC-fasteoi   ohci_hcd:usb1, ohci_hcd:usb2
 18:      17200      40313   IO-APIC-fasteoi   ohci_hcd:usb3, ohci_hcd:usb4
 19:      39330    1739287   IO-APIC-fasteoi   wcte12xp0
 24:     295244          0  HPET_MSI-edge      hpet2
 27:       5793      16801   PCI-MSI-edge      eth0
NMI:          0          0   Non-maskable interrupts
LOC:        148      42676   Local timer interrupts
SPU:          0          0   Spurious interrupts
RES:      11678       8382   Rescheduling interrupts
CAL:         21         23   Function call interrupts
TLB:        999        814   TLB shootdowns
ERR:          1
MIS:          0

Получается, что распределение

Получается, что распределение прерываний по ядрам процессора зависит от поддержки чего-то там в ядре? У меня debian squeeze был на ядре 2.6.32-3, прерывания красиво распределялись по 4 ядрам, после обновления ядра до 2.6.32-5 все прерывания повисли на первом ядре :(. Пришлось откатываться

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".