100% CPU-Last beim sectionsd bis Uhrzeit ermittelt ist

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
Npq
Senior Member
Beiträge: 1339
Registriert: Donnerstag 24. April 2003, 12:12

100% CPU-Last beim sectionsd bis Uhrzeit ermittelt ist

Beitrag von Npq »

Moin,

nach Hinweisen im IRC hatte ich mir gestern mal - kurz - den sectionsd angeschaut. Ich fand es ein wenig seltsam, daß eine Box, die keinen(!) Empfang hat, zwei Threads aushalten muß, die sich zusammen mal eben 100% der CPU-Leistung nehmen.

Die Ursache ist aber einfach, NIT und EIT-Thread hängen einfach in einer Endlosschleife bis die Uhrzeit ermittelt wird.

Code: Alles auswählen

for (;;)
{
    if (timeset) {
    ...
    }
}
Wobei es beim EIT noch etwas anders strukturiert zu sein scheint, aber der absolut unstrukturierte Aufbau der Routine macht das Analysieren schwierig. "Mal eben" drüberschauen ist dabei nämlich nicht mehr möglich, da man sich in den gewaltigen if- und else-Klauseln verliert.

Also guckt euch das mal bitte an.
Zuletzt geändert von Npq am Mittwoch 30. November 2005, 09:05, insgesamt 1-mal geändert.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Jetzt weisst du ja warum der sectionsd suckt!
duck und :-)
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

demnach müßten alle, die das bootproblem nicht haben, in der sectionsd die zeit per ntp abfragen. probier ich heut abend mal aus.

innu
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

@Npq

*mit der flachen Hand vor den Kopf hau*. Natürlich - das ist es!
Nico 77
Semiprofi
Semiprofi
Beiträge: 1383
Registriert: Freitag 18. April 2003, 15:12

Beitrag von Nico 77 »

Innuendo hat geschrieben:demnach müßten alle, die das bootproblem nicht haben, in der sectionsd die zeit per ntp abfragen. probier ich heut abend mal aus.

innu
Bootzeit verkürzt sich hier beim starten.

Bootzeit DVB: 1:20sec (ARD) :o
Bootzeit NTP: 0:50sec (ARD)
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

Nico 77 hat geschrieben: Bootzeit verkürzt sich hier beim starten.
Bootzeit DVB: 1:20sec (ARD) :o
Bootzeit NTP: 0:50sec (ARD)
..dann war das wohl der Fehler und ich bin froh dass das damit sicher bald vom Tisch ist (Danke an NPQ)...auf den Wuergaround bin ich allerdings gespannt...nicht jeder hat seine Box staendig am Internet/einen NTP-Server im eigenen Netz laufen.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

auf den Wuergaround bin ich allerdings gespannt
Der ist billig: ein sleep(X) solange bis die Uhrzeit da ist wirkt Wunder.
Oder man könnte auch die Threads beim ersten mal alle gleich schlafen schicken und der timethread weckt sie dann alle auf, wenn die Zeit da ist.
Aber was ist wenn keine Zeit kommt...

Houdini
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

petgun hat geschrieben:...auf den Wuergaround bin ich allerdings gespannt...
polemik hilft grad nicht weiter und wird nirvana auch sicher nicht motivieren.

ist im jtg image in der start_neutrino der eintrag
date -s 010101001970
enthalten?
ich meine mich daran zu erinnern, dass die sectionsd mal um

Code: Alles auswählen

// -- do we already have a valid(???) date/time?
if ((tmTime->tm_year + 1900) >= 2005) {
	first_time = false;
	timeset = true;
  	dprintf("we already have a time set\n");
}
und diesem date eintrag in start_neutrino erweitert wurde. wenn beim booten die zeit auf irgendwas gesetzt wird, bleibt timeset auf false, bis vom sat eine uhrzeit angekommen ist - und die schleife um if(timeset) wartet geduldig darauf.

innu

edit
@houdini: initialisier zum testen timeset = true;
allerdings gibt es dann mecker, dass die uhr falsch geht ;-)
Nirvana
Erleuchteter
Erleuchteter
Beiträge: 646
Registriert: Mittwoch 16. April 2003, 14:12

