Quin és el nombre màxim de nuclis d' una CPU?

Un blog sobre totes les coses tècniques i algunes coses polítiques

Quants processadors permeten el Windows 10? És una pregunta senzilla, però la resposta correcta és sorprenentment difícil d'aconseguir.

El que em va portar a fer aquesta pregunta era curiositat: em preguntava si seria possible executar Windows 10 en un Supermicro 7089P-TR4T bibtex un servidor node sol amb vuit sòcols d'Intel Xeon escalables en una configuració S8S.

Les llicències del servidor Windows tenen un límit de base de 16 processadors físics. Si voleu usar més nuclis, heu de comprar llicències de nucli addicionals. Per exemple, en un sistema de 8-sigma ple de CPU Xeon 8280, vostè va rebre 8 anys * 28 = 224 nuclis físics, que requeriria la compra de tretze llicències addicionals de 16core. There▁exceptions una excepció aquí: cada sòcol de la CPU ha de Llicenciada com a mínim 8 nuclis. Aquesta restricció vol dir que es pot textar l'Yzt, per exemple, executar quatre CPU quadràries en una llicència base Manveen que necessiteu una llicència addicional de 16core per a això, per a crear 8 nuclis amb llicència per sòcol. També val la pena no adonar-se que només es compten els nuclis físics; els nuclis STTT (o l'YPMtlreadts) no s'inclouen a la llicència. Aquestes llicències addicionals són barates. A temps d' escriure un Servidor Windows 2019 Dataenter addicional 16 Core Cost de llicència en excés de 4.000 GBP.

L' escriptori Windows és molt menys restrictiu. Cada edició de Windows 10 té un nombre màxim associat de sòcols de CPU permeses:

  • Windows 10 Home implementa un sòcol
  • Windows 10 Pro i Windows 10 Implementació de l'educació 2 sòcols
  • Windows 10 Pro per a estacions de treball implementa 4 sòcols

(Implícita a part: una versió específica i edició de Windows es refereix normalment a com a SKU, i és habitual referir-se a grups de versions/editions relacionades amb Windows com a conjunt de SKUs, p. ex. 1]Windows Desktop SKUsdesktop significa qualsevol edició d' escriptori de Windows) Name

Però d'on vénen aquests números? No he trobat cap documentació oficial de Microsoft que detalli aquests límits.

Així que, d'acord amb aquests números, nosaltres Podria Executeu Windows 10 en un servidor de quatre sòcol, però el podem qt en un servidor de vuit sòcol. Per descomptat. Jansenun compatible amb l'YBUC només vol dir que el repte de l'ACPUBUConstellation name (optional) Així que vaig començar a mirar com podia arribar al límit.

La primera cosa que vaig fer va ser llançar el binari ntosknell.exe del meu Windows 10 Pro per a estacions de treball instal· lar en Ghidra, i va començar a cercar funcions consulta/helper que determinen el nombre de CPU o sòcols de CPU en el sistema. El meu pla era esbrinar com el nucli manté la pista d' aquest compte, i després cercar el codi associat que inicials el compte durant l' arrencada, i usar- lo per a trobar on s' aplica la limitació del sòcol. Després d'un munt d'excavació, i d'una mica d'ajuda d'abans de la feina per altres enginyers inverss, tinc una bona idea de com funciona tot això.

Només per posar a tothom al mateix peu, ajuda a entendre alguna terminologia al voltant dels nuclis i processadors:

  • Una CPU física, paquet, o sòcol es refereix a una CPU física, i.e. Un dispositiu físic que pots tocar.
  • Un processador físic o físic es refereix a un nucli físic real dins d'una CPU, no un nucli STT/read.
  • Un nucli lògic, un processador lògic, o un fil de processador es refereix a qualsevol processador lògic que el codi es pugui executar, incloent els fils STT.
  • Un node NUMA és un concepte en accés de memòria no uniforme (NUMA) que es refereix a un conjunt de processadors lògics que comparteixen el mateix controlador de memòria. Normalment teniu un node NUMA per sòcol de CPU, però algunes CPU AD tenen múltiples nUMA nodes per socket. L'accés de memòria a l'altra banda de NUMA nodes requereix coordinació entre nodes, cosa que s'ha incrementat el retard.

