question

ThoHet avatar image
ThoHet asked

Hohe CPU Auslastung cerbo GX

Hallo zusammen,

ich habe das Thema das mein Cerbo GX ständig abstürzt nach ettlichen Minuten. Dauer vom Neustart ist unbestimmt. Aber in mehreren Stunden mehrmals.


Ich hatte das Node Red aktiv, aber keine Flows aktiv. Jetzt ist das NodeRed deaktiviert.

Das andere Thema ist das ich mit dem "htop" Befehl ich sehe das der Dienst

/opt/victronenergy/gui/ -nmous etc etc etc....
uptime :  09:36:36 up 12 min,  load average: 5.15, 5.05, 3.29


Die CPU bis zu 55% in Anspruch nimmt.

Auch der "dbus MQTT" Dienst nimmt zwischen 30-45% in Anspruch.


Ist das normal ?


Dann steht die CPU ständig im Anschlag und kein Wunder das der ständig abstürzt !!


Gruß

cerbo gx
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

9 Answers
d-ferdi avatar image
d-ferdi answered ·

hallo,

welche firmwareversion hast du denn drauf und was haengt alles dran?

tschuess

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

ThoHet avatar image
ThoHet answered ·

Hi,


aktuell die 3.13 ...


2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

ThoHet avatar image
ThoHet answered ·

Was alles dran hängt ist

3x MP2 5000/70

1x Lynx Shunt 1000

4x MPPT 250/100

2x EM24 - ModBus

Installiert - 4x USB RS485 Adapter, mit dbus serial Treiber angebunden

Installiert - Pueblo Battery aggregator

Installiert - SetupHelper


Kein GUI Mod angewandt etc.

Aktuell habe ich NodeRed inaktiv. Wenn ich das aktiviere stürzt der Cerbo sehr sehr häufig ein der Stunde ab.


Ich sehe bei dem PI Befehl "TOP" das der Victron

/opt/victronenergy/gui/gui -nomouse -display Multi: LinuxFb: VNC:size=1024x600:depth=32:passwordFile=/data/conf/vncpassword.txt:0

das dieser Dienst schon alleine 25-40% weg nimmt an CPU Leistung.

Dann kommt es vor das der dbus mqttt Dienst teilweise bis zu 55% an Leistung einnimmt.

Reichen die Infos so oder wird noch was benötigt.


Vorab, ich bin kein Linux Crack ...


Gruß



2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

d-ferdi avatar image
d-ferdi answered ·

hallo,

dass node-red und die gui bis zu 20% cpuzeit brauchen ist noch normal.

allerdings fuerchte ich, du hast dir mit den zusatzprogrammen ein problem angefangen.

sichere mal deine einstellungen und dann deaktivierst du die zusatztreiber (dbus serial, agregator, setup helper) oder entfernst sie. dann kannst du es nochmal probieren.

und schau mal mit df nach, ob irgendein laufwerk voll geschrieben wurde.

dass der mqtt-dienst soviel rechenzeit braucht, liegt daran, dass der sehr viel arbeit hat, also sehr viele anfragen bearbeiten muss.

tschuess

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

ThoHet avatar image
ThoHet answered ·

Hallo,

die Sache mit dem MQTT, kann es sein das vielleicht ich mit dem "KeepAlive" ohne jegliches dazu tun, der CERBO dann alle Objekte für den MQTT Dienst bereit stellt ?

Ich meine gelesen zu haben das man wohl auch explizit nur vereinzelte Topic anfordern kann !

Kann das denn sein ?


Das Thema der einzelnen Installationen ist halt so eine Sache. Von der Sache her komme ich

z.B. ohne den "dbus serial" Treiber halt nicht aus.


Aber wie könnte ich denn genau heraus finden wer wirklich der Verursacher ist ?




2 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

d-ferdi avatar image d-ferdi commented ·
hallo,

du kannst top starten und sehen, welche processe am meisten cpu-leistung brauchen.

mit strg-c kannst du das programm wieder beenden.

leider ist das programm ps auf dem cerbo etwas eingeschraenkt, so dass man damit die cpu-zeit nicht abrufen kann.

tschuess

0 Likes 0 ·
d-ferdi avatar image d-ferdi commented ·

hallo,

