Sectionsd abnehmender Speicher -> Reproduzierbar!!!

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

T-Tron hat geschrieben:Habt ihr mal meine angehängte Sectionsd getestet? Rennt bei mir gut und schnell
...wie baut man die in ein JtG/Yadi ein und wie startet man Deine sectionsd?
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

T-Tron hat geschrieben: Ist der 0x60 - 0x6F (Andere Transponder Schedule) nicht unwichtig, und schluckt nur unnötig Speicher?
Du weißt nicht wirklich was du tust, oder? Das mag das Problem verzögern, aber es löst es doch nicht. Wenn man auf den entsprechenden Transponder schaltet, liest er ja wieder alle Events ein. Woher sie dann letztlich kamen ist beim Abschmieren doch egal...
jmittelst
Tuxboxer
Tuxboxer
Beiträge: 6044
Registriert: Montag 17. November 2003, 06:48

Beitrag von jmittelst »

Einfach nach /var/bin legen, chmod auf ausführbar, start_neutrino aus /etc/init.d nach /var/tuxbox kopieren - mit Editor den Start-Aufruf des sectionsd nach /var/bin/sectionsd ändern, chmod auf ausführbar, Box rebooten und dann kannste testen. (für JtG)

cu
Jens
Zuletzt geändert von jmittelst am Donnerstag 15. Dezember 2005, 23:04, insgesamt 1-mal geändert.
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

...ich habe die sectionsd von T-Tron laufen und kann nur die Beobachtung von Torsten 73 bestaetigen: das grosse Speicherfressen ist deutlich moderater..trotzdem habe ich ein fuer mich komplettes EPG...mir reicht das erst mal und ich bin sehr _froh_ dass es voraussichtlich wieder sehr viel laenger dauert bis die Box vom Damoklesschwert sectionsd getroffen wird.

@Jens
'alte' sectionsd killen und 'neue' starten (ohne Neustart) scheint auch zu funktionieren.

@T-Tron
danke!

@Nirvana
..wird so sein dass, das Problem 'nur' verzoegert wird...iss aber trotzdem ein entschaerfender wuergaround bis zur endgueltigen Fehlerbeseitigung. Trotz extreme zapping (nur TV) bleibt der Speicherverzehr bei mir im Moment auf 18,8% stehen...ein Wert der mit dem aktuellen sectionsd im JtG von 10.12 sehr schnell ueberschritten wird...siehe die Tabelle in 'weiha'
T-Tron
Interessierter
Interessierter
Beiträge: 67
Registriert: Mittwoch 2. November 2005, 07:45

Beitrag von T-Tron »

Nirvana hat geschrieben:
T-Tron hat geschrieben: Ist der 0x60 - 0x6F (Andere Transponder Schedule) nicht unwichtig, und schluckt nur unnötig Speicher?
Du weißt nicht wirklich was du tust, oder? Das mag das Problem verzögern, aber es löst es doch nicht. Wenn man auf den entsprechenden Transponder schaltet, liest er ja wieder alle Events ein. Woher sie dann letztlich kamen ist beim Abschmieren doch egal...
Klar, weiß ich das. Ich brauche die (Andere Transponder Schedule) nicht. Warum sollte meine Box auf anderen Transpondern lauschen, wenn ich da vielleicht nie hinzappe. Das Ganze ist ein Luxus, den man bei dem mageren Speicher der DBox und Nutzung Privat EPG nicht mehr hat.
Torsten73 hat geschrieben:
T-Tron hat geschrieben:Habt ihr mal meine angehängte Sectionsd getestet? Rennt bei mir gut und schnell
So habe sie bei mir auf der Nokia Avia500 AMD Sat im Testlauf. Der Speicherbedarf ist deutlich niedriger. Ich habe immer noch 7476k frei und habe alle Sender / Bouqets durchgezappt. Es hat aber anscheinend länger gedauert bis alle Infos da waren.

Ich weiß nicht was Deine Änderung (andere Transponder Schedule) genau bewirkt, aber es macht Speicher frei. Ob die Leeks dadurch weniger werden wird sich zeigen.
Begrenzt Du auch die Events?
Cu
Torsten
Die Infos zu sammeln dauert nicht länger, eher einen tuck (nicht keks) schneller ;)
InTheCliringSt&sTheDB
Interessierter
Interessierter
Beiträge: 64
Registriert: Montag 15. Dezember 2003, 11:16

Beitrag von InTheCliringSt&sTheDB »

