No se puede usar más de un grupo de procesadores para mis hilos en una aplicación C #

De acuerdo con la documentación de MSDN y la respuesta de Stephen Toub , mi aplicación C # debe usar todos los procesadores lógicos de cada grupo de procesadores porque está configurado como se requiere (ver mi App.config a continuación).

Ejecuto mi aplicación en un servidor de Windows 2012 con una architecture NUMA: 2 x [cpu Xeon E5-2697 v3 en 14 núcleos cada uno con Hyper Thread activado] => 2 x 14 x 2 = 56 procesadores lógicos.

Mi aplicación inicia 80 subprocesos desde “Thread Class” o “Parallel.For” y en ambos casos solo toma 28 procesadores lógicos, todos del mismo grupo de procesadores.

¿Por qué el planificador de tareas asigna mis hilos en un solo grupo de procesadores?

Mi código está disponible en GitHub o el ejecutable se puede descargar en mi sitio web de inicio

Ya he hecho esta pregunta en social.msdn.microsoft.com sin ninguna respuesta.

  • Actualización del 2015-01-26: informé de un error en connect.microsoft.com

  • Actualización 30-01-2015: Agregué el volcado de CoreInfo como referencias adicionales.

  • Actualización 2015-01-30: El problema también ocurre con prime95 donde solo ofrece seleccionar 28 hilos (no relacionados con c #)

  • Actualización 30-01-2015: Mi herramienta ahora muestra más información, como Máscara de procesador por nodo. Parece que no tengo acceso al otro nodo (el nodo en el que no me ejecuto)

  • Actualización 2015-02-02, NO tenemos instalado Citrix en este servidor en particular (lo siento, me equivoqué)

  • Actualización 2015-02-02, contactamos a HP …

  • Actualización 2015-02-03, Se agregó más información a mi progtwig para mostrar el grupo de procesadores por subproceso y algunos gadgets más pequeños.

  • Actualización el 17/02/2015, después de hablar con el equipo de desarrollo de HP, actualicé mi respuesta para reflejar lo que aprendí. (Solo quiero mencionar que recibí EXCELENTE apoyo de HP)

  • Actualización del 2015-05-13, HP confirmó el problema en una nota de “Aviso al cliente”. Consulte esta identificación de documento vinculada: c04650594

Configuré mi .Net 4.5 (o 4.5.1) App.Config en:

           

Este es el volcado de CoreInfo de Microsoft:

 Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz Intel64 Family 6 Model 63 Stepping 2, GenuineIntel Microcode signature: 00000023 HTT * Hyperthreading enabled HYPERVISOR - Hypervisor is present VMX * Supports Intel hardware-assisted virtualization SVM - Supports AMD hardware-assisted virtualization X64 * Supports 64-bit mode SMX * Supports Intel trusted execution SKINIT - Supports AMD SKINIT NX * Supports no-execute page protection SMEP * Supports Supervisor Mode Execution Prevention SMAP - Supports Supervisor Mode Access Prevention PAGE1GB * Supports 1 GB large pages PAE * Supports > 32-bit physical addresses PAT * Supports Page Attribute Table PSE * Supports 4 MB pages PSE36 * Supports > 32-bit address 4 MB pages PGE * Supports global bit in page tables SS * Supports bus snooping for cache operations VME * Supports Virtual-8086 mode RDWRFSGSBASE * Supports direct GS/FS base access FPU * Implements i387 floating point instructions MMX * Supports MMX instruction set MMXEXT - Implements AMD MMX extensions 3DNOW - Supports 3DNow! instructions 3DNOWEXT - Supports 3DNow! extension instructions SSE * Supports Streaming SIMD Extensions SSE2 * Supports Streaming SIMD Extensions 2 SSE3 * Supports Streaming SIMD Extensions 3 SSSE3 * Supports Supplemental SIMD Extensions 3 SSE4a - Supports Streaming SIMDR Extensions 4a SSE4.1 * Supports Streaming SIMD Extensions 4.1 SSE4.2 * Supports Streaming SIMD Extensions 4.2 AES * Supports AES extensions AVX * Supports AVX intruction extensions FMA * Supports FMA extensions using YMM state MSR * Implements RDMSR/WRMSR instructions MTRR * Supports Memory Type Range Registers XSAVE * Supports XSAVE/XRSTOR instructions OSXSAVE * Supports XSETBV/XGETBV instructions RDRAND * Supports RDRAND instruction RDSEED - Supports RDSEED instruction CMOV * Supports CMOVcc instruction CLFSH * Supports CLFLUSH instruction CX8 * Supports compare and exchange 8-byte instructions CX16 * Supports CMPXCHG16B instruction BMI1 * Supports bit manipulation extensions 1 BMI2 * Supports bit manipulation extensions 2 ADX - Supports ADCX/ADOX instructions DCA * Supports prefetch from memory-mapped device F16C * Supports half-precision instruction FXSR * Supports FXSAVE/FXSTOR instructions FFXSR - Supports optimized FXSAVE/FSRSTOR instruction MONITOR * Supports MONITOR and MWAIT instructions MOVBE * Supports MOVBE instruction ERMSB * Supports Enhanced REP MOVSB/STOSB PCLMULDQ * Supports PCLMULDQ instruction POPCNT * Supports POPCNT instruction LZCNT * Supports LZCNT instruction SEP * Supports fast system call instructions LAHF-SAHF * Supports LAHF/SAHF instructions in 64-bit mode HLE - Supports Hardware Lock Elision instructions RTM - Supports Restricted Transactional Memory instructions DE * Supports I/O breakpoints including CR4.DE DTES64 * Can write history of 64-bit branch addresses DS * Implements memory-resident debug buffer DS-CPL * Supports Debug Store feature with CPL PCID * Supports PCIDs and settable CR4.PCIDE INVPCID * Supports INVPCID instruction PDCM * Supports Performance Capabilities MSR RDTSCP * Supports RDTSCP instruction TSC * Supports RDTSC instruction TSC-DEADLINE * Local APIC supports one-shot deadline timer TSC-INVARIANT * TSC runs at constant rate xTPR * Supports disabling task priority messages EIST * Supports Enhanced Intel Speedstep ACPI * Implements MSR for power management TM * Implements thermal monitor circuitry TM2 * Implements Thermal Monitor 2 control APIC * Implements software-accessible local APIC x2APIC * Supports x2APIC CNXT-ID - L1 data cache mode adaptive or BIOS MCE * Supports Machine Check, INT18 and CR4.MCE MCA * Implements Machine Check Architecture PBE * Supports use of FERR#/PBE# pin PSN - Implements 96-bit processor serial number PREFETCHW * Supports PREFETCHW instruction Maximum implemented CPUID leaves: 0000000F (Basic), 80000008 (Extended). Logical to Physical Processor Map: Physical Processor 0 (Hyperthreaded): **------------------------------------------------------ Physical Processor 1 (Hyperthreaded): --**---------------------------------------------------- Physical Processor 2 (Hyperthreaded): ----**-------------------------------------------------- Physical Processor 3 (Hyperthreaded): ------**------------------------------------------------ Physical Processor 4 (Hyperthreaded): --------**---------------------------------------------- Physical Processor 5 (Hyperthreaded): ----------**-------------------------------------------- Physical Processor 6 (Hyperthreaded): ------------**------------------------------------------ Physical Processor 7 (Hyperthreaded): --------------**---------------------------------------- Physical Processor 8 (Hyperthreaded): ----------------**-------------------------------------- Physical Processor 9 (Hyperthreaded): ------------------**------------------------------------ Physical Processor 10 (Hyperthreaded): --------------------**---------------------------------- Physical Processor 11 (Hyperthreaded): ----------------------**-------------------------------- Physical Processor 12 (Hyperthreaded): ------------------------**------------------------------ Physical Processor 13 (Hyperthreaded): --------------------------**---------------------------- Physical Processor 14 (Hyperthreaded): ----------------------------**-------------------------- Physical Processor 15 (Hyperthreaded): ------------------------------**------------------------ Physical Processor 16 (Hyperthreaded): --------------------------------**---------------------- Physical Processor 17 (Hyperthreaded): ----------------------------------**-------------------- Physical Processor 18 (Hyperthreaded): ------------------------------------**------------------ Physical Processor 19 (Hyperthreaded): --------------------------------------**---------------- Physical Processor 20 (Hyperthreaded): ----------------------------------------**-------------- Physical Processor 21 (Hyperthreaded): ------------------------------------------**------------ Physical Processor 22 (Hyperthreaded): --------------------------------------------**---------- Physical Processor 23 (Hyperthreaded): ----------------------------------------------**-------- Physical Processor 24 (Hyperthreaded): ------------------------------------------------**------ Physical Processor 25 (Hyperthreaded): --------------------------------------------------**---- Physical Processor 26 (Hyperthreaded): ----------------------------------------------------**-- Physical Processor 27 (Hyperthreaded): ------------------------------------------------------** Logical Processor to Socket Map: Socket 0: ****************************---------------------------- Socket 1: ----------------------------**************************** Logical Processor to NUMA Node Map: NUMA Node 0: ****************************---------------------------- NUMA Node 1: ----------------------------**************************** Calculating Cross-NUMA Node Access Cost... Approximate Cross-NUMA Node Access Cost (relative to fastest): 00 01 00: 1.0 1.1 01: 1.1 1.1 Logical Processor to Cache Map: Data Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64 **------------------------------------------------------ Instruction Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64 **------------------------------------------------------ Unified Cache 0, Level 2, 256 KB, Assoc 8, LineSize 64 **------------------------------------------------------ Unified Cache 1, Level 3, 35 MB, Assoc 20, LineSize 64 ****************************---------------------------- Data Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64 --**---------------------------------------------------- Instruction Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64 --**---------------------------------------------------- Unified Cache 2, Level 2, 256 KB, Assoc 8, LineSize 64 --**---------------------------------------------------- Data Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64 ----**-------------------------------------------------- Instruction Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64 ----**-------------------------------------------------- Unified Cache 3, Level 2, 256 KB, Assoc 8, LineSize 64 ----**-------------------------------------------------- Data Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64 ------**------------------------------------------------ Instruction Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64 ------**------------------------------------------------ Unified Cache 4, Level 2, 256 KB, Assoc 8, LineSize 64 ------**------------------------------------------------ Data Cache 4, Level 1, 32 KB, Assoc 8, LineSize 64 --------**---------------------------------------------- Instruction Cache 4, Level 1, 32 KB, Assoc 8, LineSize 64 --------**---------------------------------------------- Unified Cache 5, Level 2, 256 KB, Assoc 8, LineSize 64 --------**---------------------------------------------- Data Cache 5, Level 1, 32 KB, Assoc 8, LineSize 64 ----------**-------------------------------------------- Instruction Cache 5, Level 1, 32 KB, Assoc 8, LineSize 64 ----------**-------------------------------------------- Unified Cache 6, Level 2, 256 KB, Assoc 8, LineSize 64 ----------**-------------------------------------------- Data Cache 6, Level 1, 32 KB, Assoc 8, LineSize 64 ------------**------------------------------------------ Instruction Cache 6, Level 1, 32 KB, Assoc 8, LineSize 64 ------------**------------------------------------------ Unified Cache 7, Level 2, 256 KB, Assoc 8, LineSize 64 ------------**------------------------------------------ Data Cache 7, Level 1, 32 KB, Assoc 8, LineSize 64 --------------**---------------------------------------- Instruction Cache 7, Level 1, 32 KB, Assoc 8, LineSize 64 --------------**---------------------------------------- Unified Cache 8, Level 2, 256 KB, Assoc 8, LineSize 64 --------------**---------------------------------------- Data Cache 8, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------**-------------------------------------- Instruction Cache 8, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------**-------------------------------------- Unified Cache 9, Level 2, 256 KB, Assoc 8, LineSize 64 ----------------**-------------------------------------- Data Cache 9, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------**------------------------------------ Instruction Cache 9, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------**------------------------------------ Unified Cache 10, Level 2, 256 KB, Assoc 8, LineSize 64 ------------------**------------------------------------ Data Cache 10, Level 1, 32 KB, Assoc 8, LineSize 64 --------------------**---------------------------------- Instruction Cache 10, Level 1, 32 KB, Assoc 8, LineSize 64 --------------------**---------------------------------- Unified Cache 11, Level 2, 256 KB, Assoc 8, LineSize 64 --------------------**---------------------------------- Data Cache 11, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------------**-------------------------------- Instruction Cache 11, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------------**-------------------------------- Unified Cache 12, Level 2, 256 KB, Assoc 8, LineSize 64 ----------------------**-------------------------------- Data Cache 12, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------------**------------------------------ Instruction Cache 12, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------------**------------------------------ Unified Cache 13, Level 2, 256 KB, Assoc 8, LineSize 64 ------------------------**------------------------------ Data Cache 13, Level 1, 32 KB, Assoc 8, LineSize 64 --------------------------**---------------------------- Instruction Cache 13, Level 1, 32 KB, Assoc 8, LineSize 64 --------------------------**---------------------------- Unified Cache 14, Level 2, 256 KB, Assoc 8, LineSize 64 --------------------------**---------------------------- Data Cache 14, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------------------**-------------------------- Instruction Cache 14, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------------------**-------------------------- Unified Cache 15, Level 2, 256 KB, Assoc 8, LineSize 64 ----------------------------**-------------------------- Unified Cache 16, Level 3, 35 MB, Assoc 20, LineSize 64 ----------------------------**************************** Data Cache 15, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------------------**------------------------ Instruction Cache 15, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------------------**------------------------ Unified Cache 17, Level 2, 256 KB, Assoc 8, LineSize 64 ------------------------------**------------------------ Data Cache 16, Level 1, 32 KB, Assoc 8, LineSize 64 --------------------------------**---------------------- Instruction Cache 16, Level 1, 32 KB, Assoc 8, LineSize 64 --------------------------------**---------------------- Unified Cache 18, Level 2, 256 KB, Assoc 8, LineSize 64 --------------------------------**---------------------- Data Cache 17, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------------------------**-------------------- Instruction Cache 17, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------------------------**-------------------- Unified Cache 19, Level 2, 256 KB, Assoc 8, LineSize 64 ----------------------------------**-------------------- Data Cache 18, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------------------------**------------------ Instruction Cache 18, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------------------------**------------------ Unified Cache 20, Level 2, 256 KB, Assoc 8, LineSize 64 ------------------------------------**------------------ Data Cache 19, Level 1, 32 KB, Assoc 8, LineSize 64 --------------------------------------**---------------- Instruction Cache 19, Level 1, 32 KB, Assoc 8, LineSize 64 --------------------------------------**---------------- Unified Cache 21, Level 2, 256 KB, Assoc 8, LineSize 64 --------------------------------------**---------------- Data Cache 20, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------------------------------**-------------- Instruction Cache 20, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------------------------------**-------------- Unified Cache 22, Level 2, 256 KB, Assoc 8, LineSize 64 ----------------------------------------**-------------- Data Cache 21, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------------------------------**------------ Instruction Cache 21, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------------------------------**------------ Unified Cache 23, Level 2, 256 KB, Assoc 8, LineSize 64 ------------------------------------------**------------ Data Cache 22, Level 1, 32 KB, Assoc 8, LineSize 64 --------------------------------------------**---------- Instruction Cache 22, Level 1, 32 KB, Assoc 8, LineSize 64 --------------------------------------------**---------- Unified Cache 24, Level 2, 256 KB, Assoc 8, LineSize 64 --------------------------------------------**---------- Data Cache 23, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------------------------------------**-------- Instruction Cache 23, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------------------------------------**-------- Unified Cache 25, Level 2, 256 KB, Assoc 8, LineSize 64 ----------------------------------------------**-------- Data Cache 24, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------------------------------------**------ Instruction Cache 24, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------------------------------------**------ Unified Cache 26, Level 2, 256 KB, Assoc 8, LineSize 64 ------------------------------------------------**------ Data Cache 25, Level 1, 32 KB, Assoc 8, LineSize 64 --------------------------------------------------**---- Instruction Cache 25, Level 1, 32 KB, Assoc 8, LineSize 64 --------------------------------------------------**---- Unified Cache 27, Level 2, 256 KB, Assoc 8, LineSize 64 --------------------------------------------------**---- Data Cache 26, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------------------------------------------**-- Instruction Cache 26, Level 1, 32 KB, Assoc 8, LineSize 64 ----------------------------------------------------**-- Unified Cache 28, Level 2, 256 KB, Assoc 8, LineSize 64 ----------------------------------------------------**-- Data Cache 27, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------------------------------------------** Instruction Cache 27, Level 1, 32 KB, Assoc 8, LineSize 64 ------------------------------------------------------** Unified Cache 29, Level 2, 256 KB, Assoc 8, LineSize 64 ------------------------------------------------------** Logical Processor to Group Map: Group 0: ****************************---------------------------- Group 1: ----------------------------**************************** 

Este es el volcado de comando MsInfo32 (información sobre el servidor):

 OS Name Microsoft Windows Server 2012 R2 Standard Version 6.3.9600 Build 9600 Other OS Description Not Available OS Manufacturer Microsoft Corporation System Name EMTP6 System Manufacturer HP System Model ProLiant DL360 Gen9 System Type x64-based PC System SKU 755258-B21 Processor Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz, 2597 Mhz, 14 Core(s), 28 Logical Processor(s) Processor Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz, 2597 Mhz, 14 Core(s), 28 Logical Processor(s) BIOS Version/Date HP P89, 7/11/2014 SMBIOS Version 2.8 Embedded Controller Version 2.02 BIOS Mode UEFI Platform Role Enterprise Server Secure Boot State Off PCR7 Configuration Not Available Windows Directory ---removed System Directory ---removed Boot Device \Device\HarddiskVolume2 Locale United States Hardware Abstraction Layer Version = "6.3.9600.17196" User Name Not Available Time Zone Eastern Standard Time Installed Physical Memory (RAM) 256 GB Total Physical Memory 256 GB Available Physical Memory 246 GB Total Virtual Memory 294 GB Available Virtual Memory 283 GB Page File Space 38.0 GB Page File ---removed Hyper-V - VM Monitor Mode Extensions Yes Hyper-V - Second Level Address Translation Extensions Yes Hyper-V - Virtualization Enabled in Firmware Yes Hyper-V - Data Execution Protection Yes 

Esta es la captura de pantalla de TaskManager y los resultados de mi progtwig:

enter image description here

O bien, si Windows decidió iniciarlo en el nodo 1:

enter image description here

Comportamiento esperado de otro servidor:

 OS Name Microsoft Windows Server 2008 HPC Edition Version 6.1.7601 Service Pack 1 Build 7601 Other OS Description Not Available OS Manufacturer Microsoft Corporation System Name COMPUTE-13-6 System Manufacturer HP System Model ProLiant DL160 G6 System Type x64-based PC Processor Intel(R) Xeon(R) CPU X5675 @ 3.07GHz, 3068 Mhz, 6 Core(s), 6 Logical Processor(s) Processor Intel(R) Xeon(R) CPU X5675 @ 3.07GHz, 3068 Mhz, 6 Core(s), 6 Logical Processor(s) BIOS Version/Date HP O33, 7/1/2013 SMBIOS Version 2.7 Windows Directory C:\Windows System Directory C:\Windows\system32 Boot Device \Device\HarddiskVolume1 Locale United States Hardware Abstraction Layer Version = "6.1.7601.17514" User Name Not Available Time Zone Eastern Standard Time Installed Physical Memory (RAM) 48.0 GB Total Physical Memory 48.0 GB Available Physical Memory 40.9 GB Total Virtual Memory 96.0 GB Available Virtual Memory 88.4 GB Page File Space 48.0 GB Page File C:\pagefile.sys 

enter image description here

Nota: pensé que solucionamos el problema cambiando el parámetro “Memoria entrelazada” en la BIOS. Pero me da resultados extraños. De acuerdo con Microsoft Technet , restablecemos la configuración del BIOS a “memoria NO entrelazada” ** (que el sistema operativo requiere para ver el sistema como NUMA).

El error ha sido resuelto por un nuevo Bios HP (aún no publicado) (al momento de escribir esto).

La nueva BIOS (dirigida a HP Proliant DL360 y DL380 Gen9) introduce una nueva configuración: “Optimización de tamaño de grupo NUMA” con la opción de [Agrupado por defecto] o [Plano]. HP dice que establecerlo en plano.

La parte de sceenshot de esta respuesta se realizó en un DL380 en lugar de un DL360 debido a la disponibilidad del servidor. Pero espero el mismo comportamiento en DL360. El problema desapareció, solo teníamos un grupo.

Hasta donde yo sé, el sistema operativo se comunica con el BIOS para conocer la configuración de la (s) CPU (s). Las BIOS desempeñan un papel importante en la forma en que el sistema operativo presentará los procesadores lógicos disponibles para las aplicaciones (grupo de procesador, afinidad, etc.).

Acerca de la documentación de Microsoft Sistemas de soporte que tienen más de 64 procesadores y grupos de procesadores , se establece claramente que más de un grupo de procesadores solo se creará cuando el recuento del procesador lógico (LC) sea> 64. En nuestro servidor (56 LC) con Numa Architecture configurado como “Clustered” teníamos 2 grupos de procesadores. Un ingeniero de hardware que trabaja en el equipo de desarrollo de HP Bios me explicó que cuando está configurado como “Agrupado”, el BIOS engaña a Windows agregando el número real de procesador lógico a 72 Procesador lógico (el número máximo de Procesador lógico para la Familia E5 v3 ). El número real de LC es 56 en nuestro DL360. Esa es la razón por la que agregamos 2 grupos en lugar de 1. La documentación de Microsoft parece precisa. Personalmente creo que sería mejor crear 1 grupo por nodo numa siempre que sea posible, pero en nuestro caso, hay un error. Lo que es defectuoso es difícil de saber entre HP o Microsoft cuando la configuración de HP BIOS está configurada como Agrupada (valor predeterminado) pero Microsoft parece no respaldar esa opción que parece causar nuestro problema.

En HP Bios para DL360 y DL380, la configuración de Bios “Configuración de Numa” configurada como “Agrupada” (por defecto) creará 2 grupos, aunque solo hay 56 procesadores lógicos (cuando se trata de Hyperthreaded). El resultado es que solo un procesador es visible a la vez para cualquier aplicación. Probablemente también debido a que HP engaña a Windows rellenando un número falso de procesadores lógicos. Parece que Microsoft no espera eso. Nuestra aplicación C # no puede ejecutarse en los 2 grupos. Es difícil culpar a Microsoft por ese comportamiento en el que HP hace algo que no puede anticipar. Quizás veamos, un día, que Windows admite muchos grupos cuando LC < = 64.

Acerca de Prime95. Este software de prueba de esfuerzo de CPU tiene buena documentación en Wikipedia que indica claramente que se cargará en un solo grupo de procesadores (en la sección Límites).

Correr en Numa Architecture configurado en Flat

Intente configurar su código para construir “optimizar el código” y la plataforma de destino a “x64”. (funcionó para mí con tu código, en un servidor con 80 núcleos)

Este es nuestro MsInfo32:

Nombre del sistema operativo Microsoft Windows Server 2012 R2 Standard

Versión 6.3.9600 Build 9600

Otra descripción del sistema operativo no disponible

OS Fabricante Microsoft Corporation

Fabricante del sistema IBM

System Model System x3850 X5

PC tipo System x64-based

SKU del sistema

Procesador Intel (R) Xeon (R) CPU E7-4870 @ 2.40GHz, 2395 Mhz, 10 Núcleo (s), 20 Procesador (es) lógico (s)

Procesador Intel (R) Xeon (R) CPU E7-4870 @ 2.40GHz, 2395 Mhz, 10 Núcleo (s), 20 Procesador (es) lógico (s)

Procesador Intel (R) Xeon (R) CPU E7-4870 @ 2.40GHz, 2395 Mhz, 10 Núcleo (s), 20 Procesador (es) lógico (s)

Procesador Intel (R) Xeon (R) CPU E7-4870 @ 2.40GHz, 2395 Mhz, 10 Núcleo (s), 20 Procesador (es) lógico (s)

Versión / fecha de BIOS IBM Corp. – [G0E179BUS-1.79] -, 28-07-2013

SMBIOS Versión 2.7

Versión de controlador incorporado 255.255

Modo de BIOS UEFI

Fabricante de BaseBoard IBM

Modelo BaseBoard no disponible

BaseBoard Name Base Board

Platform Role Enterprise Server

Estado de inicio seguro no admitido

Configuración de PCR7 no disponible

Versión de capa de abstracción de hardware = “6.3.9600.17031”

Nombre de usuario no disponible

Zona horaria Romance Hora estándar

Memoria física instalada (RAM) 128 GB

Memoria física total 128 GB

Memoria física disponible 53,0 GB

Memoria virtual total 147 GB

Memoria virtual disponible 67,7 GB

Hyper-V – Extensiones de modo de monitor VM Sí

Hyper-V – Extensiones de traducción de direcciones de segundo nivel Sí

Hyper-V – Virtualización habilitada en el firmware Sí

Hyper-V – Protección de ejecución de datos Sí

enter image description here

Y debe asegurarse de que no haya restricciones de trabajo.

https://msdn.microsoft.com/en-us/library/windows/desktop/ms684147(v=vs.85).aspx

Puede verificar por Process Explorer

https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Calculadora con límite de afinidad de CPU

¿Este progtwig se estancará o no? No puedo determinar si el grupo de subprocesos está totalmente expandido o no.

 using System.Linq; using System.Threading; using System.Threading.Tasks; class Program { static void Main(string[] args) { var threads = 100; int workerThreads, completionPortThreads; ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads); ThreadPool.SetMaxThreads(threads, completionPortThreads); ThreadPool.GetMinThreads(out workerThreads, out completionPortThreads); ThreadPool.SetMinThreads(threads, completionPortThreads); var ce = new CountdownEvent(threads + 1); Enumerable. Range(0, threads). Select(xs => Task.Factory.StartNew(() => { ce.Signal(); ce.Wait(); })). ToArray(); ce.Signal(); ce.Wait(); } }