[vz-users] Volkszaehler Performance Verbesserungen - z.B. für RaspberryPi
Udo Matzinger
dev at matzinger.org
Tue Dec 17 19:13:17 CET 2013
Hallo Andreas,
zunächst einmal vielen Dank, dass Du Dich so aktiv um die Weiterentwicklung von volkszaehler.org bemühst.
Bei mir loggen seit drei Jahren vier S0-Impulszaehler in die Datenbank, die zur Zeit ~22,8 Mio Datensätze umfasst und ca. 1,8GB groß ist. Bei mir läuft die Middleware und die DB auf einem ‚richtigen’ Server (Xeon E3v2 1230, 8GB Ram, ZFS-RAID-System). Trotzdem dauert die Anzeige eines Monats im Frontend ca. 60s (handgestoppt), ein Jahr dann nicht mehr so viel länger: 83s.
Ich habe Deine Änderungen jetzt auch mal auf meinem System ausprobiert und gemäß Deinen u.a. Anweisungen umgesetzt. Zunächst einmal super Arbeit mit dieser Erweiterung: abwärtskompatibel, gut dokumentiert, sehr gute Tools (aggregate.php)!
Die Anzeige eines Monats dauert jetzt: 0,6s, ein Jahr wird in der gleichen Zeit dargestellt - Wow!
Ich hatte noch die Sorge, dass mit der Aggregation auch die Genauigkeit des ermittelten Verbrauchs leidet, dies ist aber nur in kleinem Umfang zu beobachten. Bei einer Monatsübersicht weichen die aggregierten Zahlen von der Summe der Einzelwerte im Schnitt um 0,3kWh ab.
Nochmals: Super Job und vielen Dank!
Greetinx,
Udo
Am 15.12.2013 um 12:10 schrieb Andreas Goetz <cpuidle at gmail.com>:
> Hallo Heike & Sollner11,
>
> erstmal vielen Dank dass Ihr Euch als Tester zur Verfügung stellt! Vielleicht sollte Heiko es zuerst versuchen ;)
>> Hallo Zusammen,
>
>> ...
>> Daher meine Frage und Bitte: wer das Thema spannend findet und die Entwicklungen testen möchte sollte sich hier melden.
>> Die Entwicklungen stehen unter https://github.com/andig/volkszaehler.org/tree/dev bereit. Wenn Interesse besteht gebe ich einen kurzen Einführungskurs.
>
> Also:
>
> Der Performanceboost beruht auf 3 Bausteinen: 1) einer neuen "aggregate" Tabelle welche Zusammenfassungen der Daten enthält 2) Anpassungen der MW die einige SQL-Abfragen durch Nutzung der neuen Tabelle optimieren und 3) einem Frontend das Anfragen so umformuliert dass die MW sie durch Nutzung der aggregate Tabelle nochmals schneller ausführen kann.
>
> 1. Die bestehend Datenbank wird nicht angepasst, es geht also nichts kaputt!
> 2. Alle Logger etc könne weiter laufen wie gehabt, keine Einschränkungen
> 3. Ihr könnt die bestehende Installation durch den dev Tree überschreiben oder selektiv nur die Middleware reinkopieren. Macht keinen großen Unterschied, dev ist auf dem Stand von master.
>
> 4. Allerdings müssen die Abhängigkeiten installiert werden. Dev baut auf https://github.com/volkszaehler/volkszaehler.org/pull/58 auf, d.h. es wird Composer benötigt. Diesen Schritt sollte man einmal üben bevor man die Installation macht damit nicht plötzlich das System steht und die Logger ins Leere laufen:
>
> 4a. Get composer (http://getcomposer.org/)
> 4b. Run "composer install"
> 4c. danach sollte die neue (oder alte) MW wieder erreichbar sein: http://.../middleware.php/capabilities.json zeigt obs geklappt hat.
>
> 5. Jetzt muss die neue Tabelle eingerichtet werden:
> 5a. $config['aggregation']=true; in der etc/volkszaehler.conf.php eintragen
> 5b. Tabelle anlegen 'php misc/tools/aggregate.php create'
> 5c. Tabelle befüllen 'php misc/tools/aggregate.php -m full -l day aggregate' und 'php misc/tools/aggregate.php -m full -l hour aggregate' sollten dafür genügen. Auf einem kleinen Raspi kann dieser Schritt eine Weile dauern. Danach könnt Ihr testen-> das Frontend sollte jetzt "rennen"!
>
> 6. Die aggregate Tabelle dauerhaft auf einem aktuellen Stand halten. Dafür hat das Skript einen "Delta" Modus der deutlich performanter ist. Dazu richtet man unter Linux mittels 'crontab -e' einen Cron Job ein. Die Tägliche ('day') Aggregation sollte nach Mitternacht laufen, die stündliche ('hour') immer nach der vollen Stunde:
>
> 0 3 * * * /usr/bin/php volkszaehler.org/misc/tools/aggregate.php -m delta -l day run
> 15 * * * * /usr/bin/php volkszaehler.org/misc/tools/aggregate.php -m delta -l hour run
>
> Das Ganze ist übrigens so implementiert, dass die MW auch dann funktioniert wenn in der agrgegate Tabelle keine Daten stehen, aber dann halt wieder so langsam wie vorher. Wenn ihr das testen wollt die Tabelle einfach mit 'php misc/tools/aggregate.php clear' löschen.
>
> Jetzt bin ich auf die ersten Ergebnisse gespannt, wie gesagt bei Schritt 4 bitt aufpassen bzw. in einer separaten Installationen zunächst testen!!!!
>
> vg
> Andreas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20131217/a8cd5fb5/attachment.html>
More information about the volkszaehler-users
mailing list