FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: mayerflash am 17 Februar 2015, 20:16:19

Titel: Unterstützt fhem mehrere CPU's (multicore)?
Beitrag von: mayerflash am 17 Februar 2015, 20:16:19
Hallo,

ich habe fhem auf einem Raspi 2 mit 4 Cores laufen.
Leider wird nur eine CPU vom Perl-Prozess genutzt (mit 100% Auslastung z.B. beim Generieren von Diagrammen).

Kann man irgendwie eine Multicore-Unterstützung in fhem aktivieren, um die volle Leistung des Raspi 2 nutzen zu können?

Meine genutzte fhem-Version:
Fhem info:
  Release  : 5.6
  OS       : linux
  Arch     : arm-linux-gnueabihf-thread-multi-64int
  Perl     : v5.14.2

Gruß

mayerflash
Titel: Antw:Unterstützt fhem mehrere CPU's (multicore)?
Beitrag von: Puschel74 am 17 Februar 2015, 20:20:58
Falscher Forenbereich - Rudi liest hier selten mit.
Das wird dir vermutlich aber auch betateilchen und Co erklären können - also einfach ein bischen warten auf die Antwort.
Titel: Antw:Unterstützt fhem mehrere CPU's (multicore)?
Beitrag von: mayerflash am 17 Februar 2015, 20:26:02
Wo hätte das deiner Meinung nach hingehört?
Titel: Antw:Unterstützt fhem mehrere CPU's (multicore)?
Beitrag von: hexenmeister am 17 Februar 2015, 20:28:48
Mehrere Kerne werden nicht direkt unterstützt. FHEM macht alles in einem Thread. Nur speziell programmierete Module startet parallele Verarbeitung. So können z.B. mehrere Plots gleichzeitig gerendert werden.
Titel: Antw:Unterstützt fhem mehrere CPU's (multicore)?
Beitrag von: peterchen89 am 17 Februar 2015, 20:30:24
Schau dir mal plotfork in der commandref beim Modul FHEMWEB an.
Titel: Antw:Unterstützt fhem mehrere CPU's (multicore)?
Beitrag von: Puschel74 am 17 Februar 2015, 20:34:21
Zitat von: mayerflash am 17 Februar 2015, 20:26:02
Wo hätte das deiner Meinung nach hingehört?
In einen Bereich wo Rudi mitliest  ;)
Nach meiner bescheidenen Unwissenden Meinung wäre der fhem.pl-Bereich der richtige.
Dort ist Rudi eigentlich immer am lesen.
Welcher das ist findest du in der Maintainer.txt
Titel: Antw:Unterstützt fhem mehrere CPU's (multicore)?
Beitrag von: mayerflash am 17 Februar 2015, 20:41:24
"plotfork 1" hat Wunder gewirkt!

Jetzt flutschen die Graphen endlich.   8)

Danke!

Titel: Antw:Unterstützt fhem mehrere CPU's (multicore)?
Beitrag von: FHEMAN am 17 Februar 2015, 21:14:27
Bei mir Cubietruck / Cubieboard 3 ist das Rendering mit plotfork=1 langsamer..
Titel: Antw:Unterstützt fhem mehrere CPU's (multicore)?
Beitrag von: P.A.Trick am 18 Februar 2015, 20:34:41
Zitat von: derron am 17 Februar 2015, 21:14:27
Bei mir Cubietruck / Cubieboard 3 ist das Rendering mit plotfork=1 langsamer..


Hm das kann ich bei meinem Cubietruck nicht bestätigen!?
Titel: Antw:Unterstützt fhem mehrere CPU's (multicore)?
Beitrag von: topfi am 19 Februar 2015, 10:57:58
Ich habe gestern mal mit meinem BananaPi experimentiert. Auch mit plotfork=0 (das ich seinerzeit wegen Intertechno-Problemen am CUL setzen musste) geht das Aufbauen von Plots rasend schnell, verglichen mit dem Raspi.

Nun hat der Banana auch nur 2 Kerne, das heißt, es liegt nur einer brach. :D Der größte Geschwindigkeitsgewinn resultiert wahrscheinlich aus dem Zusammenspiel des alten Logdateiensystems (ohne DBlog) und der SSD am Banana. Deshalb habe ich auch diesen und keinen Raspi2 ausgewählt. 
Titel: Antw:Unterstützt fhem mehrere CPU's (multicore)?
Beitrag von: FHEMAN am 18 März 2015, 16:08:39
Zitat von: P.A.Trick am 18 Februar 2015, 20:34:41

Hm das kann ich bei meinem Cubietruck nicht bestätigen!?
Bei meinen 4 neuen Sysmon Charts ist es sogar so, dass bei aktiviertem Plotfork ein Chart (Stromversorgung (AC)) gar nicht zu Ende geladen wird. Es kommt quasi zum Timeout.
Titel: Antw:Unterstützt fhem mehrere CPU's (multicore)?
Beitrag von: AHA1805 am 18 März 2015, 17:39:46
Hallo

ich habe auch eine Odroid C1 mit 4 Core's und hatte eine ähnliche Problematik.

Ich hatte im Log immer wieder Freez von 1-3 Sekunden.

Hintergrund ist, dass FHEM ein singlecore system ist und jedes blockende Device den Prozess anhält.

Gelöst habe ich dieses Problem folgendermaßen:
Auf meinem C1 laufen im Moment 2 FHEM Instanzen.

perl fhem.pl fhem.cfg
perl fhem.pl fhem_owx.cfg

In der Instanz von fhem_owx habe ich alle Device laufen, welche blockend sind oder längere Laufzeiten haben.

Die Kommunikation zwischen den Instanzen läuft mittels FHEM2FHEM und clonedummy (wenn nötig).

Somit habe ich eine Hauptinstanz, welche ohne Verzögerung läuft.

Theoretisch könnte man eine zusätzliche Instanz erstellen, welche nur die Plot darstellt,
und dadurch bei einer Auswertung komplette eine Core zur Verfügung hätte.

Wichtig ist nur, dass man die Ports bei den Unterinstanzen unterschiedlich einstellt,
und darauf achtet, dass keine Logfiles doppelt beschrieben werden.

Ich bin mit dieser Multiprozesslösung recht zufrieden und habe ein Hauptsystem was ohne Verzögerung reagiert.
Außerdem brauche ich keine zusätzliche Hardware und die Kommunikation läuft über den localhost.



Gruß Hannes