Beitrag von Nirvana »

Innuendo hat geschrieben: polemik hilft grad nicht weiter und wird nirvana auch sicher nicht motivieren.
WAS? Wieso ich denn schon wieder? ;)
Der Fehler hat da schon immer immer geschlummert. Ich habe ihn nur leider auch nicht behoben. Er tritt nur jetzt deutlicher zu Tage, weil es mehr Threads sind, die sich kloppen. Petgun wird mir noch ewig dankbar sein, weil seine Box in Zukunft 7 Sekunden schneller bootet, als je zuvor. ;)
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

Nirvana hat geschrieben:Petgun wird mir noch ewig dankbar sein, weil seine Box in Zukunft 7 Sekunden schneller bootet, als je zuvor. ;)
morgen kommt der weihnachtsmann ... *summ*
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

Nirvana hat geschrieben:Petgun wird mir noch ewig dankbar sein, weil seine Box in Zukunft 7 Sekunden schneller bootet, als je zuvor. ;)
...wenn's wirklich so ist...sage ich jetzt schon mal _DANKE_!! ...noch mehr Danke, dass Du Dich von Polemik nicht demotivieren laesst.

@Innuendo
..ich will wirklich nicht polemisieren...habe im Moment nur Angst vor weiteren Schnellschuessen die zum Dauerzustand werden koennten.
Metallica
Einsteiger
Einsteiger
Beiträge: 191
Registriert: Dienstag 30. Dezember 2003, 01:49

Beitrag von Metallica »

Nirvana hat geschrieben:Petgun wird mir noch ewig dankbar sein, weil seine Box in Zukunft 7 Sekunden schneller bootet, als je zuvor. ;)
:D *LOL* :D
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

Metallica hat geschrieben:
Nirvana hat geschrieben:Petgun wird mir noch ewig dankbar sein, weil seine Box in Zukunft 7 Sekunden schneller bootet, als je zuvor. ;)
:D *LOL* :D
;-) freut mich dass Dich das so sehr belustigt...ich kann 'ewig dankbar' sein...und ich werde dieses Thema (rund um secionsd) in guter Erinnerung behalten und nicht vergessen wer was/wie daran gemacht hat.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Der Fehler hat da schon immer immer geschlummert.
stimmt
weil seine Box in Zukunft 7 Sekunden schneller bootet, als je zuvor
kann ich mir durchaus vorstellen :-)

Also los, ran ans Werk.
jmittelst
Tuxboxer
Tuxboxer
Beiträge: 6044
Registriert: Montag 17. November 2003, 06:48

Beitrag von jmittelst »

Hätte keiner dran gebastelt, wäre nix passiert, so wird es besser und besser und ...

cu
Jens
MOhlmann
Einsteiger
Einsteiger
Beiträge: 205
Registriert: Montag 19. April 2004, 21:09

Beitrag von MOhlmann »

ist im jtg image in der start_neutrino der eintrag
date -s 010101001970
enthalten?
Ja das ist in der rcS drin

Code: Alles auswählen

/bin/date -s 0101120070 
habe mal meine start.neutrino dann geändert und das hier hinzugefügt.

Code: Alles auswählen

/bin/date -s 010112002005 
Was soll ich sagen, die Boot Zeit von 85 sec. auf 55 sec. runter.

Gruß Michael
Torsten73
Erleuchteter
Erleuchteter
Beiträge: 547
Registriert: Mittwoch 30. Juni 2004, 16:06

Beitrag von Torsten73 »

Innuendo hat geschrieben:demnach müßten alle, die das bootproblem nicht haben, in der sectionsd die zeit per ntp abfragen. probier ich heut abend mal aus.

innu
Stimmt ich hole auch die Zeit vom Satelitten.

Cu
Torsten

Nachtrag:
Bedenkt bitte auch dabei, dass es weiterhin sichergestellt sein muß mit der richtigen Uhrzeit zu arbeiten. Denn sonst haben wir wieder Probleme mit den Timern, die aufgrund falscher und fehlender Uhrzeit/Datum gelöscht werden!
PauleFoul
Wissender
Wissender
Beiträge: 1839
Registriert: Sonntag 17. August 2003, 01:39

