Witam!
Gdzieś mi ostatnio przez oczy przemknęła możliwość zmiany przerwania
urządzenia w już działającym systemie, ale nie mogę teraz tego znaleźć
Otóż jest maszyna (tym razem nie debian, wybaczcie ale nie wiem gdzie zapytać,
a tutaj jest sporo specjalistów) jądro 2.6.11 + 3 sieciowki:
2x nieszczesne RTL-8169 Gigabit Ethernet (eth0 i eth1)
1x wspaniale Ethernet Pro 100 (eth2)
podłączone doPCI 32bit (niestety).
Były tak powkładane w sloty pci, że przy starcie płyta prz listowaniu
pokazywała, że każda sieciówka ma swoje osobne przerwanie.
Potem już w systemie "dzięki" APIC mam
cat /proc/interrupts
CPU0
0: 196355782IO-APIC-edge timer
8: 1IO-APIC-edge rtc
9: 0 IO-APIC-level acpi
14: 89555IO-APIC-edge ide0
177: 3949345608 IO-APIC-level eth0
185: 1188602577 IO-APIC-level eth1
193: 3101470526 IO-APIC-level eth2
NMI: 0
LOC: 196363943
ERR: 0
MIS: 0
Ponieważ na sieciówce eth0 jest generowany największy ruch, który potem
rozkłada się na dwie strony więc zależało by mi aby ona miała wyższe
przerwanie (bo jeśli dobrze kombinuje ma ono wyższy priorytet).
Dlaczego chcę to zrobić?
Bo zauważyłem że gdy mam duży ruch na eth1 to ruch na eth0 jest
"dławiony" (biedny PCI się nie wyrabia) i sieciówka nie rozwija skrzydeł :) a
na tym ruchu zależy mi bardziej.
Obserwacja ta jest o tyle ciekawa, że moduły są włączone w trybie NAPI - czyli
odpytywanie przez procesor zamiast obsługa przerwań
(te drivery chyba nie są do końca jeszcze dobrze zrobione.. w changlog`u
kernela non-stop coś piszą o zmianach ehh)
Mimo wszytsko pytanie czy da się już na uruchomionym systemie zmienić
przerwania? Jest to maszyna BARDZO produkcyjna i wyłączania/przekładania kart
unikam jak ognia. Niestety moduł r8169 nie przyjmuje parametru irq... chyba
że o czymś nie wiem
Mam nadzieję, że jasno przedstawiłem sytuacje :))
Będę wdzięczy na wszelkie sugestie/link/howto.
pozdrawiam
Krzysiek.