I'm running Docker on a RPi3B+, with only 4 containers so far: Portainer, PiHole, NGINX Proxy Manager and its database. Some slowdowns (a delay after entering a command on the CLI) have caused me to open up htop and keep an eye on it. According to htop, my Load average is slightly over 4, so more than the quad-core processor can handle, if I understand correctly. The thing is though, the processor bars are rarely above 5%, and the process that takes up the most CPU % (sorted the list by CPU%) is htop itself most of the time.

What's going on here? Is the load from Docker's containers not properly displayed in the CPU% load? Is the load average wrong? I'd love to see if I can improve performance, but when htop says the most CPU intensive thing is itself, it's not easy to troubleshoot.

One suggestion I've seen a few times is that many programs will be waiting for I/O. If I understand correclty, this should be shown as a D state in htop. I rarely see more than 2 programs in that state.

CPU load average in this screenshot is now relatively low, it has been very slowly decreasing over time. Before it was usually between 4.5 and 8.

HTOP enter image description here

Another screenshot, of vmstat 1 this time, as suggested by Charles Duffy. I haven't got a clue what to read from this, maybe somebody else will know.

vmstat 1 enter image description here

  • "us" == CPU running a user process. "sy" == CPU in kernel code. "id" == system is idle. "wa" == waiting for I/O. Does that help in grokking the vmstat output? Jun 25, 2021 at 18:31
  • I think it does. Am I correct in assuming that each line in vmstat simply provides data about the last second, or whatever period provided? If so, it looks like my machine is idle most of the time, but also had a period where it was waiting for I/O in this screenshot?
    – Timmiej93
    Jun 25, 2021 at 19:34
  • Correct, and I agree with the interpretation. Jun 25, 2021 at 20:45


You must log in to answer this question.

Browse other questions tagged .