Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows 7 és a Windows Server 2008 R2 64 bites verziói, valamint a Windows későbbi verziói több mint 64 logikai processzort támogatnak egyetlen számítógépen. Ez a funkció nem érhető el a Windows 32 bites verzióiban.
A több fizikai processzorral rendelkező vagy több maggal rendelkező fizikai processzorokkal rendelkező rendszerek több logikai processzort biztosítanak az operációs rendszer számára. A logikai processzormag egy logikai számítási motor az operációs rendszer, az alkalmazás vagy az illesztőprogram szempontjából. A mag egy processzoregység, amely egy vagy több logikai processzorból állhat. Egy fizikai processzor egy vagy több magból állhat. A fizikai processzor megegyezik a processzorcsomaggal, a foglalattal vagy a CPU-val.
A 64-nél több logikai processzorral rendelkező rendszerek támogatása egy processzorcsoport koncepcióján alapul, amely legfeljebb 64 logikai processzorból álló statikus halmaz, amelyet egyetlen ütemezési entitásként kezelnek. A processzorcsoportok számozása 0-val kezdődik. A 64-nél kevesebb logikai processzorral rendelkező rendszereknek mindig egyetlen csoportjuk van, a 0. csoport.
Windows Server 2008, Windows Vista, Windows Server 2003 és Windows XP: processzorcsoportok nem támogatottak.
A rendszer indításakor az operációs rendszer processzorcsoportokat hoz létre, és logikai processzorokat rendel a csoportokhoz. Ha a rendszer képes a processzorok menet közbeni hozzáadására, az operációs rendszer lehetővé teszi, hogy a csoportokban helyet biztosítsunk azoknak a processzoroknak, amelyek a rendszer futása közben érkezhetnek. Az operációs rendszer minimálisra csökkenti a rendszer csoportjainak számát. Egy 128 logikai processzorral rendelkező rendszer például két processzorcsoporttal rendelkezik, amelyek mindegyik csoportjában 64 logikai processzor található, nem pedig négy csoport, amelyekben 32 logikai processzor található.
A jobb teljesítmény érdekében az operációs rendszer figyelembe veszi a fizikai közelséget, amikor logikai processzorokat rendel a csoportokhoz. A mag összes logikai processzora és a fizikai processzor összes magja ugyanahhoz a csoporthoz van rendelve, ha lehetséges. A fizikai processzorok, amelyek fizikailag közel állnak egymáshoz, ugyanahhoz a csoporthoz vannak rendelve. Egy NUMA-csomópont egyetlen csoporthoz van rendelve, kivéve, ha a csomópont kapacitása meghaladja a csoport maximális méretét. További információ: NUMA-támogatás.
A 64 vagy kevesebb processzorral rendelkező rendszereken a meglévő alkalmazások módosítás nélkül megfelelően fognak működni. Azok az alkalmazások, amelyek nem hívnak meg processzoraffinitási maszkokat vagy processzorszámokat használó függvényeket, a processzorok számától függetlenül minden rendszeren megfelelően fognak működni. A 64-nél több logikai processzorral rendelkező rendszereken való helyes működéshez a következő típusú alkalmazások módosítására lehet szükség:
- A teljes rendszer processzoronkénti adatait kezelő, karbantartó vagy megjelenítő alkalmazásokat több mint 64 logikai processzor támogatásához módosítani kell. Ilyen alkalmazás például a Windows Task Manager, amely megjeleníti a rendszer egyes processzorainak terhelését.
- Azokat az alkalmazásokat, amelyek teljesítménye kritikus fontosságú, és amelyek 64 logikai processzoron túl is hatékonyan skálázhatók, módosítani kell, hogy ilyen rendszereken fussanak. Az adatbázis-alkalmazások például hasznuk származhat a módosításokból.
- Ha egy alkalmazás processzoronkénti adatstruktúrákkal rendelkező DLL-t használ, és a DLL-t nem módosították több mint 64 logikai processzor támogatására, a DLL által exportált függvényeket hívó alkalmazás összes szálát ugyanahhoz a csoporthoz kell rendelni.
Alapértelmezés szerint egy alkalmazás egyetlen csoportra van korlátozva, amely elegendő feldolgozási képességet biztosít a tipikus alkalmazás számára. Az operációs rendszer kezdetben körkörös módon rendeli hozzá az egyes folyamatokat egyetlen csoporthoz a rendszerben lévő csoportok között. Egy folyamat úgy kezdi meg a végrehajtását, hogy egy csoporthoz van rendelve. A folyamat első szála kezdetben abban a csoportban fut, amelyhez a folyamat hozzá van rendelve. Minden újonnan létrehozott szál ugyanahhoz a csoporthoz van rendelve, mint az azt létrehozó szál.
Egy olyan alkalmazásnak, amely több csoport használatát igényli, hogy több mint 64 processzoron fusson, explicit módon meg kell határoznia, hogy hol futtassa a szálakat, és felelős a szálak processzor affinitásának a kívánt csoportokhoz való beállításáért. A INHERIT_PARENT_AFFINITY jelzővel megadhat egy szülőfolyamatot (amely eltérhet az aktuális folyamattól), amelyből egy új folyamat affinitása létrehozható. Ha a folyamat egyetlen csoportban fut, az GetProcessAffinityMask és a SetProcessAffinityMask használatával olvashatja és módosíthatja az affinitást, miközben ugyanabban a csoportban marad; ha a folyamat affinitása módosul, az új affinitás a szálakra lesz alkalmazva.
A szál affinitása a létrehozáskor adható meg a CreateRemoteThreadEx függvény használatával, a PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY kiterjesztett attribútum segítségével. A szál létrehozása után az affinitása módosítható SetThreadAffinityMask vagy SetThreadGroupAffinitymeghívásával. Ha egy szál a folyamattól eltérő csoporthoz van rendelve, a folyamat affinitása frissül, hogy tartalmazza a szál affinitását, és a folyamat többcsoportos folyamattá válik. Az egyes szálak affinitásán további módosításokat kell végezni; a többcsoportos folyamat affinitása nem módosítható a SetProcessAffinityMask használatával. A GetProcessGroupAffinity függvény lekéri azokat a csoportokat, amelyekhez a folyamat és a szálak hozzá vannak rendelve.
A feladatobjektumhoz társított összes folyamat affinitásának megadásához használja a SetInformationJobObject függvényt a JobObjectGroupInformation vagy JobObjectGroupInformationEx információs osztállyal.
A logikai processzort a csoportszáma és a csoport relatív processzorszáma azonosítja. Ezt egy PROCESSOR_NUMBER struktúra képviseli. Az örökölt függvények által használt numerikus processzorszámok csoportrelatívak.
A 64-nél több processzor támogatásához szükséges operációsrendszer-architektúra módosításairól lásd a A 64-nél több processzorral rendelkező rendszerek támogatása című tanulmányt.
A processzorcsoportokat támogató új függvények és struktúrák listáját A folyamatok és szálak újdonságaicímű témakörben találja.
A Windows 11 és a Windows Server 2022 rendszertől kezdve érvényes viselkedés
Jegyzet
A Windows 11-től és a Windows Server 2022-től kezdve már nem az a helyzet, hogy az alkalmazások alapértelmezés szerint egyetlen processzorcsoportra vannak korlátozva. Ehelyett a folyamatok és a szálak processzoraffinitással rendelkeznek, amely alapértelmezés szerint a rendszer összes processzorára kiterjed, több csoportra a 64-nél több processzorral rendelkező gépeken.
Annak érdekében, hogy az alkalmazások automatikusan kihasználhassák a 64-nél több processzorral rendelkező gépek összes processzorát, a Windows 11-től és a Windows Server 2022-től kezdve az operációs rendszer úgy változott, hogy a folyamatok és azok szálai alapértelmezés szerint a rendszer összes processzorcsoportjának összes processzorára kiterjedjenek. Ez azt jelenti, hogy az alkalmazásoknak több processzorcsoport eléréséhez már nem kell explicit módon beállítaniuk a szálaik affinitását.
Kompatibilitási okokból az operációs rendszer egy új elsődleges csoport koncepciót használ a folyamatokhoz és a szálakhoz. Minden folyamathoz egy elsődleges csoport van hozzárendelve a létrehozáskor, és alapértelmezés szerint az összes szálának elsődleges csoportja ugyanaz. Minden szál ideális processzora a szál elsődleges csoportjában található, így a szálak az elsődleges csoport processzoraihoz lesznek ütemezve, de bármely más csoport processzoraira is ütemezhetők. Azok az affinitási API-k, amelyek nem csoportérzékenyek vagy egyetlen csoporton működnek, implicit módon az elsődleges csoportot használják a folyamat/szál processzorcsoportjaként; az új viselkedésekkel kapcsolatos további információkért tekintse meg az alábbiakhoz tartozó Megjegyzések szakaszait:
- GetProcessAffinityMask
- SetProcessAffinityMask
- SetThreadAffinityMask
- GetProcessGroupAffinity
- GetThreadGroupAffinity
- SetThreadGroupAffinity
- SetThreadIdealProcessor
- SetThreadIdealProcessorEx
Az alkalmazások CPU-készletek segítségével hatékonyan kezelhetik egy folyamat vagy szál affinitását több processzorcsoport felett.
Kapcsolódó témakörök