[Решено]Страдания по 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 - синяя...
.
...да мы не только 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: 0P.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+slepnoga написал(а): осталось
Не хватает прерывания. dahdi_test не проходит, если это о чем-то Вам расскажет :)
Да, у меня AMD Turion(tm) X2 Ultra Dual-Core Mobile ZM-84
А по вопросу есть мысли? :)
.
Дык у коллег бы с 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 — это некий костыль над ядром?
.
Две сетевых карты, система нагружена под завязку. Получаемая картина зависит от чипа сетевого интерфейса. 82571EB/82572EI имеют по 2 независимых TX/RX очереди и поддерживают MSI-X, соответственно каждая очередь может быть посажена на отдельный CPU. Подробнее здесь.
Yandex "допиливали" не ядро linux, это все слухи (обс - одна баба сказала).
тык
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 все прерывания повисли на первом ядре :(. Пришлось откатываться