[realtek dual lan] rl0: watchdog timeout

hi leute.

ich bin relativ neu bei (free)bsd, habe aber einige jahre linuxerfahrung (debian, suse, usw).
nun, ich habe das jetway mini itx board 615df.
darauf befindet sich ein realtek 8100 dual lan chip - also zwei rj45 ports.

problem dabei ist, dass ich das interface rl0 nicht nutzen kann, ohne die meldung
Code:
rl0: watchdog time
zu bekommen.

kurzerhand installierte ich debian und testete die ganze sache. das gleiche maleur.
fix sagte mir google, in der menu.lst von grub dem kernel zu sagen "irqpoll" und prompt funzten beide lan-anschlüsse parallel. dem router-setup stand nix mehr im weg.

da dachte ich mir doch "aha". zurück bei bsd fand ich mich dann in den bootloader-config-dateien recht aufgeschmissen - und google wusste auch nicht weiter.

deaktivieren von acpi und apic brachten genau nix.

meine letzte hoffnung liegt nun also bei euch.
kann ich dem bsd-kernel irgendwie ein "irqpoll" beibringen?

danke euch schonmal.
(und verzeiht, wenn dieses thema eher woanders hingepasst hätte.)
 
danke für deine erste reaktion.
auf der inzwischen 3 tägigen suche (es ist deprimierend seit tagen auf dem schlauch zu stehen und nicht vorwärts zu kommen) bin ich schon des öfteren auf aussagen wie "realtek chipsets are crap" gestoßen. nichts desto trotz muss es doch zu machen sein.

irre ich mich? debian (zb.) und bsd nutzen doch den einzig wahren kernel von linus. da muss es doch auch bei freebsd die möglichkeit des "irqpoll" parameters geben.

habe noch eine erklärung zu diesem:
When an interrupt is not handled search all handlers for it. Also check all handlers each timer interrupt. Intended to get systems with badly broken firmware running.
 
Klingt irgendwie nach etwas das du mit sysctl regeln kannst. Grep doch einfach mal nach irq.
 
danke für deine erste reaktion.
auf der inzwischen 3 tägigen suche (es ist deprimierend seit tagen auf dem schlauch zu stehen und nicht vorwärts zu kommen) bin ich schon des öfteren auf aussagen wie "realtek chipsets are crap" gestoßen. nichts desto trotz muss es doch zu machen sein.

irre ich mich? debian (zb.) und bsd nutzen doch den einzig wahren kernel von linus. da muss es doch auch bei freebsd die möglichkeit des "irqpoll" parameters geben.

habe noch eine erklärung zu diesem:

Nein, alle BSDs nutzen ihren eigenen Kernel, hat (deshalb ist es ja gerade ein BSD), garnichts mit dem vom Linus geschriebenen dingen zu tun ;) - Evtl. möchte ich dir deshalb die sehr interresante geschichte von BSD nahelegen.

Realtec-Karten (d.H. die neueren gigabits von denen sollen halbwegs okay sein, es geht meist um die älteren Rtl8139-chips) funktionieren selten irgendwo wirklich sauber. Es ist eher ein glücksspiel, und das Problem hat man unter JEDEM betriebsystem, inkl. Linux, BSD und Windows.

Zudem kommt hinzu das diese Karten einige der notwendigen berechnungen durch die CPU machen lassen, was zusätzlich auch noch Prozessorleistung fordert - der allgemeine tipp wird hier also sein: Kauf dir ne ordentlich NIC ;)

(Wozu ausser bei extremer Platznot kauft man sich eigentlich so ein Board?)
 
Nein, alle BSDs nutzen ihren eigenen Kernel, hat (deshalb ist es ja gerade ein BSD), garnichts mit dem vom Linus geschriebenen dingen zu tun ;) - Evtl. möchte ich dir deshalb die sehr interresante geschichte von BSD nahelegen.

Realtec-Karten (d.H. die neueren gigabits von denen sollen halbwegs okay sein, es geht meist um die älteren Rtl8139-chips) funktionieren selten irgendwo wirklich sauber. Es ist eher ein glücksspiel, und das Problem hat man unter JEDEM betriebsystem, inkl. Linux, BSD und Windows.
nun, zumindest unter linux habe ich es lösen können.
Zudem kommt hinzu das diese Karten einige der notwendigen berechnungen durch die CPU machen lassen, was zusätzlich auch noch Prozessorleistung fordert - der allgemeine tipp wird hier also sein: Kauf dir ne ordentlich NIC ;)

(Wozu ausser bei extremer Platznot kauft man sich eigentlich so ein Board?)
aha. gut. realtek ist crap. dass mein debian die sache geregelt bekommt ist also glück.
werde ich wohl freebsd kicken müssen und auf ein toleranteres debian setzen.

und richtig. aus platznot habe ich das board äußerst günstig erstanden. es soll nämlich in einem mini-itx case als router dienen. und da machen sich 20x20 cm recht gut.
außerdem ist unter diesem umstand davon abzusehen, extra eine karte zu kaufen. dieser platz ist nämlich einer wlan-karte vorbehalten.

@kamikaze: danke. mal schaun.
 
Wenn Du das Problem unter Linux mit 'IRQPOLL' hast lösen können, dann liegt vermutlich der gleiche Designfehler Deines Mainboards vor wie in vielen anderen Fällen auch (ich leide derzeit auch unter diesem IBM-Intel-Archaikum Relikt ...!!).

