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- usr_pct - FHEM instance User CPU in percent
- sys_pct - FHEM instance System CPU in percent
- cpu_pct - FHEM instance CPU in percent (sum of usr_pct + sys_pct)
Memory- code - text (aka code or exe) size in MB
- data - data and stack size in MB
- rss - resident set size in MB
- shared - shared memory size in MB
- vsz - virtual memory size in MB