I found my home server suddenly got increased power consumption. Its difference was up to 30W, so it's not obviously error.
It was caused by powering up FreeBSD VM on ProxmoxVE, but I had no reasonable reasons. When I casually saw the PVE's CPU utilization graph, I found it increased considerably after upgrading to 13.0-RELEASE.
Although I checked FreeBSD top
result, there were nothing significant highly loaded processes, but it showed “System” used 4-5% CPU on closer look.
It meant some sort of system processes ate a CPU.
And I checked details with top -SP
, then a rand_harvestq
process constantly ate 40-80% of one of CPU cores.
The process appears for harvesting entropies of random number from its name. Show my article about the entropy harvesting.
There are no weird points at system variables relevant to the harvesting. If I was to say it, using two random sources which are 'VirtIO Entropy Adapter'(VirtIO RND) and 'Intel Secure Key RNG'(RDRAND) is specific to the system running on a virtual machine.
$ sysctl kern.random kern.random.fortuna.concurrent_read: 1 kern.random.fortuna.minpoolsize: 64 kern.random.rdrand.rdrand_independent_seed: 0 kern.random.use_chacha20_cipher: 1 kern.random.block_seeded_status: 0 kern.random.random_sources: 'VirtIO Entropy Adapter','Intel Secure Key RNG' kern.random.harvest.mask_symbolic: VMGENID,PURE_VIRTIO,PURE_RDRAND,[UMA],[FS_ATIME],SWI,INTERRUPT,NET_NG,[NET_ETHER],NET_TUN,MOUSE,KEYBOARD,ATTACH,CACHED kern.random.harvest.mask_bin: 100001001000000111011111 kern.random.harvest.mask: 8683999 kern.random.initial_seeding.disable_bypass_warnings: 0 kern.random.initial_seeding.arc4random_bypassed_before_seeding: 0 kern.random.initial_seeding.read_random_bypassed_before_seeding: 0 kern.random.initial_seeding.bypass_before_seeding: 1
And then, the reason for the high CPU utilization was, after all, VirtIO Entropy Adapter.
It is a para-virtualization device for a random number device as it is named to use its physical device on a host from a VM.
It is expected to use lower CPU if we use common sense, but it's not so in this case.
I don't know why, though.
The VirtIO RNG's random source is assigned /dev/urandom
on the host, so it may not be blocking.
I haven't changed these settings at all..hummm…why?
I decided to use the VM without the VirtIO RNG because getting high-loaded by para-virtualization is putting the cart before the horse. Intel Secure Key RNG still works as the random source in FreeBSD, so it'll be no problem.
The power consumption returned to former level, then my wallet stays away from losing money.