Hohe CPU Leistung und RAM Speicher

Ich hatte immer das Problem, das sich über einen Zeitraum von 4-5 Wochen mein RAM Speicher (4GB) vollgemüllt hat, und der CPU usage overall bei 15% lag.
Dem bin ich jetzt mal auf den Grund gegangen. Vorweg genommen es lag an Victron BLE.
Ich hatte damal diesen Post als Grundlage genommen.

und 4 Victrongeräte eingebunden.
Der Fehler liegt in der Exec Node, und der Inject Node die alle 10 Sekunden den Befehl

sudo timeout -s SIGINT 5s /usr/local/bin/victron-ble read Mac@Key

startet.
Dadurch wird alle 10 Sekunden eine neue Instanz aufgemacht, die durch den timeout nach 5 Sekunden abgebrochen werden sollte.

  1. Der Start alle 10 Sekunden ist nicht nötig, das Script läuft nach einen einmaligen Start weiter und liefert die Daten.
  2. Bricht der Timeout die Instanz nicht ab, sie läuft weiter.
    Das hat zur Folge das etliche Instanzen laufen, und fast gleichzeitig alle 10 Sekunden ihre Abfrage starten und somit die CPU Leistung auf knapp 40% ansteigt, das ergibt dann den Durchschnitt von 15%. und der Ramspeicher wird auch überdurchschnittlich belastet.
    Die Injekt Node habe ich umgestellt auf einmalig initialisieren nach 5 Sekunden ohne Wiederholung und den Text in der Exec Node habe ich so geändert
 sudo /usr/local/bin/victron-ble read MAC@Key

CPU usage overall ist jetzt von 15% auf 6% gefallen, und der Anstieg des Ramspeichers ist auch nicht mehr so schnell. Das muss ich allerdingst noch beobachten, und eventuel schauen ob es wieder in den kritischen Bereich kommt.
Gruß Arno

verwendest du einen BT bzw Wlan Dongle oder alles onboard?

Ich hatte auch die selben Probleme beim RPi5 aber mit 16GB Ram war das zu vernachlässigen nur das natürlich der Leistungsverbrauch stieg

ich habs dann auch 15s geändert da es bei mir sowieso nur als Backup dienst falls GX nicht funktioniert

sudo timeout -s SIGINT 15s /usr/local/bin/victron-ble read Mac@Key

Hallo Mario
Ich hab nen Bluetooth Dongle.
Wenn du alles zischen sudo und /usr/ löschst, und die inject node auf einmalig ohne Intervall änderst funktioniert es. Den ASUS BT Dongle hab ich nur wegen des GOK Gassensor der übrigens Müll ist.

ok werd ich mal test danke Arno

die frage is halt wenn du kein timeout hinterlegst und aus irgendeinem Grund is mal ein victron gerät nicht erreichbar hängt sich dann das script auf?

Ich werde berichten wenn das bei mir passiert :man_shrugging:
Ich denke dem Script ist das egal wenn ein victron Gerät weg ist.
Aber man könnte die Daten überwachen, und wenn nix kommt das Script neustarten

Das mit dem leistungsproblem beim victron ble auf dem Pi hatte ich ebenfalls, da ich aber 7 Geräte hatte trat es bei mir schon nach wenigen Stunden auf.

Darum habe ich mir für die wichtigsten Geräte per esphome und einen esp32 was eigenes gebaut weil ich damals nichts gefunden habe … ich übertrage das dann in mqtt rein und frag es mit eigenen flows wieder ab… aktuell habe ich noch ein Venusos pi laufen um zu beobachten was sonnst noch alles abgefragt werden kann… der soll aber nicht bleiben

Gruß

Roland

Also ich hab länge nicht mehr reingeguckt, was das skript machen, es läuft ja einfach.
Ich meine aber wenn das Gerät weg ist, wird erst ein scan gestartet ob es da ist und wenn ja, neu verbunden, sonst zeit x abgewartet und wieder nach gesucht.

Wie arno schon sagt, pro gerät das skript starten, aber nur einmalig.
Die daten kommen dann in eine regelmassigen abstand.

Bei Rolbra hatte man im Screenshot gesehen das dort unmengen an skripte am laufen waren. Irgendwann ist Ram und CPU dann am Ende.

Mit pkill -9 -f “prozessname” könnte man mit einen schlag alle Prozesse sofort beenden.
In meinen BMS Ble Flow mache ich das auch so, es wird normal gestoppt aber zur sicherheit ein paar sekunden später pkill hinterher gehauen.

Eigentlich müsste man in dem Flow nur die ausgeführten Prozesse ändern und den MQTT Punkt ändern. Dann würde der Flow bei nicht erhalten der Daten(über2min) das Skript neustarten.

Gruß Wulle

Mit dem esp ist ne Möglichkeit, aber ich möchte so wenig wie möglich irgendwelche Satelliten rumliegen haben. Mich stört schon das ich zu blöd war die inetbox Truma über uart anzuschließen und deswegen einen pico darum hängen habe