Beitrag von PauleFoul »

Tolle Arbeit Jungs!! Und wieder wird Neutrino ein ganzes Stück besser.

Dafür danke ich den "neuen" Dev es und allen Imagefuzies :D *vor Riker duck* :D


Gruß
____Paule
zexma
Tuxboxer
Tuxboxer
Beiträge: 2067
Registriert: Mittwoch 6. März 2002, 15:29

Beitrag von zexma »

petgun hat geschrieben:
Nirvana hat geschrieben:Petgun wird mir noch ewig dankbar sein, weil seine Box in Zukunft 7 Sekunden schneller bootet, als je zuvor. ;)
...wenn's wirklich so ist...sage ich jetzt schon mal _DANKE_!! ...noch mehr Danke, dass Du Dich von Polemik nicht demotivieren laesst.
OT.
Wenn Du selbst weißt, dass es nur "(demotivierende) Polemik" ist, warum verzichtest Du zukünftig nicht einfach drauf? :gruebel:
Torsten73
Erleuchteter
Erleuchteter
Beiträge: 547
Registriert: Mittwoch 30. Juni 2004, 16:06

Beitrag von Torsten73 »

Hi,
wie ich gerade sehe, hat Homar einen Fix zum obigen Fehler ins CVS gestellt!

Schon mal im Voraus vielen Dank!

Cu
Torsten
rasc
Senior Member
Beiträge: 5071
Registriert: Dienstag 18. September 2001, 00:00

Beitrag von rasc »

Innuendo hat geschrieben: ich meine mich daran zu erinnern, dass die sectionsd mal um

Code: Alles auswählen

// -- do we already have a valid(???) date/time?
if ((tmTime->tm_year + 1900) >= 2005) {
	first_time = false;
	timeset = true;
  	dprintf("we already have a time set\n");
}

jo, da bin ich der Schuldige...

Aber eigentlich sollte das keine brute force, sondern irgendwo sollte ein sleep (1) dazwischen sein.

Da es ansonsten (worst case) bis 30 sec. dauern kann, bis die Zeit da ist, waere die Box ansonsten komplett dicht.
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

rasc hat geschrieben: jo, da bin ich der Schuldige...
prima - auch wenn da schon ein "schneller-starten-patch" eingecheckt wurde - hauptsache wir haben einen schuldigen.
teeren, federn und durch dorf jagen sag i da :D
BOFH
Erleuchteter
Erleuchteter
Beiträge: 498
Registriert: Sonntag 10. März 2002, 17:00

Beitrag von BOFH »

Nicht hauen, aber könnte man dieses Zeitdingens nicht parallel auf NTP und DVB jagen?
Einer wird's schon packen.

*Duck* und wech........

Anonymous
BOFH
:D
mws
Developer
Beiträge: 331
Registriert: Freitag 7. Februar 2003, 22:17

Beitrag von mws »

ich weiss nicht, wieviele personen eine dbox2 mit linux und neutrino betreiben. aber von den dbox2 sind höchstens (meine einschätzung) 10% ständig am inet und könnten ntp nutzen.

da auf dem sat die zeit immer kommt - wenn sie falsch kommt, schlagt die provider ! - ist das die sinnigste methode.

ansonsten steht es jedem frei, das mal $neu zu implementieren. von mir aus auch per gui ein/aus/umschaltbar.
mit implementieren meine ich aber nicht reinfrickeln :)

gruss
mws
DrStoned
Tuxboxer
Tuxboxer
Beiträge: 2614
Registriert: Montag 20. Mai 2002, 10:49
Image: JTG-Image [IDE] Version 2.4.4
Image: (7025SS) Merlin

Beitrag von DrStoned »

Mit dem letzten JtG-Snap vom 01.12.2005 22:22 Uhr läuft das Booten wieder wie gewohnt, ob mit oder ohne übers INET gesetzte Uhrzeit. Jetzt mal schauen wie sich der sectionsd verhält. :wink: :wink: :wink:

Greetz von DrStoned
Greetz von DrStoned :lol: :lol: :lol: