System: Cerbo GX
Firmware: V3.60
Large OS: On, Node-RED only.
My Cerbo GX Display 50 is often very slow to respond/react to taps and changes, sometimes to the point where it is really not usable. Running the load command, I see the following, which indicates the process is fully loaded. The “nic” usage is between 15% and 50%, which seems really high, but I have no point of comparison.
CPU: 60% usr 15% sys 0% nic 15% idle 0% io 5% irq 3% sirq
Load average: 3.85 4.14 4.46 4/334 19984
PID PPID USER STAT VSZ %VSZ %CPU COMMAND
867 855 root R 276m 27% 40% /opt/victronenergy/gui-v2/venus-gui-v2
919 906 root S 32924 3% 5% {dbus_systemcalc} /usr/bin/python3 -u
1642 1639 root S 8516 1% 4% {vecan-dbus} /opt/victronenergy/vecan-
1792 872 nodered S 212m 21% 4% node-red
574 572 messageb S 5336 1% 3% dbus-daemon --system --nofork
841 833 root S 49308 5% 3% {vrmlogger.py} /usr/bin/python3 -u /op
1930 914 root S 26252 3% 2% {dbus_parallel_b} /usr/bin/python3 /op
1831 1829 root S 72080 7% 1% /usr/bin/flashmq
845 835 root S 84552 8% 1% {venus-platform} /opt/victronenergy/ve
26962 26952 root S 3256 0% 1% /opt/victronenergy/mk2-dbus/mk2-dbus -
932 926 root S 22404 2% 1% {dbus-fronius} /opt/victronenergy/dbus
917 891 root S 20640 2% 1% {hub4control} /opt/victronenergy/hub4c
22368 22366 root S 7932 1% 1% {vedirect-dbus} /opt/victronenergy/ved
22155 22153 root S 7932 1% 1% {vedirect-dbus} /opt/victronenergy/ved
22254 22252 root S 7932 1% 1% {vedirect-dbus} /opt/victronenergy/ved
22221 22219 root S 7932 1% 1% {vedirect-dbus} /opt/victronenergy/ved
22402 22400 root S 7932 1% 1% {vedirect-dbus} /opt/victronenergy/ved
22457 22455 root S 7932 1% 1% {vedirect-dbus} /opt/victronenergy/ved
22292 22290 root S 7932 1% 1% {vedirect-dbus} /opt/victronenergy/ved
^C188 22186 root S 7932 1% 1% {vedirect-dbus} /opt/victronenergy/ved
The percentage is in front of the item, so in the given data, the Cerbo is 15% idle and nic usage is 0%. The venus-gui-v2 usage is quite high. Are you running a stock venus OS version or do you have modifications?
I do see that you are running node-red (so large image). Does that create virtual devices (on which the gui reacts)?
Thanks Thiemo, that was just plain dumb on my part. At least I was right in thinking that 15% load was a lot for the NIC!
Yes, Large OS. I do not have Signal K enabled, just Node Red and it is usually only 5% or so of load.
I’m not sure what virtual devices refer to. I did a quick search and that seems to point toward tank sensors, and the like.
I don’t know if this is relevant, but when this problem was at its worst, we had an external generator connected to shore power input and a current input limit was set. This limit happened to be close to the actual AC draw at the time, so there was likely a lot of calculations etc going on, however I would have through that happened in the Multiplus (master and slave 5KVA), but I could be wrong.
We have a pretty extensive N2K bus, so a good amount of traffic on that port.
I have made changes to the watchdog settings, but obviously that doesn’t impact responsiveness, just what happens (or in this case, doesn’t happen) when the proc gets bogged down.
I recently moved SignalK to a Docker Container running on a Synology NAS (which has been great!) and might do the same with SignalK, so the Cerbo is only tasked with “normal” operations.
Please let me know if you need other specific information I have not provided.
Make sure to disable Settings → Integrations → Modbus-TCP server, in case you don’t need it
Since you mention a busy N2K network: if you have a Cerbo GX MK2: connect that on VE.Can port 1. And connect the Victron VE.Can network to VE.Can port 2. On the Cerbo GX MK2, port 1 is more efficient in handling N2K traffic.
Otherwise there is not much to optimise. Get an Ekrano GX, its much faster, is the least “tweaky” solution.
We will soon release a feature to disable the graphical animations in gui-v2. Looks less fancy but saves a lot of cpu usage.
Thank you for the feedback. I am still sorting out the details of moving Node-RED to a docker container on a NAS and if/how to get Cerbo GX inputs visible to an external Node-RED install, so still not sure if I will need Modbus TCP to do that. I can always turn it off for now.
Our boat was launched in Dec 2022, so I believe that pre-dates the MK2 version of Cerbo. I would love to upgrade to the Ekrano, I just wish it was available in the 5" size. Our boat was built with the Touch 50 in mind so the nav station layout is very nice and clean but would not accommodate the larger physical size of the Ekrano.
I have noticed that when I first boot/reboot the Cerbo, the Node-RED load is around 10% (from linux ‘top’ command). After several hours, this grows to 40% or more and the processor idle times drops to 15% at most. When this happens, I can go into the Node-RED interfaces, disable all active flows and after the “Deploy” is complete, the load Node-RED load drops back down to 2%. I will have to do more work to find out which of my 3 flows is causing this to happen.
If I get to the bottom of this, I will report what I find.
A quick update on this issue. I believe I’ve found the source of the problem. I had a flow that was graphing the AC min and max power occurring over the preceding minute, except that it was actually updating the chart every second with information about a continuously sliding part 60 seconds.
I really meant for it to capture 60 once-pre-second updates and then update the chart once per minute. I have corrected that and the processor load from the Node-RED process now seems to be a very reasonable 4%.
The problem did seem to show it self after several hours, so I won’t know for sure for some time, but this really seems like the problem. If not, I will edit this post.