Amb tot això fora, deixa que en Georges digin.

En el@ info: whatsthis Fase1 Initialitza la targeta funció, el nombre màxim de sòcols amb llicència es llegeix des de la Creadors del nucli- Reglister Valor de llicència i escrit en el KeReglister S' ha exportat la variable. Això passa al voltant del mateix temps que les variables BCDODRA s'han llegit. El codi sembla una cosa així:

(Noteu-vos: podeu notar la manca de validació de KeRegedProcessors aquí. Això no és degut a la meva pròpia simplificació del codi; en aquest punt el valor KeRegedProcessors es pren directament de la llicència. Més tard es dirigeix a 0x500 en la funció KeStartAllProcessors, just després de que l' ID del processador d' arrencada sigui assignat.

Es pot editar aquesta política? Sí, tal com és! El procés és més o menys el següent:

  • Deshabilita la spsvc Servei.
  • Entrada HKLM\ SYSTEM\ Set2 , canvia el Tipus d' arranjament Valor REG_ REDA a 1.
  • Entrada HKLM\ SYSTEM\ Set2 , canvia el CmdLine REG_ SZ valor per a cmd. exekonch
  • Reinicia el sistema.
  • Modifica la Creadors del nucli- Reglister entrada en ProductePolicy .
  • Reverteix els canvis del registre HKLM\ SYSTEM\ Set2 des de passos 2 i 3.
  • Reinicia el sistema.

Pas 5 es pot fer directament a l'editor de Registeria. L' script de bolcat que he enllaçat a dalt us dirà el desplaçament de cada entrada, la seva cadena de nom, i el seu valor. En el meu cas la Creadors del nucli- Reglister capçalera d' entrada és a 0x0000269E, el seu nom és a 0x000026AC, i el valor a 0x000026E2.

Tingueu en compte que spsvc (El Servei de Protecció de programari) ha de mantenir- se deshabilitat per a que funcioni aquesta edició; si el servei està permès d' executar, l' estat de manipulació de llicència s' establirà i el sistema es desactivarà. Això també vol dir que podeu executar l' actualització de Windows o d' altres operacions similars mentre heu aconseguit aquest hack. Copiats de Windows que eviten que la comprovació de llicència funcioni, però he intentat per motius obvis.

Dit això, quina diversió hi ha en la implementació de octa-octa-socket al Windows 10 si pots usar tots els nuclis? Vuit 28-core / 56 CPU dereads farien per un processadors lògics de 448, molt més enllà del suposat 256-corore màxim. Mirant a través de la ProductePolicy Les entrades, però, jo no vaig poder trobar res relacionat amb els nuclis o els processadors lògics. Això m'ha intrigat a Wikipedia llista diferents límits principals per a diferents edicions, però no hi ha res en les dades de llicència que pugui restringir el recompte central. D'on surten aquests números citats?

Primer, vaig decidir comprovar les citacions. La taula de la Viquipèdia implica algunes taules de comparació de Microsoft que no contenen cap informació als límits de la CPU, juntament amb un article de Groovypost com a font per als límits del compte de sòcol. Aquest article no cita cap font, ni el documenta cap límit de nucli, però parla dels límits del sòcol.

Windows 10 implementa les configuracions màximes de memòria que abans estaven disponibles només en el regne dels servidors. Windows 10 Home suporta 128GB de RAM a la plataforma x64. Windows 10 Pro i Enterprise tant dóna suport a 512GB a la plataforma x64. Les versions x86 del Windows 10 permeten un màxim de 4GB de la RAM. Windows 10 implementa un màxim de dues CPU físiques, però el nombre de processadors lògics o nuclis varia segons l' arquitectura del processador. S' accepta un màxim de 32 nuclis en versions de 32 bits de Windows 8, mentre que fins a 256 nuclis estan suportats en les versions de 64 bits.

Andrea Da Costa (Juliol 9 de 2015)

Els ulls d'àguila entre vosaltres podeu notar dues coses. La primera és que el màxim de les dues CPU físiques, l'Stxenko no coincideix amb el sòcol compta amb l'article Groovypost, ni coincideix amb la pàgina de la Viquipèdia. El segon és el nom del fòrum " pòsters Books" que es va escriure l'article Groovypost fou escrit per la mateixa persona.

Com a tal, sembla que les tres fonts més autoritives del sòcol i les limitacions de compte de nucli de Windows 10 SKUs 192 l'article de la Viquipèdia, l'article que posa com a font, i l'article del fòrum de Microsoft Community, que apareix just a la part superior dels resultats de cerca CS, són totes codificades a una persona que escriu en una capacitat no oficial. Això no implica necessàriament que els números siguin erronis (ominós per a l'ombra molt implícita), però vol dir que van molt poc fiable.

