[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Libvir] New (last ?) virtual cpu functions proposal

How do I get the "size of CPU map in underlying virtualization system" described in maplen comments?
The maplen must be computed from the number of physical CPU of the platform. This information can be get from the virNodeGetInfo() libvirt API.
In example:

   virNodeInfo    nodeInfo;
   virConnectPtr    pLibvirt;
   int  mapLen;

   pLibvirt = virConnectOpen(NULL);
   virNodeGetInfo(pLibvirt, &nodeInfo);
   mapLen = (nodeInfo.cpus + 7) / 8;

If there is no physical cpu affinity (e.g. the default - vcpus can float among any pcpu), does each cpumap in cpumaps have all bits set? Do we indicate no affinity by having all possible pcpus marked as bound?
If the affinity is 'any', each bit of the related CPU in the cpumap is set. In example, if your platform has 4 processors, then the cpumap value will be 0x0F which means: pcpu #0, pcpu #1, pcpu #2 and pcpu #3. The non existent processors have their related bits set to 0 in cpumap.

To indicate the 'any' affinity, all bits in cpumap must be set before calling the virDomainPinVcpu API.

Philippe Berthault.

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]