I did a bit more research on that topic and it might be the answer is that this is not really supported. While one can add the following to the guest config
this requires an external helper (numad) which is not available in Debian or Ubuntu. Not sure about the background of that. Without that, it might be the only way might be to manually spread guests by using nodeset="<node>" instead of placement element (as "numatune <domain> --nodeset <node> --config" in virsh would do). And that is only memory. It appears like one might also need to explicitly pin the VCPUs: eg. <vcpu placement='static' cpuset='0-3'>4</vcpu>.
For the nodeinfo part, it does sound to me (from a comment before the additional sanity check in 1.2.12) that there might be a chance that it cannot represent all topologies and might be wrong deliberately. Not in the cases here which show up correctly with the newer version of libvirt. Just fixing it might be pointless if that will not have any impact on automatic placement.
I have not finally made up my mind on how to proceed from here. Just wanted to give some quick feedback.
I did a bit more research on that topic and it might be the answer is that this is not really supported. While one can add the following to the guest config
<numatune>
<memory mode='strict' placement='auto'/>
</numatune>
this requires an external helper (numad) which is not available in Debian or Ubuntu. Not sure about the background of that. Without that, it might be the only way might be to manually spread guests by using nodeset="<node>" instead of placement element (as "numatune <domain> --nodeset <node> --config" in virsh would do). And that is only memory. It appears like one might also need to explicitly pin the VCPUs: eg. <vcpu placement='static' cpuset= '0-3'>4< /vcpu>.
For the nodeinfo part, it does sound to me (from a comment before the additional sanity check in 1.2.12) that there might be a chance that it cannot represent all topologies and might be wrong deliberately. Not in the cases here which show up correctly with the newer version of libvirt. Just fixing it might be pointless if that will not have any impact on automatic placement.
I have not finally made up my mind on how to proceed from here. Just wanted to give some quick feedback.