Dein FBSD Kernel muß mit der Option 'DEVICE_POLLING' versehen und übersetzt worden sein. Dann kannst Du das Interface mit der Option 'polling' starten. Diese Option wird dem "ifconfig_rl0="inetx XXXX netmask 0xffffff00 polling" mit auf den Weg gegeben. Das funktioniert allerdings nur, wenn der Treiber IRQ-Polling unterstützt. IRQ-Polling heißt, daß sich wie ehedem die CPU wieder um das Abfragen des Gerätezustandes bemühen muß. Unter FreeBSD ist damit sogar mehr aus dem Netzwerkinterface herauszuholen, zumindest sagen das einige 'Entwickler'. Es ist wichtig, im Kernel die Option 'HZ' auf 2000 oder 3000 zu setzen, je nach Aktualität der Hardware.
Das Problem ist wohl ein 'shared IRQ' - in Deinem Falle. Schau mal mit vmstat -i, ob die beiden Realtek Adapter auf dem gleichen IRQ mit einem anderen Gerät gelistet werden.

Neuere Geräte, insbesondere NIC, sollten MSI unterstützen, wenn das der Fall ist, darf man sich potentiell über ein leistungsfähiges Gerät freuen. Leider sehe ich unter FreeBSD davon herzlich wenig. Im direkten Vergleich eines FreeBSD 7.0 mit einem Gentoo 2007.0/1 auf der gleichen Hardware sieht FreeBSD ziemlich arm aus, weshalb ich mir zur Zeit keine großen Gedanken mehr mache FreeBSD weiter als Serverplattform einzusetzen. Kontaktiert man die Mailingliste, antwortet meist ein koreanischer Herr, dessen primäre Analyse stets auf 'shared IRQ' und Polling aktivieren lautet - auch wenn zum Beispiel die Marvell-Treiber gleich nach 2 Minuten mit einem WATCHDOG Timeout 'sterben'. Selbst unter OpenSource Entwicklern scheint es nun Mode zu werden, bei Unfähigkeit die Schuld anderen zuzuschieben, so wie man das zur Genüge im bundesdeutschen Tele-Netz-Chaos kennt.

Zurück zum Problem: Wenn Du Polling im Kernel und auf der/den Netzkarte(n)aktiviert hast, schreib uns doch mal wie sich die Leistung des GEsamtsystemes verhält ...
 
eisenfaust, du bist evtl. mein gott :belehren:

ich werde es die tage mal proben. jedenfalls hören sich deine worte nach dem an, was ich mir gewünscht habe. :cool:

EDIT:

vmstat -i sagt:
Code:
interrupt                          total       rate
irq0: clk                        3402407        999
irq7: ppc0                             1          0
irq8: rtc                         435355        127
irq11: rl1 uhci0                   30660          9
irq14: ata0                        12195          3
Total                            3880618       1140

zum hz-wert:
man polling schrieb:
Because in the worst case devices are only polled on clock interrupts, in order to reduce the latency in processing packets it is advisable to increase the frequency of the clock to at least 1000 HZ.

hängt das mit der cpu zusammen? meine tickt bei 1,3GHz (p3 tualatin)
 
Zuletzt bearbeitet:
Zurück zum Problem: Wenn Du Polling im Kernel und auf der/den Netzkarte(n)aktiviert hast, schreib uns doch mal wie sich die Leistung des GEsamtsystemes verhält ...
verschärfte scheiße, das funzt. du bist mein gott. meine bitch :D
hz habe ich auf 2000 gestellt - goldene mitte.
performance... naja, der dhcpoffer meines servers ließ ein paar sekunden auf sich warten, aber das können auch andere interferenzen gewesen sein. wenn mir nochwas auffällt schlage ich alarm.

wobei ich auf dem system keine mordsperformance brauche. soll ja nur routen und ein wenig http-serven.

und nochmal an alle: vielen dank für euer hirnschmalz! wunderbare community hier.
 
verschärfte scheiße, das funzt. du bist mein gott. meine bitch :D
hz habe ich auf 2000 gestellt - goldene mitte.
performance... naja, der dhcpoffer meines servers ließ ein paar sekunden auf sich warten, aber das können auch andere interferenzen gewesen sein. wenn mir nochwas auffällt schlage ich alarm.

wobei ich auf dem system keine mordsperformance brauche. soll ja nur routen und ein wenig http-serven.

und nochmal an alle: vielen dank für euer hirnschmalz! wunderbare community hier.


Mal abseits aller blasphemischer Bekundungen, angeblich soll 'POLLING' die Leistung verbessern. Die CPU, sofern sie Zeit hat, kann den Status des Gerätes 'pollen' und das wenn sie Zeit hat und nicht dann, wenn sie beschäftigt ist, das Gerät aber eine Unterbrechungsanforderung (IRQ) stellt. Zumindest, glaube ich, ist das die Theorie. Ein relativ moderat belastetes System wird keine Probleme haben, allerdings ist meine Maschine am Boden, wenn Last auf dem Netzadapter ist (nForce4X32/CK804). systat zeigt oftmals mehr als 45% IDLE an, aber die Kiste 'hängt'.
Nun denn ... Wenn Du vielleicht HZ=4000 versuchst, könntest Du vielleicht sogar noch eine Verbesserung erfahren, wer weiß. An dieser Stelle ist es Empirie ;-)

HZ: Wenn ich es richtig verstanden habe, wird mit HZ der Grundtakt 'aufgelöst', das heißt bei HZ=1000 ist die kleinste, feinste Einheit eben 1/1000 Grundeinheit, bei HZ=4000 eben 1/4000. Irgendwann stößt man aber an die physikalisch auflösbare Grenze bzw. Du erreichst einen Wert, bei dem irgendeine Komponente, ein Timer vielleicht, nicht feiner reagieren kann. Dann kann es passieren, daß man mit HZ=3000 schlechter fährt als mit HZ=2000, weil bei 3000 eventuell nur noch alle zwei Takte ein Ereignis bedient/erfaßt werden kann. Da mußt Du eben ausprobieren.
 
Zuletzt bearbeitet:
Zurück
Oben