Sdílet prostřednictvím


Více procesorů

Počítače s více procesory jsou obvykle navržené pro jednu ze dvou architektur: ne uniformní přístup k paměti (NUMA) nebo symetrické multiprocesing (SMP).

V počítači NUMA je každý procesor blíže k některým částem paměti než jiným, aby byl přístup k paměti rychlejší pro některé části paměti než jiné části. V rámci modelu NUMA se systém pokusí naplánovat vlákna na procesorech, které jsou blízko používané paměti. Další informace o technologii NUMA naleznete v tématu podpora NUMA.

V počítači SMP se dva nebo více identických procesorů nebo jader připojují k jedné sdílené hlavní paměti. Pod modelem SMP je možné přiřadit jakékoli vlákno k libovolnému procesoru. Proto je plánování vláken na počítači SMP podobné plánování vláken v počítači s jedním procesorem. Plánovač ale má fond procesorů, aby mohl plánovat souběžné spouštění vláken. Plánování je stále určeno prioritou vlákna, ale může být ovlivněno nastavením spřažení vláken a ideálního procesoru vlákna, jak je popsáno v tomto tématu.

Spřažení vláken

spřažení vláken vynutí spuštění vlákna na konkrétní podmnožině procesorů. Nastavení spřažení vláken by se mělo obecně vyhnout, protože může narušit schopnost plánovače efektivně plánovat vlákna napříč procesory. To může snížit zvýšení výkonu vytvořeného paralelním zpracováním. Vhodné použití spřažení vláken testuje každý procesor.

Systém představuje spřažení s bitovou maskou označovanou jako maska spřažení procesoru. Maska spřažení je velikost maximálního počtu procesorů v systému, přičemž bity jsou nastavené tak, aby identifikovaly podmnožinu procesorů. Na začátku systém určuje podmnožinu procesorů v masce.

Aktuální spřažení vláken pro všechna vlákna procesu můžete získat voláním funkce GetProcessAffinityMask. Pomocí funkce SetProcessAffinityMask určete spřažení vláken pro všechna vlákna procesu. Chcete-li nastavit spřažení vlákna pro jedno vlákno, použijte funkci SetThreadAffinityMask. Spřažení vlákna musí být podmnožinou spřažení procesu.

V systémech s více než 64 procesory maska spřažení zpočátku představuje procesory v jedné skupině procesorů. Spřažení vláken však lze nastavit na procesor v jiné skupině, což změní masku spřažení pro proces. Další informace naleznete v tématu skupiny procesorů.

Ideální procesor vláken

Když zadáte vlákno ideální procesor, plánovač spustí vlákno na zadaném procesoru, pokud je to možné. Pomocí funkce SetThreadIdealProcessor určete upřednostňovaný procesor pro vlákno. To nezaručuje, že ideální procesor bude zvolen, ale poskytuje užitečné rady plánovači. V systémech s více než 64 procesory můžete pomocí funkce SetThreadIdealProcessorEx určit upřednostňovaný procesor v konkrétní skupině procesoru.

podpora NUMA

skupiny procesorů