sirven - metodos de hilos c#
No puedo usar más de un grupo de procesadores para mis hilos en una aplicación C# (4)
¿Este programa se estancará o no? No puedo determinar si su grupo de subprocesos está completamente 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();
}
}
De acuerdo con la documentación de MSDN y la respuesta de Stephen Toub , mi aplicación C # debería usar todos los procesadores lógicos de cada grupo de procesadores porque está configurada según sea necesario (vea mi configuración de aplicaciones a continuación).
Ejecuté mi aplicación en un servidor Windows 2012 con una arquitectura NUMA: 2 x [cpu Xeon E5-2697 v3 a 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 se necesitan 28 procesadores lógicos, todos del mismo grupo de procesadores.
¿Por qué el programador de tareas asigna mis hilos en un solo grupo de procesadores?
Mi código está disponible en GitHub o el ejecutable podría descargarse en el sitio web de mi página de inicio
Ya hice esta pregunta en social.msdn.microsoft.com sin ninguna respuesta.
-
Actualización 2015-01-26: informé un error en connect.microsoft.com
-
Actualización 2015-01-30: agregué el volcado 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 ejecuto)
-
Actualización 02/02/2015, NO tenemos Citrix instalado en este servidor en particular (lo siento, estaba equivocado)
-
Actualización 2015-02-02, contactamos a HP ...
-
Actualización 2015-02-03, agregué más información a mi programa para mostrar el grupo de procesadores por subproceso y algunos pequeños gadgets más.
-
Actualización 2015-02-17, 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 soporte de HP)
-
Actualización 2015-05-13, HP confirmó el problema en una nota de "Aviso al cliente". Ver este documento vinculado id: c04650594
Configuré mi .Net 4.5 (o 4.5.1) App.Config para:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<Thread_UseAllCpuGroups enabled="true"></Thread_UseAllCpuGroups>
<GCCpuGroup enabled="true"></GCCpuGroup>
<gcServer enabled="true"></gcServer>
</runtime>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/>
</startup>
</configuration>
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 del 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 programa:
O, si Windows decidió iniciarlo en el nodo 1:
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
Nota: pensé que solucionamos el problema cambiando el parámetro "Memoria intercalada" en la BIOS. Pero nos da resultados extraños. Según Microsoft Technet , configuramos la configuración del BIOS en "Memoria NO Intercalada" ** (que el sistema operativo requiere para ver el sistema como NUMA).
El error ha sido reparado por un nuevo (aún no publicado) HP Bios (en el momento de escribir esto).
La nueva BIOS (dirigida a HP Proliant DL360 y DL380 Gen9) presenta una nueva configuración: "Optimización de tamaño de grupo NUMA" con la opción de [Agrupado - predeterminado] o [Plano]. HP dice que lo configure 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 CPU. La BIOS juega un papel importante en cómo el sistema operativo presentará los procesadores lógicos disponibles para las aplicaciones (Grupo de procesadores, 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 solo se creará más de un grupo de procesadores cuando el recuento del procesador lógico (LC) sea> 64. En nuestro servidor (56 LC) con Numa Architecture configurado en "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 se configura en "Clustered", Bios engaña a Windows al agregar 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 en Clustered (predeterminado) pero Microsoft parece no admitir esa opción que parece causar nuestro problema.
En HP Bios para DL360 y DL380, la configuración de Bios "Numa Configuration" configurada en "Clustered" (predeterminada) creará 2 grupos, aunque solo hay 56 procesadores lógicos (cuando están hiperprocesados). 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 al rellenar 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 de ese comportamiento en el que HP hace algo que no pueden anticipar. Quizás veremos, algún día, Windows admitiendo muchos grupos cuando LC <= 64.
Sobre Prime95. Este software de prueba de estrés de CPU tiene una buena documentación en Wikipedia que establece claramente que se cargará en un solo grupo de procesadores (en la sección Límites).
Intente configurar su código para construir "optimizar código" y la plataforma de destino en "x64". (funcionó para mí con su 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
Sistema Modelo Sistema x3850 X5
Tipo de sistema PC basado en x64
SKU del sistema
Procesador Intel (R) Xeon (R) CPU E7- 4870 @ 2.40GHz, 2395 Mhz, 10 Core (s), 20 Procesador (es) lógico (s)
Procesador Intel (R) Xeon (R) CPU E7- 4870 @ 2.40GHz, 2395 Mhz, 10 Core (s), 20 Procesador (es) lógico (s)
Procesador Intel (R) Xeon (R) CPU E7- 4870 @ 2.40GHz, 2395 Mhz, 10 Core (s), 20 Procesador (es) lógico (s)
Procesador Intel (R) Xeon (R) CPU E7- 4870 @ 2.40GHz, 2395 Mhz, 10 Core (s), 20 Procesador (es) lógico (s)
Versión de BIOS / Fecha IBM Corp. - [G0E179BUS-1.79] -, 28-07-2013
SMBIOS Versión 2.7
Controlador incorporado versión 255.255
Modo BIOS UEFI
BaseBoard Fabricante IBM
Modelo de placa base no disponible
Nombre de la placa base Placa base
Servidor Enterprise de Rol de Plataforma
Estado de arranque seguro no compatible
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 firmware Sí
Hyper-V - Protección de ejecución de datos Sí
Y debe asegurarse de que no haya restricciones laborales.
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