RFR(XXS): JDK-8007069 VM_Version_x86 cores per cpu is wrong for cpuid 0xb topology case
Vladimir Kozlov
vladimir.kozlov at oracle.com
Wed Jan 30 10:33:25 PST 2013
Markus,
Current code is correct. In what case it is not correct?
bash-4.1$ psrinfo -pv
The physical processor has 8 cores and 16 virtual processors (0-7 16-23)
The core has 2 virtual processors (0 16)
The core has 2 virtual processors (1 17)
The core has 2 virtual processors (2 18)
The core has 2 virtual processors (3 19)
The core has 2 virtual processors (4 20)
The core has 2 virtual processors (5 21)
The core has 2 virtual processors (6 22)
The core has 2 virtual processors (7 23)
x86 (GenuineIntel 206D6 family 6 model 45 step 6 clock 2693 MHz)
Intel(r) Xeon(r) CPU E5-2680 0 @ 2.70GHz
ash-4.1$ java -XX:+PrintMiscellaneous -XX:+Verbose -version
[SafePoint Polling address: 0xfffffd7fff1e0000]
[Memory Serialize Page address: 0xfffffd7fff1d0000]
Logical CPUs per core: 2
UseSSE=4 UseAVX=1 UseAES=1
Allocation prefetching: PREFETCHNTA at distance 192, 4 lines of 64 bytes
PrefetchCopyIntervalInBytes 576
PrefetchScanIntervalInBytes 576
PrefetchFieldsAhead 1
ContendedPaddingWidth 128
CPU:total 32 (8 cores per cpu, 2 threads per core) family 6 model 45
stepping 6, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1,
sse4.2, popcnt, avx, aes, ht, tsc, tscinvbit, tscinv
Thanks,
Vladimir
On 1/30/13 9:45 AM, Markus Grönlund wrote:
> Hi Mikael,
>
> I wonder if you are looking at the right section in the manual (and which manual?) here?
>
> I am using information in Intel Application note 485:
>
> http://www.intel.com/content/www/us/en/processors/processor-identification-cpuid-instruction-note.html
>
> Section 5.1.12 page 41 describes CPUID 0xb. Essentially, together with EAX=0xb, you pass in subleafs (0, 1, 2...) in ECX for the different levels in the cpu topology you are interested in. Results are given in EBX[15:0] [31:16] == reserved.
>
>
> "There's also a cores_per_cpu in CPUID 04h EAX[31:26] (aka. dcp_cpuid4_eax.bits.cores_per_cpu), do you happen to know what the difference is? Is that maybe a better candidate for this?"
>
> CPUID04 EAX[31:26] is giving you the number of cores [per cpu package] using the legacy "initial APICID (8-bits)" systems. This combined with CPUID 01[logical threads per cpu package] is the legacy way of cpu identification. It is cannot give you as much info as topology however.
>
> Processors supporting CPUID 0xb is using 3-level 2xAPICID (32-bit) for identification (SMT, Core, Pkg), and does not use "initial APICID".
>
> So:
>
> EAX=0xb, ECX=0 == EBX[15:0] == no_of_logical_threads_per_core == (stored in _cpuid_info.tpl_cpuidB0_ebx.bits.logical_cpus)
> EAX=0xb, ECX=1 == EBX[15:0] == no_of_cores_per_pkg == (stored in _cpuid_info.tpl_cpuidB1_ebx.bits.logical_cpus)
> ...
>
> Hope this clarifies
>
> Cheers
> Markus
>
>
>
>
>
> -----Original Message-----
> From: Mikael Vidstedt
> Sent: den 30 januari 2013 17:30
> To: Markus Grönlund
> Cc: hotspot-dev at openjdk.java.net
> Subject: Re: RFR(XXS): JDK-8007069 VM_Version_x86 cores per cpu is wrong for cpuid 0xb topology case
>
>
> Looking at the Intel manual for CPUID 0Bh it basically says that one should not use the value in EBX[15:0] for anything other than "...display/diagnostic purposes". There's also a cores_per_cpu in CPUID 04h EAX[31:26] (aka. dcp_cpuid4_eax.bits.cores_per_cpu), do you happen to know what the difference is? Is that maybe a better candidate for this?
>
> Cheers,
> Mikael
>
> On 1/29/2013 2:10 AM, Markus Grönlund wrote:
>> Hi again,
>>
>> Apologies for posting the wrong webrev link, this is the one I wanted to submit:
>>
>> Bug: https://jbs.oracle.com/bugs/browse/JDK-8007069
>> Webrev: http://cr.openjdk.java.net/~mgronlun/8007069/webrev01/
>>
>>
>> Thanks Mikael for the heads up
>>
>> Cheers
>> Markus
>>
>>
>>
>> -----Original Message-----
>> From: Mikael Gerdin
>> Sent: den 29 januari 2013 10:59
>> To: Markus Grönlund
>> Cc: hotspot-dev at openjdk.java.net
>> Subject: Re: RFR(XXS): JDK-8007069 VM_Version_x86 cores per cpu is
>> wrong for cpuid 0xb topology case
>>
>> Markus,
>>
>> On 2013-01-29 10:54, Markus Grönlund wrote:
>>> Hi all,
>>>
>>>
>>>
>>> Kindly asking for review for the following very simple change in the logic for number of cores for CPUID 0xb topology.
>>>
>>>
>>>
>>> Bug: https://jbs.oracle.com/bugs/browse/JDK-8007069
>>>
>>> Webrev:
>>> http://wikifiles.se.oracle.com/dev/mgronlun/webrevs/8007069/webrev01/
>> This URL is not available from outside Oracle.
>>
>> /Mikael
>>
>>>
>>>
>>> Also need someone to sponsor this putback.
>>>
>>>
>>>
>>> Thanks in advance
>>>
>>> Markus
>>>
>
More information about the hotspot-dev
mailing list