htop
htop copied to clipboard
Seeing incorrect offline and online CPUs
Hey
I am running htop in an LXC container that uses the Ubuntu Noble image (Ubuntu 24.04). This time, unlike before, htop shows the "offline" CPUs as well.
This is what I expect:
For example, if I allocate 5 CPUs only to the LXC container, htop should show the 5 vCPUs.
This is what I see:
I see the 5 "online" CPUs and all the other CPUs (of the host) are shown as "offline". Often times, more than 5 CPUs show as online. However, top shows the correct amount of CPUs always.
As you can see from the image below more than 5 CPUs are shown as online
This is the output of top:
Some other info you may find useful
htop version: 3.3.0 os: Ubuntu Noble (Ubuntu 24.04) host kernel version: 6.8.0-31-generic
Can you add the PROCESSOR column to see on which CPU your processes are executed?
May be LXC uses more than 5 cores by shuffling load around?
The CPU cores is fixed (i.e will be 5 at all times) but yes the load may run on other cores sometimes but lxcfs will abstract this. In the past, I did not see this issue (on Jammy, Focal, etc,).
Let me know if you need more information.
This happens even in a KVM machine (also has 5 CPUs). I think this is happening only on Ubuntu Noble as I don't see this issue happening on LXC Jammy container which is also running on the same physical host.
Would adding an option to htop that allows you to "hide offline cpus" be a solution?
We discussed this internally a while back and while for static offline CPU assignments like within containers this may be of help, it causes a bit of flicker for bare metal systems when their host CPU briefly disables cores and re-enables others. Also, due to the way the CPU meters are currently handled, this would need many changes related to counting header lines needed and actually rendering the correct CPUs for each of the meters. TL;DR: Not worth the effort.
Via git bisect, I've confirmed this was caused by the interim fix in #1195, which was intended to fix an issue with lxd CPU display, and introduced this unfortunate display of offline CPUs which clutters the CPU meters and is far from optimal. A suggested fix for hiding offline CPUs was suggested in #1195 but never implemented. (I think this would be optimal default behavior, possibly with a config option to toggle this off if anyone actually wants to see a meter for an offline CPU - it's not very informative and just takes real estate away from the active meters)