Domanda

So come ottenere il tipo di processore, forse è l'unico modo, ma in realtà sto cercando un modo per determinare da un'applicazione se è in esecuzione su un processore multi-core o su un processore single-core hyper-threading .

(background: i provider di hosting di alcuni dei miei clienti sono molto vaghi sulle risorse che rendono disponibili tramite le immagini VMWare. Questa applicazione dovrebbe essere eseguita su multi-core, ma ha visto prestazioni dannose dall'ultima "mossa" Normalmente, su multi-core, un core picchi su un thread e non sull'altro. Su questo "multi-core", entrambi i processori spuntano, anche su applicazioni single-thread.)

È stato utile?

Soluzione

System.Environment.ProcessorCount Che includerà anche processori hyperthreaded. Quale Vmware può o meno esporre. È più probabile che venga esposto se il processore è abilitato VT E stai usando una tecnologia hypervisor abilitata baremetal.

Se si dispone di XP-SP3 / WIN2k3 o versione successiva È possibile utilizzare WMI per estrarre:

Win32_ComputerSystem.NumberOfProcessors returns physical count

Win32_ComputerSystem.NumberOfLogicalProcessors returns logical count

Se i valori sono gli stessi, è probabile che il tuo sistema non abbia HT o non sia abilitato.

Puoi iniziare a esplorare come estrarre le informazioni WMI in .NET da questo tutorial .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top