Wie wärs denn, einen Switch unter Einstellungen einzubauen, mit welchem sectionsd man die Box laufen lassen will. So könnte man für alle Schwiegermütterboxen den sectionsd 1.193 zur Auswahl stellen, der hat schon mal von Haus aus bei Beginn nur nen Speicherbedarf von 2500 kb, über die aktuellen Sender der ARD! Da sind schon einige Bouquetwechsel drin. Der zweite zur Auswahl stehende sectionsd sollte halt der aktuelle sein mit aktuellem Sendersuchlauf und sonstigem Automagischem. Die Jobs auf ne andere Version umzuswitchen scheint ja keine Probleme zu machen.

Ab dem 1.194er ist der Speicherbedarf übrigens kurz nach dem Start gleich bei über 5000 kb.
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

wenn du sowas benötigst mach dir eine abfrage in deine start_neutrino

if [ -e /var/bin/sectionsd ]; then
/var/bin/sectionsd
else
/bin/sectionsd
fi

innu
InTheCliringSt&sTheDB
Interessierter
Interessierter
Beiträge: 64
Registriert: Montag 15. Dezember 2003, 11:16

Beitrag von InTheCliringSt&sTheDB »

naja, für mich tuts das auch so wie Jens es beschrieben hat, mit den aktuellen Problemen wärs halt nett, wenn man zum testen den aktuellen und auf Knopfdruck einen konsumertauglichen fallback sectionsd hätte.

War ja nur son Gedanke ...
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

T-Tron hat geschrieben: Das Ganze ist ein Luxus, den man bei dem mageren Speicher der DBox und Nutzung Privat EPG nicht mehr hat.
Okay, "Luxus" lasse ich gelten, aber "unwichtig" sind die Infos nicht.
jmittelst
Tuxboxer
Tuxboxer
Beiträge: 6044
Registriert: Montag 17. November 2003, 06:48

Beitrag von jmittelst »

@InTheCliringSt&sTheDB - Das kannste Dir recht leicht per Skript erfüllen. Sectionsd per Start_Neutrino immer aus /var/bin starten lassen. Alternative sectionsd als sectionsd_alt nach /var/bin legen. Dann im Skript zunächst sectionsd stoppen, den Symlink auf die gewünschte sectionsd erzeugen als /var/bin/sectionsd - darüber dann wieder starten. Notfalls kannste dann sogar noch eine Flag-Datei in den Skripts anlegen lassen und mit einem anderen Skript abfragen.

Siehe auch: http://wiki.tuxbox-cvs.sourceforge.net/Neutrino:Skripte

Sowas muß also nicht fest verdrahtet sein, sondern kann man sich auch selbst basteln. Wenn Du es ganz komfortabel machen willst, kannste das mit dem Flexmenü machen: http://www.jackthegrabber.de/viewtopic.php?t=6040 (Download nur sichtbar, wenn man angemeldet ist).

cu
Jens
T-Tron
Interessierter
Interessierter
Beiträge: 67
Registriert: Mittwoch 2. November 2005, 07:45

Beitrag von T-Tron »

Nirvana hat geschrieben:
T-Tron hat geschrieben: Das Ganze ist ein Luxus, den man bei dem mageren Speicher der DBox und Nutzung Privat EPG nicht mehr hat.
Okay, "Luxus" lasse ich gelten, aber "unwichtig" sind die Infos nicht.
Naja, aber auch nicht wichtig, halt so en Zwischending.
InTheCliringSt&sTheDB
Interessierter
Interessierter
Beiträge: 64
Registriert: Montag 15. Dezember 2003, 11:16

Beitrag von InTheCliringSt&sTheDB »

@Jens: Ok, damit sollt ich klar kommen. Danke/@Jens

Wurde in 1.194 schon der automagische Hintergrund Senderscan eingeführt? Wie kam es denn zu diesem explosionsartigen Anstieg des benötigten Speichers?
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

Wichtig ist eben rein subjektiv. Denk an EPGPlus, der den Schedule nutzt oder wenn ich eine Aufnahme für einen der nächsten Tage programmieren möchte, muss ich nun erst auf den Transponder zappen. Aber so lange du das berücksichtigt hast und der Meinung bist, da kann am ehesten "gespart" werden, akzeptiere ich das Vorgehen. Ich habe lieber einen kürzeren, aber vollständigen Schedule. Deshalb die Eventschranke, die ja zusätzlich das komplette Volllaufen des Speichers mit Events verhindert.

