/proc/cpuinfo vs. processor groups

Corinna Vinschen corinna-cygwin@cygwin.com
Wed Apr 11 09:28:00 GMT 2018


On Apr 11 09:02, Corinna Vinschen wrote:
> THanks for the report but this belongs to the cygwin ML.
> I'm redirecting this here.
> 
> 
> Corinna
> 
> On Apr 10 18:36, Achim Gratz wrote:
> > 
> > As briefly discussed on IRC I've got a new Server 2016 blade with 2
> > sockets × 8 cores × 2 HT =32 logical processors and Cygwin spews errors
> > for processor ID 16 and up (also top doesn't quite work, which likely
> > has the same reason, although the code path may be unrelated to the
> > /proc/cpuinfo bug described here).
> > 
> > --8<---------------cut here---------------start------------->8---
> > 64bit (166)~ > cat /proc/cpuinfo
> >       0 [main] cat 10068 format_proc_cpuinfo: SetThreadGroupAffinity(10000,0 (10/16)) failed Win32 error 87
> > [...]
> > This results in Windows coming up with two 64 core processor groups that
> > have 16 active logical processors each:
> > 
> > --8<---------------cut here---------------start------------->8---
> > (gdb) print plpi
> > $1 = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX) 0x600008020
> > (gdb) print *plpi
> > $2 = {Relationship = RelationGroup, Size = 128, {Processor = {Flags = 2 '\002', Reserved = "\000\002", '\000' <repeats 18 times>, GroupCount = 0,
> >       GroupMask = {{Mask = 4160, Group = 0, Reserved = {0, 0, 0}}}}, NumaNode = {NodeNumber = 131074, Reserved = '\000' <repeats 19 times>,
> >       GroupMask = {Mask = 4160, Group = 0, Reserved = {0, 0, 0}}}, Cache = {Level = 2 '\002', Associativity = 0 '\000', LineSize = 2, CacheSize = 0,
> >       Type = CacheUnified, Reserved = '\000' <repeats 12 times>, "@\020\000\000\000\000\000", GroupMask = {Mask = 0, Group = 0, Reserved = {0, 0,
> >           0}}}, Group = {MaximumGroupCount = 2, ActiveGroupCount = 2, Reserved = '\000' <repeats 19 times>, GroupInfo = {{
> >           MaximumProcessorCount = 64 '@', ActiveProcessorCount = 16 '\020', Reserved = '\000' <repeats 37 times>, ActiveProcessorMask = 65535}}}}}
> > --8<---------------cut here---------------end--------------->8---
> > 
> > I've confirmed that the error message is not printed if I manually
> > correct the information for processor ID 17 as follows:
> > [...]

I'm a bit puzzled about the connection between MaximumProcessorCount
and ActiveProcessorCount here.  Why isn't MaximumProcessorCount 16
as well?  Setting it to 64 doesn't make any sense for a system with
32 logical CPUs in total.

I'm not sure just simply using ActiveProcessorCount rather than
MaximumProcessorCount is the right thing to do...

> > As an aside, the cache size is reported as 256kiB (not just for this
> > processor, but also for a Celeron 1037U on another machine), which seems
> > to be the L2 cache for a single hardware core on these architectures.
> > Linux now reports L3 cache sizes (and possibly L4 if present) for these
> > (20MiB and 2MiB per socket respectively).

L3 is easy.  Checking the Linux kernel source I don't see that it
reports L4.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin/attachments/20180411/9a264910/attachment.sig>


More information about the Cygwin mailing list