als keep alive sollte man, am besten, nur die seriennummer anfordern. wenn du alles anforderst, dann hat das system naetuerlich auch eine menge zu tun.

ich benutze dieses script zum abrufen der daten inclusive keep alive:

#!/usr/bin/ksh

IP=venus-gx

test -n "$1" && IP="$1"

PID="$$"

PIDS="$(ps ax|grep "mqtt.sh.*$IP\$"|grep -vE "grep|$PID ")"

test -n "$PIDS" && kill -9 $PIDS


mosquitto_pub -m '' -t 'R/XXXXXXXXXXX/system/0/Serial' -h $IP

MQTT="$(timeout 1 mosquitto_sub -v -I myclient_ -t "#" -h $IP)"

MQTT="${MQTT#?/}"

MQTT="${MQTT%%/*}"

echo "ID $MQTT"


while true

do

mosquitto_pub -m '' -t "R/$MQTT/system/0/Serial" -h $IP

sleep 30

done &

mosquitto_sub -v -I myclient_ -t "#" -h $IP

kill %1

tschuess

0 Likes 0 ·
ThoHet avatar image
ThoHet answered ·
root@einstein:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root               980352    866024     43904  95% /
devtmpfs                465376         4    465372   0% /dev
tmpfs                   515040      1076    513964   0% /run
tmpfs                   515040       728    514312   0% /var/volatile
/dev/mmcblk1p5         4859040     33424   4559072   1% /data
/dev/sda1             30357504      1136  30356368   0% /run/media/sda1
tmpfs                   515040      1076    513964   0% /service
1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

d-ferdi avatar image d-ferdi commented ·
hallo,

das sieht jedenfalls gut aus.

tschuess

0 Likes 0 ·
ThoHet avatar image
ThoHet answered ·

also der Cerbo ist eine absolute vollkatastrophe !!!

Das "KeepAlive benötigt man doch um die Daten über MQTT aktualisiert zu bekommen, oder ?


Das heißt ich sollte wirklich nur das abrufen was ich benötige ?


1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

d-ferdi avatar image d-ferdi commented ·

hallo,

ich rufe die daten von allen meinen venus-devices ueber mqtt ab und der mqtt-server benoetigt normalerweise weniger als 10% cpu-time.

wenn du aber alle 10 sekunden einen kompletten datenabruf als keep-alive startest, dann geht die rechenzeit natuerlich hoch. als keep-alive ruf man nur maximal eine einzige zeile abm wie ich das mit dem befehl:

mosquitto_pub -m '' -t "R/$MQTT/system/0/Serial" -h $IP

alle 30 sekunden mache und mein datenstrom auf der haupt-verbindung laeuft dabei ununterbrochen weiter. selbst wenn du nur, nach einem abbruch, das ganze neu startest, muss der server auch viel mehr daten schicken.

deshalb dann wohl auch die hohe cpu-last.

du brauchst das keep-alive auch nicht, um die daten aktualisiert zu bekommen, das laeuft automatisch, aber ohne keep-alive stellt der server das senden von daten ein oder beendet die verbindung nach einem timeout.

ist eben wie bei einem bildschirmschoner: solange du am rechner arbeitest, wird er nicht aktiviert, sobald du aber laengere zeit nichts macht, wird er aktiviert und eventuell der pc gesperrt. du musst dafuer aber nicht alle 60s dein pw eingeben, oder sonstwas spezielles machen, es reicht vollkommen, wenn du auf der tastatur herumklimperst oder mit der maus spielst.

bei mqtt ist das genauso. der server will einfach nur regelmaessig darueber informiert werden, dass die daten auch noch empfangen werden koennen.

du kannst das auch mit einer watchdog in einem system vergleichen. wird das teil nicht regelmaessig getriggert, dann bekommt das system einen reset! und der mqtt-server beendet die verbindung. solche timeouts sind in vielen programmen ueblich, sonst wuerden einige verbindungen nie mehr geschlossen, wenn der partner nicht mehr existiert.

und stell dir mal vor, dein rechner wuerde dateien nur noch oeffen, aber nicht mehr schliessen!

man kann per mqtt entweder alles, gruppen oder auch nur einzelne werte abfragen.