@unausspechlichername
Nein, mit Hintergrundscan hat das nichts zu tun. Houdini hat gegen die POLLERR gekämpft und in 1.194 den DMX des EIT von 256 auf 1024 erhöht...
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Ich nutze den EPG als Fersehzeitung und für mich ist wichtig, dass der EPG so schnell wie möglich auf so viel Sendern wie möglich vorhanden ist.
zum Thema EIT Speicher, wir könne den auch wieder reduzieren, aber was hat das für Auswirkungen?
Dann gehen doch bestimmt Events verloren die dann erst nach dem nächsten Wakeup eingelesen werden (möglicherweise) oder?
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

neben dem etwas besserem speicherverbrauch ist ja auch die cpulast ein klein wenig geringer. imho kommt die extreme cpu last von dem ständigen vergleichen der events on zap auf new old current next removeold removenew schönersender hoppelsender garkeinsender etc pp

die vielen kleinigkeiten führen zu einer besserung, beheben aber die probleme nicht
InTheCliringSt&sTheDB
Interessierter
Interessierter
Beiträge: 64
Registriert: Montag 15. Dezember 2003, 11:16

Beitrag von InTheCliringSt&sTheDB »

Pollerr heißt Absturz auf ZDF-Infokanal? Hmm, ist aber schon ein drastischer Würgaround, der den Speicherbedarf glatt verdoppelt. Können das andere verifizieren, dass der 1.193 (im JtG-Komplettimage vom 20.10. oder Snap vom 25.10.) diesen schlanken Speicherbedarf hat?

@Nirvana Bei mir funktionert dieser erweiterte Scan eh nur bedingt, hab halt wenn ich auf ARD-Transponder bin Vorschau auf etwa drei Stunden ZDF Bouquets, da ist der Nutzen marginal. Wegen mit kann diese Änderung also gern ins CVS.

Die Frage ist halt, wird am (kann den Namen schon nicht mehr hören) Speicherleck noch gearbeitet (wäre imo gut) oder lebt man damit. Dann sollte man aber mit Änderungen wie in 1.194 extrem sensibel umgehen.
T-Tron
Interessierter
Interessierter
Beiträge: 67
Registriert: Mittwoch 2. November 2005, 07:45

Beitrag von T-Tron »

Ok, der einzige Nachteil ist EPG-Plus, aber nur wenn man vorher nicht auf dem Transpondern war, stimmt natürlich.
Zur Erklärung für die Anderen:
Die von mir angehängte sectionsd scant nicht die zukünfigen Events anderer Transponter, die Present/Follow anderer Transponder sammelt er weiterhin.
Radio EPG könnte auch nur gescannt werden, wenn man in den Radiomodus wechselt, da kommen nämlich auch sehr viel Daten ;)
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

Der einzige Vorteil ist, dass der Radiotranponder der ARD mit seinen 90 Sendern 7 Tage Vorschau nicht eingelesen wird. Die brauche ich nämlich auch nicht. :wink:
Zum Radioevents nur auf Radiosendern lesen habe ich ja schon gesagt, dass man nur durch Vergelich mit der Senderliste weiß, ob es ein Radioevent ist. Und den Vergleich möchte ich nicht immer machen.

@Houdini
Ich habe in meinen Versionen seit ca. 1 Woche den EIT Speicher auf 384 stehen und die Max_Events jetzt auf 5000. Das hilft der Stabilität wirklich sehr. Obwohl 5000 übertrieben konservativ ist. Außerdem habe ich 2 Bugs im Sportportal weg. Du speicherst die Events mit mehreren Zeiten (und nicht als einzelne Events). Damit ist es für den sectionsd ein NVOD. Die kamen immer direkt hintereinander. Dies ist bei den Sportübertragungen i.d.R. nicht der Fall. Deshalb zeigt er manchmal Current = Next mit nächster Startzeit. Zum "komische Zeitenbug" hatte ich ja im alten Spielthread was geschrieben.
T-Tron
Interessierter
Interessierter
Beiträge: 67
Registriert: Mittwoch 2. November 2005, 07:45

Beitrag von T-Tron »

In der 1.194 ist wurde dmxEIT auf 1024 gesetzt, ich find das ein bischl viel ;)
^^^nur so als Tipp :)
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

T-Tron hat geschrieben:..da kommen nämlich auch sehr viel Daten ;)
..stimmt...die man auch nur braucht wenn man auf Radio geschaltet hat. Waere gut wenn man den Speicher (bei mir >10%) wieder freigeben koennte wenn man zurueck auf TV schaltet...aber freigegeben wird leider nix mehr...wenn der Speicher einmal allokiert wurde isser wech...fuer immer?
InTheCliringSt&sTheDB
Interessierter
Interessierter
Beiträge: 64
Registriert: Montag 15. Dezember 2003, 11:16

Beitrag von InTheCliringSt&sTheDB »

Zum Thema anderen sectionsd verwenden:

So einfach scheint das aber auch nicht zu sein, z.B. den 1.193er krieg ich im aktuellen JtG-snap vom 15.12. nicht zum laufen, der erwartet wohl ne ältere libstdc++. Nur so am Rande, bevor sich jmd den Umstand macht und dann feststellt, dass das ganze neu kompiliert werden müßte.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Außerdem habe ich 2 Bugs im Sportportal weg. Du speicherst die Events mit mehreren Zeiten (und nicht als einzelne Events). Damit ist es für den sectionsd ein NVOD. Die kamen immer direkt hintereinander. Dies ist bei den Sportübertragungen i.d.R. nicht der Fall. Deshalb zeigt er manchmal Current = Next mit nächster Startzeit. Zum "komische Zeitenbug" hatte ich ja im alten Spielthread was geschrieben.
Kannst du dazu mal die Änderungen posten, die Sachen mit NVOD ist mir bewusst.
T-Tron
Interessierter
Interessierter
Beiträge: 67
Registriert: Mittwoch 2. November 2005, 07:45

Beitrag von T-Tron »

Hier eine Sectionsd mit
Bufferanpassung und verzicht auf 0x60 - 0x6F (Andere Transponder Schedule) Scanning.

http://s39.yousendit.com/d.aspx?id=28N2 ... 1MFTY8APF0
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

Eigentlich befinde ich mich ja im Spielstopmodus.

Code: Alles auswählen

static const SIevent &findNextSIevent(const event_id_t uniqueKey, SItime &zeit)
{
	MySIeventsOrderUniqueKey::iterator eFirst = mySIeventsOrderUniqueKey.find(uniqueKey);

	if (eFirst != mySIeventsOrderUniqueKey.end())
	{
	
		SItimes::iterator t = eFirst->second->times.end();
		
		if (eFirst->second->times.size() > 1)
		{
			// Wir haben ein NVOD-Event
			// d.h. wir suchen die aktuelle Zeit und nehmen die naechste davon, falls existent

			for ( t = eFirst->second->times.begin(); t != eFirst->second->times.end(); t++)
				if (t->startzeit == zeit.startzeit)
				{
					t++;

					if (t != eFirst->second->times.end())
					{
					//	zeit = *t;
					//	return *(eFirst->second);
						break;
					}

					t = eFirst->second->times.end();
					break; // ganz normal naechstes Event suchen
				}
		}
	
		MySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey::iterator eNext = mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.find(eFirst->second);
		eNext++;

		if (eNext != mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.end())
		{
			if ((*eNext)->get_channel_id() == eFirst->second->get_channel_id())
			{
				if (t != eFirst->second->times.end()) {
					if (t->startzeit < (*eNext)->times.begin()->startzeit) {
						zeit = *t;
						return *(eFirst->second);					
					}
				}
				zeit = *((*eNext)->times.begin());
				return *(*eNext);
			}
			else
				return nullEvt;
		}
		
	}

	return nullEvt;
}
Übrigens ist gestern der freie Speicher bei meiner Box von morgens bis abends um 300kb gestiegen. Ich werte das mal als gutes Zeichen.
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

wenn man ohne 0x60-0x6f ein bisschen probieren möchte, wie sieht das für folgende zeilen aus:

Code: Alles auswählen

static t_channel_id	messaging_current_servicekey = 0;
std::vector<long long>	messaging_skipped_sections_ID [0x22];			// 0x4e .. 0x6f
static long long 	messaging_sections_max_ID [0x22];			// 0x4e .. 0x6f
static int 		messaging_sections_got_all [0x22];			// 0x4e .. 0x6f
was bedeutet 0x22? (0x6f-0x4e=0x21)
und müßte dieser wert auf 0x11 (0x12) geändert werden? bei all der knobelei, was da so in etwa passiert, steht man immerwieder wie ochs vorm berg davor

nur so als idee
int lemmings=0x6f;
if(access("/var/etc/.no_more_lemmings", R_OK) == 0)
lemmings = 0x5f;
for ( int i = 0x4e; i <= lemmings; i++)
{
messaging_skipped_sections_ID.clear();
messaging_sections_max_ID = -1;
messaging_sections_got_all = false;
}