També m'he confós amb els valors donats per Windows 10 Enterprise. Per què només hauria de donar suport a dos sòcols, però encara dóna suport a 256 nuclis? L'article Groovyp és la font dels dos sòcols que reclamen, però vaig poder trobar molts exemples en línia de persones que executen l'Enterprise en sistemes amb quatre sòcols. Al final he trobat proves concretes de que els processadors del nucli s'han establert a 4 en Windows 10 Enterprise, in una entrada del fòrum on algú ha deixat les dades de política de producte per omissió des d' una instal· lació de Windows 10 Enterprise:

Pensant una mica enrere, ho vam veure. KeMaximumProcessors s' estableix a 1280 pel nucli quan el MAXPROC S' estableix la directiva en les opcions BCD. Aquest valor BCD és un booleà i també es coneix com a BcdOS LoaderBoolean_ForceMaximumProcessors (ID d'entrada 0x26000062). Fa que el sistema informi del nombre màxim possible de CPU com a existents, presumiblement per a propòsits de depuració. Això implica que el nucli tècnicament accepta processadors lògics 1280! Però on ho fa que El número ve d'aquí? La resposta és Grups de processadors .

Les construccions multiprocessadors de Windows tenen el concepte de Afinitat per fils, i.e. un conjunt de processadors lògics en els que es pot planificar un fil. L' afinitat del fil del nucli segueix a l' afinitat KTRAD estructura , i cada procés té una afinitat per omissió per als fils nous que es troben en KPROCES estructura . Abans d' NT6. 1, l' afinitat va ser rastrejada utilitzant una ULONG tipus (via la UNA XLIFFIConstellation name (optional) typedef), a on cada bit correspon a un processador lògic. Un petit conjunt volia dir que el fil estava lliure d'estar programat en el processador corresponent, i una mica zero significa que el fil no s' hauria de planificar en aquest processador. Això normalment es refereix a com a un Màscara afinitat . A 32 bits es construeix, hi ha un límit de 32 processadors lògics en el sistema, i a 64 bits es construeixen amb un límit de 64, perquè la màscara afinitat era un ULONG . Simplement no podries tenir més de 64 processadors lògics a la màquina perquè la màscara afinitat no es va estendre més. Per a superar això, Microsoft va introduir el concepte de grups de processadors en el nucli NT6.1.

Un grup de processadors és una col·lecció de processadors lògics. Cada grup pot tenir fins a 64 processadors lògics assignats. Cada fil s'assigna a un grup de processadors, i la màscara d' afinitat de fil s'aplica als processadors d'aquest grup. El comportament de màscara afinitat antic encara s' aplica, però el nucli lògic exacte que cada bit s' aplica es mapeja a través del grup de processadors assignats en comptes de referir- se directament a un processador lògic per index. L'agrupació del processador és optimitzada segons la NUMA superiorologia. Per exemple, si n'estàs executant un parell de 28-cores amb CPU habilitats (p. e. 56 fils per sòcol), n' obtindreu dos grups de processadors amb 56 processadors lògics en cadascun, en comptes d' un grup amb 64 processadors lògics i un altre amb 48 processadors lògics. Això evita que els fils es processin en diferents nodes de la NUMA, el qual faria mal rendiment degut a l' accés de memòria a través dels sòcols.

La KiMaximumGroups Exporta les variables rastreja el nombre màxim de grups de processadors. A NT6, això era 4, però a NT6.2 el 20.

Si multipliquem 20 grups per 64 processadors lògics, obtens 1280. Que eur-vos on vam veure el número amb el qual vam veure. MAXPROC El BCD va venir abans.

Això és un límit de codi difícil. La raó per la qual s'arrurgeix és que la Estructura KAFFINITAT_ EXConstellation name (optional) S' usa per al processador de seguiment affinsions usa una matriu de mida fixa UNA XLIFFIConstellation name (optional) Màscares. Alterar la mida canviaria els desplaçaments de l' estructura. Us adonareu que KiMaximumGroups s'escriu en tres funcions, que poden insinuar que pot canviar dinàmicament a més de 20. Jo també ho pensava, però després de la investigació vaig descobrir que 20 és realment el límit dur.

Fase1 Initialitza la targeta Primera crida a KiPerformGroupConfiguration . Aquesta funció estableix grups basats en la proximitat dels nodes de la NUMA. Quan s' executa directament en el maquinari, enumera a través de la topologia NUMA, figures on assignar cada processador lògic, petjades quants processadors s'han inserit a cada grup, i llavors compta quants grups tenen com a mínim un processador assignat a ells. KiMaximumGroups I llavors s'ha establert a aquest recompte. Quan s' està executant en un hipervisor la enumeració es fa de manera diferent, i en certs casos KiAssignAllNodesToGroup0 s' anomena, que estableix KiMaximumGroups a 1. Després KiPerformGroupConfiguration retorna. Fase1 Initialitza la targeta Segueix endavant, i més tard crida KeStartAllProcessors . Si particióda dinàmica de maquinari@ info/ plain No està implementat. KiMaximumGroups és establert a Grups KiActive , que no és necessàriament més gran que 20 en primer lloc.

Els packages possibles que les construccions personalitzades de Windows existeixen amb més de 20 grups implementats, per exemple, en alguns dels hipervisors de Microsoftats, però el servidor Windows i l' escriptori Windows estan disponibles en general, estan limitats a 20 grups de processadors.

Fent un cop d'ull als números de la Viquipèdia, s' adonaran que (si és correcte que l'Enterprise permeti 4 sòcols) cada edició reporta el màxim comptador de nucli coincideix amb el nombre màxim de sòcol multiplicat per 64. Això comença a tenir algun sentit: si cada sòcol de CPU és un node NUMA, i cada node del NUMA rep un grup de processadors, i cada grup de processadors pot tenir 64 processadors lògics assignats, aleshores el límit de processador lògic serà multiplicat per 64. A més, a més, a NT 6.1, el límit de grup de processadors era 4, que és d'on prové el límit més antic de 256 processadors lògics.

Començant per Windows 10 Construeix el 20348, el comportament d' això i d' altres funcions NUMA s' han modificat a sistemes de suport millors amb nodes que contenen més processadors 64.

La creació de nodes de l'Utfake▁thankschthan allotjant un mapa entre grups i nodes ha resultat en comportaments arriscats on s' han informat els números inesperats de nodes de NUMA i, així, començant per Windows 10 Construeix el 20348, l' OS ha canviat per permetre que s'associan múltiples grups amb un node, i ara es pot informar de la veritable NUMAology del sistema.

Abans de construir 20348, Windows modificaria la seva representació del sistema Umbrello NUMA superiorologia per assegurar-se que cada grup de processadors estigués associat amb un node de NUMA, encara que això prefluís l' existència de nodes addicionals de NUMA. Per exemple, si heu instal· lat una CPU que informava d' un únic node NUMA que consisteix en 48 nuclis físics i 96 processadors lògics, Windows ho representaria com dos NUMA nodes des de la implementació de grup de processadors requerit que cada grup estava directament lligat a un node de NUMA. Per què és rellevant això? Bé, si Windows va sortir de la seva manera de donar suport a més de 64 processadors lògics per sòcol físic (per fer veure els nodes extra de NUMA), això vol dir que qualsevol límit determinat derivat de multiplicar el comptador màxim de sòcol per 64 No és possible que sigui correcte .

Més enllà de construir 20348, els conceptes de grups i nUMA nodes no es podencouar de manera que es puguin assignar múltiples grups de processadors a un node de NUMA. L'única pregunta que queda és gutbib espera, allà s'ha construït el Windows 10348? 2001, que el número de construcció es pot associar amb el servidor Windows 2022 i Windows 11, de manera que no s'aclareix on el 20348 encaixa en Windows 10. L' article va ser actualitzat el passat 2021 d'agost, abans de l'anunci de Windows 11, per tant s'ha fet possible que l'any 20348 fos una versió de construcció Windows 10, però en el seu lloc va ser afegida a Windows 11.

I què significa tot això? IIrlandam bastant segur que vol dir que per edició de límits de nucli simplement no existeixen a Windows 10, i probablement també va funcionar a les versions anteriors. Segurament, Windows 7 va acceptar un màxim de 4 grups de 64 processadors lògics, mentre que Windows 8 i posteriors suporten un màxim de 20 grups de processadors lògics 64.

  • 64 sòcols en el servidor Windows 2016, 2019, i 2022 (reduït per al productePolia), tot i que això es va acumular eficaçment a les 20 degut al límit del grup de processador.
  • Nuclis físics:
  • Els nuclis físics han de ser amb llicència al servidor Windows SKUs, amb un mínim de 8 nuclis amb llicència per sòcol, però no hi ha límit superior en el nombre de nuclis acceptats.
  • No hi ha cap nombre màxima de nucli físic a les finestres 10.
  • Processadors lògics:
  • Els grups de processadors no estan implementats en Vista i anteriors, el significat d'un límit de 32 processadors lògics de 32 bits i 64 processadors lògics sobre 64 bits és establert per la màscara afinitat.
  • El 32 bits es construeix de Windows 7 i més tard es limita a 32 processadors lògics.
  • Quatre grups de processadors es permeten a Windows 7 (NT 6. 1) a les construccions de 64 bits. Cada grup pot contenir-se fins a 64 processadors lògics. Cada grup ha d' estar associat amb un node únic NUMA.
  • 20 grups de processadors es permeten a Windows 8 (NT 6.2) i més tard, a les construccions de 64 bits. Això porta a un límit teòric de 1280 processadors lògics. Cada grup de processador s'ha d' associar amb un únic node de NUMA, i el nucli crearà nodes falsos si un sol sòcol té més de 64 processadors lògics.
  • A partir de construir 20348, els grups ja no requereixen un mapa 1:1 amb nUMA nodes, de manera que els nodes falsos de NUMA ja no es creen quan un sòcol té més de 64 processadors lògics. Un grup no pot abastar múltiples nodes de NUMA, però cada node de NUMA pot tenir múltiples grups de processadors assignats. Això no té cap efecte en els nivells màxims.

No sé de cap sistema comercial disponible x86_64, en el moment d'escriure, això pot apropar-se al límit de processador lògic de 1280. Un tauler S8S amb processadors Xeon 8280 és tan alt com 448 processadors lògics. Els processadors més alts del nucli Xeon Scalable Gen2 estan disponibles (9 sèries) però no estan en venda general i només permeten configuracions 2S. Els processadors Xeon Scalable Gen3 es documenten tan sols com l' escalat 2S, fins i tot en el Xeon 8380. AMD EPYC ofereix un major nombre de comptadors per sòcol, però fins ara hem vist l' escalat de la Infinitat Fabric més enllà de 2S. Un pot aproximadament el límit usant CPU sobre comprometre's en una hipervisor (KVM ho permet), que bàsicament implica mentir sobre quants processadors que teniu, però que els lingüistes enganyen. Els seus processadors poden fer que els hipervisors s'ajustin en una màquina virtual de 1280 processadors lògics realment tornin per maquinari, però aquests processadors estarien en una xarxa de RDMA, i vosaltres no acostumeu a executar el Windows vanilla 10 instal·lacions en aquest tipus de plataforma.

Artículos Relacionados:

- Processador -

Esta web usa cookies, puedes ver la política de cookies, aquí -
Política de cookies +