ritchie hat geschrieben:Momentan läuft's seit Samstag Nachmittag durch, also immerhin schon fast 48 Stunden. Ich rechne eigentlich minütlich mit dem Hänger...
Update: Mit vorsichtigem Optimismus kann ich inzwischen sagen, dass es stabil läuft! Vorsichtig deshalb, weil beim letzten Mal, als ich das zu sagen gewagt habe, der Crash kurz danach kam.
Firmware-Version auf dem Pi:
Code: Alles auswählen
3.12.18+ #679 PREEMPT Thu May 1 14:40:27 BST 2014 armv6l GNU/Linux
Sundtek-Treiber von Anfang Mai (bei mir installiert am 3.5.)
Es kommt alle paar Tage noch zu Timeouts des Mediaclient, erkennbar am Eintrag in /var/log/mediaclient.log:
Code: Alles auswählen
2014-05-28 03:22:20 [26668] timed out reading confirmation from mediasrv
Bisher war das ein sicheres Zeichen, dass der Treiber unrettbar abgeschmiert ist, was meist nur durch Reboot zu beheben war. Inzwischen scheint das nur noch eine Art "Verschlucken" des Treibers bzw. der USB-Schnittstelle zu sein, die sich von alleine wieder gibt. Die Timeouts passieren bei mir immer am frühen Morgen zwischen 3 und 5 Uhr, ich habe keine Ahnung, woran das liegt. Eine Spekulation: Da ist auf einem Kanal gar nichts los, deshalb kommt auch nichts, was den Mediaclient auf Timeout laufen lässt.
Ich habe das Skript freq_collect.sh angepasst, dass es nach einem Timeout 5 Minuten wartet und es erst dann erneut probiert. Die 5 Minuten Wartezeit sind extrem konservativ und lassen sich vermutlich verkürzen:
Code: Alles auswählen
#!/bin/sh
# Check, ob letzter Aufruf auf Timeout gelaufen ist; wenn ja,
# dann Prüfung, ob letzter Eintrag in mediaclient.log älter als
# 5 Minuten ist. Nach dieser Zeit sollten keine Prozessleichen
# mehr übrig sein und sich der Sundtek-Treiber erholt haben
if `tail -1 /var/log/mediaclient.log | grep -q timed`
then
MC_TIME=`date -r /var/log/mediaclient.log +%s`
AKT_TIME=`date +%s`
DIFF_TIME=`expr $AKT_TIME - $MC_TIME`
if [ $DIFF_TIME -gt 300 ]
then
echo `date +"%F %H:%M:%S"` weiter >> /var/log/mediaclient.log
else
exit 0
fi
fi
export KDGDIR=/home/sundtek/kdg
cd $KDGDIR
# Frequenzen für DOCSIS im lokalen Kabel-Segment
freqs="546000000 554000000 562000000 570000000 578000000 586000000 594000000 602000000"
for freq in $freqs
(usw.)
Wie schaut's bei anderen Pi-Usern aus? Die harte Tour mit dem Reboot bei Timeouts war für mich nie eine Option, weil der Pi auch für andere Logging-/Graphing-Aufgaben genutzt wird (Heizung, Strom), die mir wichtiger sind als das Monitoring der Segmentauslastung. So kann ich aber endlich auch dieses vernünftig betreiben.