fhem Unterprozesse identifizieren

Begonnen von Sany, 25 April 2021, 12:08:58

Vorheriges Thema - Nächstes Thema

Sany

Hallo zusammen,

wenn ich per htop meinem System zuschaue gibt es zum regulären fhem-Prozess immer wieder "Unterprozesse", die kommen und gehen. Da die CPU-Last ab und an ziemlich hoch wird, eben oft wenn diese Unterprozesse auftauchen, würde ich gerne herausfinden, was fhem da gerade tut. Gibt es da eine Möglichkeit, so ähnlich wie Event-Monitor? Oder einen Filter für diesen? Oder auf Linux-Ebene?

Danke schon mal.

Sany
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

frank

das sind sicherlich die fhem forks, die einige module erzeugen, um blockierende funktionen in einer "parallelen" instanz auszuführen.

mit attr global blockingCallMax lässt sich das begrenzen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Sany

Zitatdas sind sicherlich die fhem forks, die einige module erzeugen

genau die meine ich. Habe htop nun auf den user fhem begrenzt und kann zumindest die ping-commands von presence erkennen (die "stören" nicht weiter, was die CPU-Last angeht). Die anderen forks heißen aber alle
Zitat/usr/bin/perl fhem.pl fhem.cfg
Da würde ich gerne wissen, wer die erzeugt.
Es sind bisher auch max ca 8 gewesen, meistens nur 1-4. Von daher gibts erst mal keinen Grund, die per blockingCallMax zu begrenzen. Mein System läuft mit einem Celeron N3150 mit 4 Kernen. Scheint mir erst mal performant genug.
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

frank

beobachte mal das aktualisieren einer raumseite mit vielen plots.  ;)
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Sany

Zitatbeobachte mal das aktualisieren einer raumseite mit vielen plots.  ;)
das ist tatsächlich nicht weiter wild. Eine Seite mit 11 Plots erzeugt ein paar forks, belastet aber eher wenig.
Ab und zu sehe ich auch einen, der einfach nur "perl" heißt.

Wie gesagt, gibts da irgendeine Möglichkeit, herauszufinden, wer der Auslöser eines solchen forks ist?
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

rudolfkoenig

Wenn einer der benutzten Module BlockingCall verwendet, dann wird ein blockinginfo Befehl angeboten.

Sany

ZitatWenn einer der benutzten Module BlockingCall verwendet, dann wird ein blockinginfo Befehl angeboten.

Vielen Dank für die Info. Da die Prozesse immer nur kurz laufen ist das auch nicht so ganz das, was ich suche. Vermutlich geht das aber auch nicht. Ich werde einfach mal die Module, die ich einsetze, darauf abklopfen, ob BlockingCalls verwendet werden. Wenn ich dann sehe welche Module es sind kann ich von da aus weitersuchen.
Mein fhem ist halt auch über die Jahre gewachsen und recht groß geworden. Vor einer Weile habe ich dann versucht, die Event-flut einzudämmen und sinnvoller zu gestalten. Das hat viel gebracht. Da ich aber immer noch ab und zu hohe CPU-loads habe vermute ich, ich hab da nicht alles gefunden.
fhem auf Zotac ZBox nano als LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....