[gelöst] GDS-Modul: Perfmon delays bei unzip Archiv

Begonnen von FhemPiUser, 28 August 2016, 07:51:44

Vorheriges Thema - Nächstes Thema

FhemPiUser

Hallo betateilchen,

ich habe eine Frage zu Deinem GDS-Modul: Ich habe das Problem, dass ich immer perfom-delays bekomme, wenn das GDS-Modul das ZIP-Archiv extrahiert.

Jetzt habe ich im Code gesehen, dass die globale Variable "PREFER_BIN" des Archive::Extract-Perlmoduls auf 1 gesetzt ist und damit das unzip Kommandozeilentool statt dem unzip Perl Modul verwendet wird.

$Archive::Extract::PREFER_BIN = 1;

Was ist der Grund dafür? Kann das mit meinem perfom-delays zusammenmhängen aufgrund eines blocking-Verhaltens der Kommandozeile?

update: habe es getestet, auch mit prefer_bin 0 kommen die perfmon delays. was kann man noch gegen die delays machen bzgl. unizp? kann das unzip nicht irgendwie mit minimaler priorität im hintergrund ablaufen?

Ich finde das GDS Modul so klasse, dass ich darauf nicht verzichten möchte, auch wenn andere Module wie UWZ bei mir keine perform delays verursachen.

betateilchen

Zitat von: FhemPiUser am 28 August 2016, 07:51:44
Jetzt habe ich im Code gesehen, dass die globale Variable "PREFER_BIN" des Archive::Extract-Perlmoduls auf 1 gesetzt ist

In der aktuellen Version des GDS Moduls

55_GDS.pm 11734 2016-07-03 14:12:48Z

wird Archive::Extract überhaupt nicht mehr verwendet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FhemPiUser

#2
ok, ich habe gerade ein update all gemacht und habe trotzdem eine ältere Version?

55_GDS.pm 11367 2016-05-02

In der Version ist eine Funktion zum unzippen vorhanden, allerdings habe ich gerade bemerkt, dass diese scheinbar gar nicht verwendet wird...

Hmm, wie wird dann das zip-Archiv extrahiert bzw. woher können sonst die perfmon delays kommen?

Die Delays kommen immer genau zu dem Zeitpunkt des notify bzw at


define n_checkGDS notify dwd:REREADALERTS get dwd alerts xxx
define a_checkGDS at +*01:00:00 get dwd rereadcfg

betateilchen

Zitat von: FhemPiUser am 29 August 2016, 07:11:40
ok, ich habe gerade ein update all gemacht und habe trotzdem eine ältere Version?

Logisch. GDS wird nicht per update aktualisiert, da es seit einigen Monaten nur noch im ./contrib Zweig von fhem liegt.
Da muss man sich schon selbst um das Update kümmern.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FhemPiUser

ahh, ok, danke, das wusste ich nicht. ich spiel mal die neue version ein und teste mal. bin gespannt, will endlich diese delays loswerden...

das modul ist super, danke für die entwicklung!

FhemPiUser

bei der neuen version wird bei mir das notify zum holen der alerts nicht mehr getriggert. hat sich da etwas verändert?

bisher hatte ich ein at und ein notify:

define at_dwd at +*01:00:00 get dwd rereadcfg

define n_dwd notify dwd:REREADALERTS get dwd alerts xxxx

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FhemPiUser

#7
hmm, ok, komisch, er scheint das notify nicht auszuführen...

Eine andere Frage: Wieso wird das GDS Modul nicht mehr offiziell mit fhem verteilt?

Benni


FhemPiUser

danke benni und schade, denn ich finde das Modul klasse...

betateilchen

Zitat von: FhemPiUser am 30 August 2016, 21:09:26
schade, denn ich finde das Modul klasse...

Ich auch, aber den Streß drumrum nicht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FhemPiUser

ahh, jetzt geht es bei mir wieder mit notify und at und es gibt keine delays mehr.

Super, danke!

FhemPiUser

Hi betateilchen,

kriege seit dem Update von GDS-Modul auf die neueste Version immer folgende Meldung im fhem log:

readingsUpdate(dwd,alert_headline,Amtliche WARNUNG vor STARKEM GEWITTER  ) missed to call readingsBeginUpdate first.
2016.09.04 18:17:27 1: readingsUpdate(dwd,alert_headline_exists,1) missed to call readingsBeginUpdate first.


Sagt Dir das was?

betateilchen

Zitat von: FhemPiUser am 04 September 2016, 20:51:29
kriege seit dem Update von GDS-Modul auf die neueste Version immer folgende Meldung im fhem log:
...
Sagt Dir das was?

Das sagt mir, dass die Meldungen eigentlich nicht aus dem GDS Modul stammen können.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FhemPiUser

Hi betateilchen,

ich bekomme jetzt auch ein stacktrace zu dem Fehler. Hast Du eine Ahnung, was die Ursache sein könnte?

readingsUpdate(dwd,alert_headline,Amtliche WARNUNG vor FROST  ) missed to call readingsBeginUpdate first.
2017.02.16 07:08:30.788 1: stacktrace:
2017.02.16 07:08:30.789 1:     main::readingsBulkUpdate            called by fhem.pl (4134)
2017.02.16 07:08:30.789 1:     main::readingsEndUpdate             called by ./FHEM/55_GDS.pm (1029)
2017.02.16 07:08:30.789 1:     main::decodeCAPData                 called by ./FHEM/55_GDS.pm (541)
2017.02.16 07:08:30.789 1:     main::GDS_Get                       called by fhem.pl (3302)
2017.02.16 07:08:30.790 1:     main::CallFn                        called by fhem.pl (1714)
2017.02.16 07:08:30.790 1:     main::CommandGet                    called by fhem.pl (1107)
2017.02.16 07:08:30.790 1:     main::AnalyzeCommand                called by fhem.pl (976)
2017.02.16 07:08:30.790 1:     main::AnalyzeCommandChain           called by ./FHEM/91_notify.pm (102)
2017.02.16 07:08:30.791 1:     main::notify_Exec                   called by fhem.pl (3302)
2017.02.16 07:08:30.791 1:     main::CallFn                        called by fhem.pl (3223)
2017.02.16 07:08:30.791 1:     main::DoTrigger                     called by ./FHEM/55_GDS.pm (1246)
2017.02.16 07:08:30.791 1:     main::_finishedCAPDATA              called by (eval 79188) (1)
2017.02.16 07:08:30.792 1:     (eval)                              called by fhem.pl (1028)
2017.02.16 07:08:30.792 1:     main::AnalyzePerlCommand            called by fhem.pl (1048)
2017.02.16 07:08:30.793 1:     main::AnalyzeCommand                called by fhem.pl (976)
2017.02.16 07:08:30.793 1:     main::AnalyzeCommandChain           called by ./FHEM/98_telnet.pm (269)
2017.02.16 07:08:30.793 1:     main::telnet_Read                   called by fhem.pl (3302)
2017.02.16 07:08:30.794 1:     main::CallFn                        called by fhem.pl (674)


Das dazugehörige userReadings im GDS device "dwd" ist wie folgt:


attr dwd userReadings alert_headline { ReadingsVal("dwd","a_0_headline","Keine Unwetterwarnung")." ".ReadingsVal("dwd","a_1_event","")." ".ReadingsVal("dwd","a_2_event","");;;; },alert_headline_exists { (ReadingsVal("dwd","a_0_headline","Keine Unwetterwarnung") eq "Keine Unwetterwarnung") ? 0 : 1;;;; }