ich hoffe, du hast jetzt verstanden, warum der keep-alive noetig ist und dass beim keep-alive auch nur ein minimum an daten uebertragen werden muss und nicht jedesmal die komplette mqtt-datenbank!

tschuess

0 Likes 0 ·
nordarne avatar image
nordarne answered ·

Hallo @ThoHet

Konntest du dein Problem schon lösen?

Meine Anlage besteht aus

  • Cerbo GX mit V3.30
  • Multiplus 2 / 3000
  • EM340 (Grid)
  • ET314 (PV)
  • SerialBattery für die Integration eines JK-BMS
  • NEEY 8A Balancer

Per MQTT hole ich Daten vom Cerbo und visualisiere sie in einen Home Assistant System

Seit ich von Version 3.00 auf 3.3 geupdated habe habe ich ähnliche Probleme wie du. Die CPU Last liegt bei 30-40% und ich bekomme häufig abstürze. die leider kaum zu reproduzieren sind. Erst dachte ich das Serialbattery-Addon hat die Probleme gemacht, konnte ich aber ausschließen. Dann dachte ich dass Hoas irgendwie mit dem Cerbo über MQTT Ärger macht, aber das konnte ich eben auch ausschließen (Cerbo stürzt leider dennoch ab). Auch ohne den MQTT Broker liegt die Auslastung über 30%.


Das äußerst merkwürdige ist, dass die Anlage nun eine Woche Stabil lief, maximal gabs mal ein Fehlenden Wert in Home Assistant. Aber heute fiel der Cerbo mehrfach aus.

Bei mir äußert sich das Problem wie folgt.

  • MQTT Broker reagiert nicht mehr
  • Remote Console reagiert nicht mehr
  • Verbindung per Putty SSH reagiert nicht mehr

Manchmal fängt sich der Cerbo dann von alleine. Manchmal muss ich die Spannungsversorgung trennen, damit der überhaupt wieder reagiert.

Auch interessant ist, dass die Daten im VRM Portal deutlich "vollständiger" sind:

1712513598027.png

als jene die ich per Home Assistant aufzeichne:

1712513641903.png

(z.b. um 14:00 und nach 18:00 fehlen jede Menge)


Ich dachte schon an einen HW-Defekt, aber wenn du ähnliche Probleme wie ich hast, ist das wohl nicht der Fall.



1712513598027.png (32.4 KiB)
1712513641903.png (111.1 KiB)
4 comments
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

d-ferdi avatar image d-ferdi commented ·
hallo,

du solltest einmal eine ssh-verbindung oeffnen und top laufen lassen, damit du die moeglichkeit hast, festzustellen, was los ist.

das problem, dass so ein teil nicht mehr ansprechbar ist, hatte ich nur mit meinem venus-gx und der alten firmware. seitdem ich eine neue version installiert habe, laeuft deutlich besser.

und bei mir war die cpu-auslastung dann dauerhaft bei 100%.

allerdings habe ich das auch schon 2 mal bei einem cerbo geschafft.

tschuess

0 Likes 0 ·
nordarne avatar image nordarne d-ferdi commented ·
Hi @d_ferdi

das hab ich gestern probiert, bis zum Verbindungsverlust war die CPU-Last im Bereich 30 bis 40%

0 Likes 0 ·
d-ferdi avatar image d-ferdi nordarne commented ·
hallo,

vieleicht hast du auch ein netzwerkproblem und der cerbo started automatisch neu, wenn die verbindung zum vrm ausfaellt.

tschuess

0 Likes 0 ·
nordarne avatar image nordarne d-ferdi commented ·
Ich hab heute gesehen, dass im VRM Dashboard gelegentlich mal die Meldung kommt, dass die Echtzeitaktualisierung wegen Überlastung des CX Gerätes deaktiviert wurde.


Keine Ahnung ob das nun ein Netzwerkproblem ausschließt, oder ob die "Überlastung" anhand der Signallaufzeit festgemacht wird ¯\_(ツ)_/¯

0 Likes 0 ·
ThoHet avatar image
ThoHet answered ·

Hallo zusammen,


sorry war was länger geschäftlich unterwegs. Nicht desto trotz ist die Katastrophe gleich geblieben.

Können wir nochmal hier ansetzen um der CPU mehr Luft zu verschaffen ?


Gruß

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.