Intel Virtualisation: How VT-X, KVM and QEMU Work Together
binarydebt.wordpress.com
binarydebt.wordpress.com
It's important to know for the OS because otherwise your clock will be way off. There's probably other issues that would pop up too that I'm just forgetting right now.
Also, guest can still guess that it is a mere guest by looking into loaded drivers. Many drivers, like virtio-blk, inevitably lead to conclusion that environment is virtualized, no matter what cpu says.
A related problem to consider in the non-virtualized space: the Go runtime scheduling Goroutines onto OS threads. It has to contend with many of them same "is the target thread running" problems, and exhibits some of the same pathologies. Also, once the number of runnable host threads approaches the number of physical threads, the potential for contention, stalls, etc. increases dramatically. Once it exceeds that threshold, it becomes unavoidable. Collectively, all of these issues are commonly filed under the heading of "jitter" -- things that break the illusion of a continuously executing stream of instructions on a computer dedicated just to one thread.
[0]: My work has put me in a lot of meetings for quite some time. I've felt a decline in my written communication skills: it takes me a lot longer to write things than it used to, and I'm less happy with the results. Nothing to be done for it but to write!
Ed was one of the founders of VMware: https://en.wikipedia.org/wiki/Edouard_Bugnion
Looks like the whole book is freely available in PDF form: https://www.semanticscholar.org/paper/Hardware-and-Software-...
Plus, everything out there supports DMA already. Would you have to buy different HW to support this new scheme?
An IOMMU + DMA is already pretty good, a lot of the bottleneck at this point is really in the IO devices themselves these days (network cards and SSDs are only so fast).
Without knowing the details I am convinced the architecture has an impact. Until some 15 years ago Intel archtecture had the reputation of being impossible to virtualize. I don't remember whether KVM which requires HW support or Xen which doesn't but requires support by the guest (paravirtualization) was first. I guess it was the latter, but either way they became feasible in rather quick succession.
On the other side IBM /370 architecture was designed for virtualization from the beginning. Already in the early 1980s virtualization was standard (possibly even earlier).
I'm quite sure difficult virtualization does not come for free efficiency-wise either.