Hallo,
ich kämpfe schon seit einiger Zeit mit sporadischen Aufhängern in fhem.
Deshalb habe ich jetzt ein komplett neues System auf einem Pi 3B mit Buster aufgesetzt.
Die bis dahin auftretenden Fehlermeldungen "Cannot fork" sind seitdem nicht mehr vorhanden.
Mit ist aber nicht klar, wann in fhem einer neuer Prozess geforkt wird.
Wird so ein fork wieder beendet?
Kann ich feststellen, welches Modul geforkt hat?
Wieviel Speicher bekommt ein fork maximal?
top - 17:48:41 up 7:28, 3 users, load average: 0,03, 0,07, 0,12
Tasks: 220 total, 1 running, 219 sleeping, 0 stopped, 0 zombie
%CPU(s): 0,4 us, 0,6 sy, 0,0 ni, 99,0 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
MiB Spch: 922,0 total, 142,2 free, 641,3 used, 138,4 buff/cache
MiB Swap: 100,0 total, 0,1 free, 99,9 used. 216,0 avail Spch
PID USER PR NI VIRT RES SHR S %CPU %MEM ZEIT+ BEFEHL
6555 fhem 20 0 221008 149716 4676 S 0,7 15,9 19:32.72 perl
13093 fhem 20 0 221008 148244 3204 S 0,0 15,7 0:00.83 perl
6751 fhem 20 0 216372 143348 2660 S 0,0 15,2 1:23.42 perl
6752 fhem 20 0 213676 140600 2680 S 0,0 14,9 0:13.46 perl
6754 fhem 20 0 213684 139796 2012 S 0,3 14,8 0:12.55 perl
2413 root 20 0 278008 103084 3268 S 0,3 10,9 7:22.89 java
2663 root 10 -10 135620 47692 5644 S 0,0 5,1 0:13.55 node
Bei meinem Pi laufen 5 Prozesse von fhem, alle mit mehr als 210 MByte. Da zur Zeit 641 MBytes belegt sind, könnte nur noch einer geforkt werden. Beim 7. fork würde der Speicher nicht mehr reichen. Ich habe deshalb
attr global blockingCallMax
auf 4 gesetzt. Was das für zeitliche Auswirkungen hat, kann ich nicht beurteilen.
Ich würde deshalb sagen, dass der Pi 3 mit 1GB Speicher am Anschlag ist. Wie kann man den Speicherverbrauch reduzieren?