From 5209791e47862fa3350d9acc9a9743ff2f8b59b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Mon, 16 Dec 2019 10:35:50 +0000 Subject: [PATCH] src: warn against virNodeGetInfo() API call due to inaccurate info MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Jiri Denemark Signed-off-by: Daniel P. Berrangé --- include/libvirt/libvirt-host.h | 4 ++++ src/libvirt-host.c | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/libvirt/libvirt-host.h b/include/libvirt/libvirt-host.h index be65b4686b..b87d634813 100644 --- a/include/libvirt/libvirt-host.h +++ b/include/libvirt/libvirt-host.h @@ -147,6 +147,10 @@ typedef virSecurityModel *virSecurityModelPtr; * * a virNodeInfo is a structure filled by virNodeGetInfo() and providing * the information for the Node. + * + * Note that the information in this struct is not guaranteed to be an + * accurate relection of the system hardware. See the virNodeGetInfo() + * API documentation for further guidance. */ typedef struct _virNodeInfo virNodeInfo; diff --git a/src/libvirt-host.c b/src/libvirt-host.c index 94ba5a8e80..bc3d1d2803 100644 --- a/src/libvirt-host.c +++ b/src/libvirt-host.c @@ -399,6 +399,22 @@ virConnectGetMaxVcpus(virConnectPtr conn, * * Extract hardware information about the node. * + * Use of this API is strongly discouraged as the information provided + * is not guaranteed to be accurate on all hardware platforms. + * + * The mHZ value merely reflects the speed that the first CPU in the + * machine is currently running at. This speed may vary across CPUs + * and changes continually as the host OS throttles. + * + * The nodes/sockets/cores/threads data is potentially inaccurate as + * it assumes a symmetric installation. If one NUMA node has more + * sockets populated that another NUMA node this information will be + * wrong. It is also not able to report about CPU dies. + * + * Applications are recommended to use the virConnectGetCapabilities() + * call instead, which provides all the information except CPU mHZ, + * in a more accurate representation. + * * Returns 0 in case of success and -1 in case of failure. */ int