- Mitglied seit
- 1 Feb 2006
- Beiträge
- 321
- Punkte für Reaktionen
- 0
- Punkte
- 16
Hallo,
ich verwende meine mit dem aktuellen Freetz trunk geflashte FritzBox 7270 relativ intensiv, d.h. neben einem ausgewachsenen Asterisk laufen auch ständig mehrere OpenVPN-Tunnel, Sixxs IPv6, RRDstats, und andere Spielereien. Am USB-Port der FritzBox habe ich einen mit ext3 formatierten USB-Stick angeschlossen, auf dem ich zusätzlich zu den rund 60 MB RAM nochmal 64 MB Swap eingerichtet habe; eben für den Fall der Fälle.
Nun beobachte ich jedoch bei mir das Phänomen wenn die FritzBox für 2-3 Tage läuft, dass der Linux-Kernel intensiv RAM-Seiten auslagert, um dadurch den RAM-Cache vergrößern zu können. Teilweise sieht das dann so aus, dass der RAM-Cache auf bis zu 32 MB anwächst, und dafür einige RAM-Seiten auf den Swap geschoben werden. Dieses Verhalten macht in einem PC mit interner Festplatte durchaus Sinn, auf der FritzBox mit Swapfile auf dem USB-Stick bringt dieses Verhalten meine FritzBox jedoch zum Stillstand. Irgendwann steigt die I/O-Last so weit an, dass sich die Box via SSH höchstens noch rebooten lässt. Ich vermute, dass der hohe I/O-Wait Anteil auf den USB-Flaschenhals des Swap-Spaces zurück zu führen ist.
Im Anhang habe ich zwei Screenshots der RRDstats meiner FritzBox angehängt. Darauf ist sehr schön zu erkennen, wie der RAM-Cache permanent vergrößert wird. Dabei wird auch in Kauf genommen, dass der durch Prozesse belegte RAM durch Auslagern verkleinert wird. Irgendwann kommt es durch enormen I/O-Load wegen des Ein-/Auslagerns zu einer Kettenreaktion, dass immer mehr Prozesse auf I/O warten, die Last steigt kontinuierlich an, und irgendwann schlägt ein automatischer Reboot zu, der womöglich durch einen zu spät reagierenden Watchdog-Timer ausgelöst wird.
Ich sehe das Problem darin, dass der Linux-Kernel bzgl. der Swappiness auch auf der FritzBox mit dem Standard-Wert von 60 läuft. Diese Einstellung veranlasst den Kernel dazu, durchaus in größerem Maße RAM-Seiten zu Gunsten des Caches absichtlich auszulagern. Nach meinen Erfahrungen ist für die FritzBox mit USB-Swap dieses Verhalten jedoch etwas zu aggressiv. Ich habe die Swappiness nun manuell auf den Wert 10 gesetzt, so dass der Swap-Space nun im Normalbetrieb komplett unangetastet bleibt, und die FritzBox spürbar stabiler läuft.
Eine kurze Erklärung was es mit dieser Swappiness auf sich hat gibt's z.B. hier:
http://juliusbeckmann.de/blog/linux-speichermanagement-tunen-swappiness.html
Ich habe in meinem Autorun-Script den Wert wie folgt angepasst:
Dieser Aufruf kann auch problemlos vor dem Einbinden irgendwelchen Swaps ausgeführt werden, es schadet auch nichts, die Swappiness anzupassen obwohl gar kein Swap verwendet wird.
Vielleicht sollte man innerhalb des Freetz Entwicklerteams diesen Punkt mal auf die ToDo-Liste setzen, ob man diesen swappiness-Wert nicht vielleicht direkt im swap-initscript über die /proc-Kernelschnittstelle entsprechend korrigiert (oder im Idealfall vielleicht sogar über das Webinterface einstellbar macht). Mit dem Default-Wert von 60 habe zumindest ich jedenfalls schlechte Erfahrung machen müssen.
Gruß
David
ich verwende meine mit dem aktuellen Freetz trunk geflashte FritzBox 7270 relativ intensiv, d.h. neben einem ausgewachsenen Asterisk laufen auch ständig mehrere OpenVPN-Tunnel, Sixxs IPv6, RRDstats, und andere Spielereien. Am USB-Port der FritzBox habe ich einen mit ext3 formatierten USB-Stick angeschlossen, auf dem ich zusätzlich zu den rund 60 MB RAM nochmal 64 MB Swap eingerichtet habe; eben für den Fall der Fälle.
Nun beobachte ich jedoch bei mir das Phänomen wenn die FritzBox für 2-3 Tage läuft, dass der Linux-Kernel intensiv RAM-Seiten auslagert, um dadurch den RAM-Cache vergrößern zu können. Teilweise sieht das dann so aus, dass der RAM-Cache auf bis zu 32 MB anwächst, und dafür einige RAM-Seiten auf den Swap geschoben werden. Dieses Verhalten macht in einem PC mit interner Festplatte durchaus Sinn, auf der FritzBox mit Swapfile auf dem USB-Stick bringt dieses Verhalten meine FritzBox jedoch zum Stillstand. Irgendwann steigt die I/O-Last so weit an, dass sich die Box via SSH höchstens noch rebooten lässt. Ich vermute, dass der hohe I/O-Wait Anteil auf den USB-Flaschenhals des Swap-Spaces zurück zu führen ist.
Im Anhang habe ich zwei Screenshots der RRDstats meiner FritzBox angehängt. Darauf ist sehr schön zu erkennen, wie der RAM-Cache permanent vergrößert wird. Dabei wird auch in Kauf genommen, dass der durch Prozesse belegte RAM durch Auslagern verkleinert wird. Irgendwann kommt es durch enormen I/O-Load wegen des Ein-/Auslagerns zu einer Kettenreaktion, dass immer mehr Prozesse auf I/O warten, die Last steigt kontinuierlich an, und irgendwann schlägt ein automatischer Reboot zu, der womöglich durch einen zu spät reagierenden Watchdog-Timer ausgelöst wird.
Ich sehe das Problem darin, dass der Linux-Kernel bzgl. der Swappiness auch auf der FritzBox mit dem Standard-Wert von 60 läuft. Diese Einstellung veranlasst den Kernel dazu, durchaus in größerem Maße RAM-Seiten zu Gunsten des Caches absichtlich auszulagern. Nach meinen Erfahrungen ist für die FritzBox mit USB-Swap dieses Verhalten jedoch etwas zu aggressiv. Ich habe die Swappiness nun manuell auf den Wert 10 gesetzt, so dass der Swap-Space nun im Normalbetrieb komplett unangetastet bleibt, und die FritzBox spürbar stabiler läuft.
Eine kurze Erklärung was es mit dieser Swappiness auf sich hat gibt's z.B. hier:
http://juliusbeckmann.de/blog/linux-speichermanagement-tunen-swappiness.html
Ich habe in meinem Autorun-Script den Wert wie folgt angepasst:
Code:
echo 10 > /proc/sys/vm/swappiness
Dieser Aufruf kann auch problemlos vor dem Einbinden irgendwelchen Swaps ausgeführt werden, es schadet auch nichts, die Swappiness anzupassen obwohl gar kein Swap verwendet wird.
Vielleicht sollte man innerhalb des Freetz Entwicklerteams diesen Punkt mal auf die ToDo-Liste setzen, ob man diesen swappiness-Wert nicht vielleicht direkt im swap-initscript über die /proc-Kernelschnittstelle entsprechend korrigiert (oder im Idealfall vielleicht sogar über das Webinterface einstellbar macht). Mit dem Default-Wert von 60 habe zumindest ich jedenfalls schlechte Erfahrung machen müssen.
Gruß
David