Also ich habe nun bestimmt die letzten 10 Stunden mit dem Problem verbracht, immerhin mit Teilerfolg.
Wie es aussieht liegt es am Treiber, nur bevor ich jetzt mir die Funktionsweise eines für mich neuen Contentversionierungssystems (GIT) aneigene und bis in die Tiefen von Linus Torvalds und der kernel Entwickler vordringe, warte ich ersteinmal das nächste Release des Intel Treibers ab.
Es gibt die Version 7.3.20 vom Treiber (mitte Dezember), welcher aber zu kernel 2.6.20 inkompatiebel ist, 2.6.19 Version soll noch funktionieren.
Es gibt zwar auch den k2 patchlevel (wie u.a. auch für 7.3.15-k2 im 2.6.20.1er kernel einer existiert), nur habe ich dazu erstmal keinen patch gefunden, der liegt irgendwo in GIT.
Da habe ich jetzt aber kein Bock mehr drauf, da die Möglichkeit besteht, dass mein Problem immer noch bestehen wird. Es gibt nämlich viele Gründe. Es hängt oft mit anderen Komponenten zusammen die sich im PCI bus irgendwie stören. Bei einigen half ein Eeprom patch, bei anderen dafür diverse Optionen für den Treiber, wiederum woanders das Aktivieren von delayed PCI transaction oder das Tauschen das Mainboards bzw Umstecken der PCI Karten etc pp.
Bevor ich jetzt aber alle gesammelten hardware Infos in den bugtracker schiebe, will ich ersteinmal den neuen Treiber testen. Evtl. backe ich mir mal einen 19er kernel zum Teseten.
Was ich Dir empfehlen kann ist auch bei Gelegenheit auf den 2.6.20er kernel umzusteigen (wilderigel hat ja ein schönes howto dafür geschrieben
klick)
Wenn Du NFS nutzt, dann nimm aber gleich die 2.6.20.1, da die 20 ein
bug im Zusammenhang mit NFS enthält.
In diesem Fall das howto genauso anwenden nur entprechend anstatt 2.6.20 überall 2.6.20.1 verwenden und im Makefile: EXTRAVERSION = .1-dvb
Vorteil gegenüber 2.6.15 ist ein greifender watchdog, so dass Dein ethernet interface bei "Detected Tx Unit Hang" immer neu gestartet wird:
"e1000: eth1: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex"
Was ich sonst noch rausgefunden habe (bei mir zumindest) ist, dass wenn unter dmesg TDH nicht gleich TDT ist, dann das Problem sehr häufig auftritt.
Kopiere ich große Files, dann hängt mein interface spätestens alle 30 Sekunden. Samba stört das nicht, das macht dann nach 10 Sekunden weiter, aber die Performance geht klar in den Keller und parallel auf SSH Vernindungen rumtoben ist dann auch nicht, weil laufend Abbrüche.
Deaktivieren von TSO hat bei mir zwar keine 100% Lösung gebracht, aber eine wesentliche Verbesserung (hangs höchstens mal alle 5 Minuten anstatt alle 30 Sekunden)
|
Source code
|
1
|
ethtool -K ethX tso off
|
Das zuvor genannte "ethtool -s ethX autoneg off duplex full" kannst Du vergessen, das hilft nicht. Das einzige was dadurch passiert, ist dass das interface neu initialisiert und das wohl nötig ist, damit das TSO = off auch was bringt (bzw ist dann TDH erst gleich TDT).
Sowieso müsste die Reihenfolge dann sein:
|
Source code
|
1
2
|
ethtool -K ethX tso off
ethtool -s ethX autoneg off duplex full
|
Ein "ifconfig -ethX down; ifconfig ethX up" wird es sicher genauso tun.
Oder halt den watchdog zuschlagen lassen.
Von daher, und da ich eh selten mal grosse Daten schiebe, kann ich damit erstmal gut leben wenn ich alle Jubeljahre mal GBs an Daten schieben muss bricht mir nix ab wenn ich mal TSO deaktivieren muss. Wen es dennoch nervt -> /etc/init.d/ + /etc/rc2.d/ sein Dein Freund.