
On Wed, Apr 21, 2021 at 12:09:42PM +0100, Daniel P. Berrangé wrote:
On Wed, Apr 21, 2021 at 12:53:49PM +0200, Roman Mohr wrote:
Hi,
I have a question regarding enabling l3 cache emulation on Domains. Can this also be enabled without cpu-pinning, or does it need cpu pinning to emulate the l3 caches according to the cpus where the guest is pinned to?
I presume you're referring to
<cpu> <cache level='3' mode='emulate|passthrough|none'/> </cpu>
There is no hard restriction placed on usage of these modes by QEMU.
Conceptually though, you only want to use "passthrough" mode if you have configured the sockets/cores/threads topology to match the host CPUs. In turn you only ever want to set sockets/cores/threads to match the host if you have done CPU pinning such that the topology actually matches the host CPUs that have been pinned to.
As a rule of thumb
- If letting CPUs float
-> Always uses sockets=1, cores=num-vCPUs, threads=1 -> cache==emulate -> Always use 1 guest NUMA node (ie the default)
- If strictly pinning CPUs 1:1
-> Use sockets=N, cores=M, threads=0 to match the topology of the CPUs that have been pinned to
Opps, I meant threads=P there, not 0 - ie match host threads. With recentish libvirt+QEMU there is also a "dies=NNN" parameter for topology which may be relevant for some host CPUs (very recent Intel ones)
-> cache==passthrough -> Configure virtual NUMA nodes if the CPU pinning or guest RAM needs cross host NUMA nodes.
Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|