libvirt/src/conf
Michal Privoznik 0cc6f8931f capabilities: Expose NUMA interconnects
Links between NUMA nodes can have different latencies and
bandwidths. This info is newly defined in ACPI 6.2 under
Heterogeneous Memory Attribute Table (HMAT) table. Linux kernel
learned how to report these values under sysfs and thus we can
expose them in our capabilities XML. The sysfs interface is
documented in kernel's Documentation/admin-guide/mm/numaperf.rst.

Long story short, two nodes can be in initiator-target
relationship. A node can be initiator if it has a CPU or a device
that's capable of initiating memory transfer. Therefore a node
that has just memory can only be target. An initiator-target link
can then have any combination of {bandwidth, latency} - {access,
read, write} attribute (6 in total). However, the standard says
access is applicable iff read and write values are the same.
Therefore, we really have just four combinations of attributes:
bandwidth-read, bandwidth-write, latency-read, latency-write.

This is the combination that kernel reports anyway.

Then, under /sys/system/devices/node/nodeX/acccessN/initiators we
find values for those 4 attributes and also symlinks named
"nodeN" which then represent initiators to nodeX. For instance:

  /sys/system/node/node1/access1/initiators/node0 -> ../../node0
  /sys/system/node/node1/access1/initiators/read_bandwidth
  /sys/system/node/node1/access1/initiators/read_latency
  /sys/system/node/node1/access1/initiators/write_bandwidth
  /sys/system/node/node1/access1/initiators/write_latency

This means that node0 is initiator and node1 is target and values
of the interconnect can be read.

In theory, there can be separate links to memory side caches too
(e.g. one link from node X to node Y's main memory, another from
node X to node Y's L1 cache, another one to L2 cache and so on).
But sysfs does not express this relationship just yet.

The "accessN" means either "access0" or "access1". The difference
is that while the former expresses the best interconnect between
two nodes including CPUS and I/O devices (such as GPUs and NICs),
the latter includes only CPUs and thus is what we need.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1786309
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
2021-06-15 11:03:25 +02:00
..
backup_conf.c virDomainBackupDiskDefParseXML: Fill default backup state after parsing it 2021-05-07 10:06:18 +02:00
backup_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
capabilities.c capabilities: Expose NUMA interconnects 2021-06-15 11:03:25 +02:00
capabilities.h capabilities: Expose NUMA interconnects 2021-06-15 11:03:25 +02:00
checkpoint_conf.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
checkpoint_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
cpu_conf.c util: xml: Fix confusing semantics of VIR_XML_PROP_OPTIONAL flag 2021-04-21 10:32:17 +02:00
cpu_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
device_conf.c virDomainDeviceSpaprVioAddressParseXML: Use virXMLProp* 2021-05-20 11:52:46 +02:00
device_conf.h conf: Use virTristateXXX in virDomainDeviceInfo 2021-04-16 09:48:41 +02:00
domain_addr.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
domain_addr.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
domain_audit.c conf: Parse/format XML input type 'evdev' 2021-05-21 14:29:09 +02:00
domain_audit.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
domain_capabilities.c conf: domcaps: Report device <filesystem> 2021-05-18 14:33:21 +02:00
domain_capabilities.h src: Use 1U for bit shifting 2021-06-14 14:16:54 +02:00
domain_conf.c domain_conf: Use virXMLFormatElement() more 2021-06-09 16:05:40 +02:00
domain_conf.h conf: add support for timer period audio setting 2021-06-04 12:07:46 +01:00
domain_event.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
domain_event.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
domain_nwfilter.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
domain_nwfilter.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
domain_validate.c conf: Parse/format XML input type 'evdev' 2021-05-21 14:29:09 +02:00
domain_validate.h conf: Move code from virDomainDiskDefParseValidate to virDomainDiskDefValidate 2021-04-19 14:43:59 +02:00
interface_conf.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
interface_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
meson.build util: move virStorageEncryption code into conf 2021-01-22 11:10:27 +01:00
moment_conf.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
moment_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
netdev_bandwidth_conf.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
netdev_bandwidth_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
netdev_vlan_conf.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
netdev_vlan_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
netdev_vport_profile_conf.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
netdev_vport_profile_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
network_conf.c virxml: Introduce and use virXMLFormatMetadata() 2021-05-25 13:17:22 +02:00
network_conf.h virNetworkDHCPLeaseTimeDef: Make expiry unsigned long long 2021-05-11 14:03:44 +02:00
network_event.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
network_event.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
networkcommon_conf.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
networkcommon_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
node_device_conf.c nodedev: Revert auto-start property for mdevs 2021-05-27 15:38:28 +02:00
node_device_conf.h nodedev: Revert auto-start property for mdevs 2021-05-27 15:38:28 +02:00
node_device_event.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
node_device_event.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
node_device_util.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
node_device_util.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
numa_conf.c numa_conf: Expose virNumaInterconnect formatter 2021-06-15 10:41:22 +02:00
numa_conf.h numa_conf: Expose virNumaInterconnect formatter 2021-06-15 10:41:22 +02:00
nwfilter_conf.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
nwfilter_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
nwfilter_ipaddrmap.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
nwfilter_ipaddrmap.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
nwfilter_params.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
nwfilter_params.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
object_event_private.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
object_event.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
object_event.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
secret_conf.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
secret_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
secret_event.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
secret_event.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
snapshot_conf_priv.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
snapshot_conf.c Replace AbsPath judgement method with g_path_is_absolute() 2021-04-21 10:02:09 +02:00
snapshot_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
storage_adapter_conf.c virStorageAdapterParseXML: Use virXMLProp* 2021-05-20 11:52:44 +02:00
storage_adapter_conf.h virStorageAdapterFCHost: Change type of "type" to virStorageAdapterType 2021-05-20 11:52:41 +02:00
storage_capabilities.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
storage_capabilities.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
storage_conf.c storage: add support for QCOW2 cluster_size option 2021-05-21 14:00:43 +02:00
storage_conf.h conf: Use virTristateXXX in virStoragePoolSourceDevice 2021-04-16 09:48:42 +02:00
storage_encryption_conf.c virStorageEncryptionInfoParseCipher: Use virXMLProp* 2021-04-22 11:24:53 +02:00
storage_encryption_conf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
storage_event.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
storage_event.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
storage_source_conf.c Replace AbsPath judgement method with g_path_is_absolute() 2021-04-21 10:02:09 +02:00
storage_source_conf.h conf: Use virTristateXXX in virStorageSourceNVMeDef 2021-04-16 09:48:41 +02:00
virchrdev.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virchrdev.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virconftypes.h conf: Deduplicate NUMA distance code 2021-05-24 19:57:45 +02:00
virdomaincheckpointobjlist.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virdomaincheckpointobjlist.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virdomainmomentobjlist.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virdomainmomentobjlist.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virdomainobjlist.c Remove static analysis assertions 2021-05-24 20:26:20 +02:00
virdomainobjlist.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virdomainsnapshotobjlist.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virdomainsnapshotobjlist.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virinterfaceobj.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virinterfaceobj.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetworkobj.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetworkobj.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetworkportdef.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetworkportdef.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnodedeviceobj.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnodedeviceobj.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnwfilterbindingdef.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnwfilterbindingdef.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnwfilterbindingobj.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnwfilterbindingobj.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnwfilterbindingobjlist.c Remove static analysis assertions 2021-05-24 20:26:20 +02:00
virnwfilterbindingobjlist.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnwfilterobj.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnwfilterobj.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsavecookie.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsavecookie.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsecretobj.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsecretobj.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virstorageobj.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virstorageobj.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00