cloud architecture is the problem
I realized this about 12 years ago myself. Best to move away from the model of fixed provisioning of resources(fixed meaning provisioning a VM with a set cpu/mem/disk), and towards pooling of resources and provisioning from that pool (how ESXi works, and I assume how other hypervisors like Xen/HyperV work on prem). Same with disk space/IO. Nearly 70% of the VMs in my internal environment this year were 1 CPU. Memory ranges from 2GB to 32GB for most things.
Disk space for most systems less than 10GB/ea, some have 300-500GB(couple have more), some have 1TB. But every Linux VM gets (by default) 1.8TB of thin provisioned storage, controlled via LVM(so I don't have to touch the hypervisor again if I need more space), and I have discard/trim enabled end to end(and it works, except for things that use ZFS, even though ZFS claims to support trim(and autotrim is enabled at the pool level), my experience shows it is completely ineffective with non-test workloads at least when compression is enabled). All storage pooled from the same back end, and of course I keep close tabs on what is using disk I/O. Though disk i/o hasn't been an issue since switching to all flash in 2014. There was a time with spinning disks that a single "bad" MySQL query would consume more disk I/O than 500+ other VMs on the same storage array combined. Fortunately Percona wrote pt-query-kill, so I used that to keep those queries under control.
This pooling approach to VMs is easily 15 years old at this point it just blows my mind that people don't seem to understand this in 2022 (some do for sure, but most do not).