High CPU IO Wait UnRaid/Docker/Persistence/RRD4J


i just wanted to post this here, so that somebody else could find this as a hint.

I just migrated my UnRaid installation from a HP ProLiant Micro Server Gen 8 to a HP ProLiant ML10 Gen9 and after this migration i had a closer look at the CPU Usage and overall system performance (i was confused that everything went so well).

I saw CPU spikes every minute (or 45 seconds). In the first few days i thought this had to be a hardware error and i changed the Lan cable, Sata cables and so on. After this didn’t change anything i suspected a software issue in unraid, however nothing seems to change anything. Than i had a look at my docker containers and suspended all of them and started them one by one.

openHAB was triggering this CPU spikes with 25% IO wait every minute (on a Skylake Xeon E3-1225 v5).

Then i hunted for the thing or addon or rule that was causing this spikes. In the end it was the RRD4J Persistence Addon. I suspect that i just had too many items over a too long of a period of time for the database. So after disabling rrd4j, my io wait is down to 1-2%.

Hopefully this will help someone else. It took me over a week to troubleshoot this issue.

If this is in the wrong sub forum, feel free to move it.

I don’t want to imply that the rrd4j binding is not performing or bad. This is surely an issue with my config of the rrd4j plugin. However i just wanted to make sure that if someone else got a similar issue that he or she could have a look at the persistence configuration.



I also had problems with RRD4J when I started using openHAB a few years ago. Started on a RPi with RRD4J set to persist all items and it started to hang the Raspberry as the items number started to grow. It freezed the Raspberry sometimes for minutes!
Finding this was not easy, but for me also disabling RRD4J solved it.