Több processzor
A több processzorral rendelkező számítógépek általában két architektúra egyikére vannak tervezve: nem egységes memóriahozzáférés (NUMA) vagy szimmetrikus többprocesszoros (SMP).
A NUMA-számítógépeken minden processzor közelebb áll a memória egyes részeihez, mint mások, így a memória egyes részei gyorsabban férnek hozzá a memóriához, mint más részekhez. A NUMA-modellben a rendszer megpróbál szálakat ütemezni a használt memóriához közeli processzorokon. További információ a NUMA-ról: NUMA támogatási.
Egy SMP-számítógépen két vagy több azonos processzor vagy mag csatlakozik egyetlen megosztott főmemóriához. Az SMP-modellben bármely szál hozzárendelhető bármely processzorhoz. Ezért az SMP-számítógépeken a szálak ütemezése hasonló az egyetlen processzorral rendelkező számítógépeken futó szálak ütemezéséhez. Az ütemező azonban processzorkészlettel rendelkezik, így a szálak egyidejű futtatását ütemezheti. Az ütemezést továbbra is a szál prioritása határozza meg, de a szál affinitása és a szál ideális processzorának beállításával befolyásolható, ahogyan az ebben a témakörben tárgyalt.
Szál affinitása
szál affinitása kényszeríti a szál futtatását a processzorok egy adott részhalmazán. A szál affinitásának beállítását általában kerülni kell, mert ez zavarhatja az ütemezőt abban, hogy a szálakat hatékonyan ütemezze a processzorok között. Ez csökkentheti a párhuzamos feldolgozás által generált teljesítménynövekedést. A szál affinitásának megfelelő használata az egyes processzorok tesztelése.
A rendszer az affinitást egy processzor affinitás maszkjának nevezett bitmaszkkal jelöli. Az affinitási maszk a processzorok maximális számának mérete a rendszerben, a processzorok egy részhalmazának azonosítására beállított bitekkel. Kezdetben a rendszer határozza meg a maszkban lévő processzorok részhalmazát.
A folyamat összes szálának aktuális szál-affinitását a GetProcessAffinityMask függvény meghívásával szerezheti be. A SetProcessAffinityMask függvénnyel adja meg a folyamat összes szálához tartozó szál affinitását. Ha egyetlen szálhoz szeretné beállítani a szál affinitását, használja a SetThreadAffinityMask függvényt. A szál affinitásának a folyamat affinitásának egy részhalmazának kell lennie.
A 64-nél több processzorral rendelkező rendszereken az affinitási maszk kezdetben egyetlen processzorcsoport processzorainak felel meg. A szál affinitása azonban beállítható egy másik csoportban lévő processzorra, amely módosítja a folyamat affinitási maszkját. További információ: Processzorcsoportok.
Szál ideális processzor
Ha szál ideális processzortad meg, az ütemező a megadott processzoron futtatja a szálat, ha lehetséges. A SetThreadIdealProcessor függvénnyel adja meg a szál előnyben részesített processzorát. Ez nem garantálja, hogy az ideális processzor lesz kiválasztva, de hasznos tippet nyújt az ütemezőnek. A 64-nél több processzorral rendelkező rendszereken a SetThreadIdealProcessorEx függvénnyel megadhat egy előnyben részesített processzort egy adott processzorcsoportban.
Kapcsolódó témakörök