The % is nothing as it's only a core and a half on a 20 core system.
On your diagnostics originally posted,
It looks like your currently running a parity check
Dec 27 11:20:27 Truffle emhttpd: unclean shutdown detected
65% CPU usage
A home assistant VM 200% usage
SHFS is taking 126%
Ubuntu VM 47%
NZBGet is currently unpacking something 54%
Plex is running @54%
A trim is currently in operation 21% **********
And you have a tab sitting on the docker page in advanced view - 12%
Tautulli, Sonarr, Ombi etc are also all taking ~20% each
So, there's nothing out of the ordinary at all in terms of CPU usage. But, as noted this is IOWAIT
Now, you're running a trim operation on the filesystem every hour. This is extreme. You only need to run it say weekly and only during times when nothing else is going on. While a trim is in operation the system will massively compete for IO time to the SSD's, and when trim has the CPU cycles, nothing else is allowed at all to utilize the IO to any device
There average time it is taking to do the trims across all the supported filesystems / devices is ~4 minutes. But, with the perfect storm you've got at the moment its been running for 13 minutes on just the first device it finds (since nothing has been logged yet), so responsiveness is horrendous
As an aside, the best way in my opinion to look at IO wait is via the NetData container as you'll be able to see it graphed nicely over time
Set your trim frequency to be something sane.