FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: hasselh am 13 April 2025, 11:59:31

Titel: Ermitteln des aktuellen CPU & Memory Verbrauchs der laufenden FHEM Instanz
Beitrag von: hasselh am 13 April 2025, 11:59:31
Hallo zusammen:

Die ursprüngliche Idee kommt eigentlich aus einem anderen Thread (Memory leak in 01_FHEMWEB.pm ? (https://forum.fhem.de/index.php?topic=141082)).
Aber ich dachte ich poste es mal hier, falls es jemand gebrauchen kann:

define fhem_usage DOIF { [+60];; \
  use Memory::Usage;; my $mu=Memory::Usage->new;; $mu->record;; set_Reading_Begin;;\
  for (0..4) { set_Reading_Update(("vsz","rss","shared","code","data")[$_ ],\
    sprintf("%.2f",$mu->state->[0]->[$_+2]/1024));; }\
  my $lt=[$SELF:time,0];; set_Reading_Update("time",time(),0);; \
  my $dt=[$SELF:time,0]-$lt;; return if (! $dt);; my ($u,$s,$cu,$cs)=times;;\
  my $lu=[$SELF:usr_total,0];; my $ls=[$SELF:sys_total,0];; \
  set_Reading_Update("usr_total",$u,0);; set_Reading_Update("sys_total",$s,0);;\
  $cu=($u-$lu)/$dt*100;; $cs=($s-$ls)/$dt*100;; return if ($cu <= 0 || $cs <= 0);;\
  set_Reading_Update("usr_pct",sprintf("%.2f",$cu));;\
  set_Reading_Update("sys_pct",sprintf("%.2f",$cs));;\
  set_Reading_Update("cpu_pct",sprintf("%.2f",$cu+$cs));;\
  set_Reading_End(1);; }

Die Ergebnisse werden in regelmäßigen Abständen in den folgenden Readings abgelegt:

CPU
Memory