[libvirt] [PATCHv2 4/4] nodeinfo: Get the correct CPU number on AMD Magny Cours platform

Osier Yang jyang at redhat.com
Mon May 14 08:26:12 UTC 2012


On 2012年05月12日 09:26, Stefan Berger wrote:
> On 05/11/2012 06:41 PM, Eric Blake wrote:
>> From: Osier Yang<jyang at redhat.com>
>>
>> "Instead of developing one CPU with 12 cores, the Magny Cours is
>> actually two 6 core “Bulldozer” CPUs combined in to one package"
>>
>> I.e, each package has two NUMA nodes, and the two numa nodes share
>> the same core ID set (0-6), which means parsing the cores number
>> from sysfs doesn't work in this case.
>>
>> And the wrong CPU number could cause three problems for libvirt:
>>
>
> [...]
>
>> @@ -265,6 +266,23 @@ int linuxNodeInfoCPUPopulate(FILE *cpuinfo,
>> && (*p == '\0' || *p == '.' || c_isspace(*p)))
>> nodeinfo->mhz = ui;
>> }
>> +
>> + if (STRPREFIX(buf, "cpu cores")) {
>> + char *p;
>> + unsigned int ui;
>> + buf += 9;
>> + while (*buf&& c_isspace(*buf))
>> + buf++;
>> + if (*buf != ':' || !buf[1]) {
>> + nodeReportError(VIR_ERR_INTERNAL_ERROR,
>> + "%s", _("parsing cpuinfo cpu MHz"));
>
> Presumably were are parsing the total number of cpu cores ...
>
>
>> + return -1;
>> + }
>> + if (virStrToLong_ui(buf+1,&p, 10,&ui) == 0
>> + /* Accept trailing fractional part. */
>
> ... and they don't have fractional parts.
>
> stepping : 1
> cpu MHz : 2100.073
> cache size : 512 KB
> physical id : 0
> siblings : 12
> core id : 0
> cpu cores : 12
> apicid : 0
> initial apicid : 0
>

Thanks for pointing it out, v2 posted following
this thread.

Osier




More information about the libvir-list mailing list