On 11.11.2016 12:26, Nitesh Konkar wrote:
Currently when the vcpu placement is static
and cpuset is not specified, CPU Affinity
under virsh vcpupin shows 0..CPUMAX. This
patchset will result in display of only
online CPU's under CPU Affinity on linux.
Signed-off-by: Nitesh Konkar <nitkon12(a)linux.vnet.ibm.com>
---
src/conf/domain_conf.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 74efe8c..6f81903 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -55,6 +55,7 @@
#include "virtpm.h"
#include "virstring.h"
#include "virnetdev.h"
+#include "virhostcpu.h"
#define VIR_FROM_THIS VIR_FROM_DOMAIN
@@ -1543,8 +1544,13 @@ virDomainDefGetVcpuPinInfoHelper(virDomainDefPtr def,
{
int maxvcpus = virDomainDefGetVcpusMax(def);
virBitmapPtr allcpumap = NULL;
+ virBitmapPtr staticCpuset = NULL;
size_t i;
+#ifdef __linux__
+ staticCpuset = virHostCPUGetOnlineBitmap();
+#endif
+
if (hostcpus < 0)
return -1;
@@ -1562,6 +1568,9 @@ virDomainDefGetVcpuPinInfoHelper(virDomainDefPtr def,
else if (def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO
&&
autoCpuset)
bitmap = autoCpuset;
+ else if (def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC
&&
+ staticCpuset)
+ bitmap = staticCpuset;
I wonder whether you suggest this to reconcile
the results of virsh
vcpupin and virsh vcpuinfo for a running domain? If so, this will not
work because then you would rather have to query the process' cpu
affinity, but this can obviously not be done here.
else if (def->cpumask)
bitmap = def->cpumask;
else
@@ -1571,6 +1580,7 @@ virDomainDefGetVcpuPinInfoHelper(virDomainDefPtr def,
}
virBitmapFree(allcpumap);
+ virBitmapFree(staticCpuset);
return i;
}
--
Mit freundlichen Grüßen/Kind Regards
Viktor Mihajlovski
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martina Köderitz
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294