Set di CPU

I set di CPU forniscono API per dichiarare l'affinità dell'applicazione in modo "soft" compatibile con il risparmio energia del sistema operativo. Inoltre, l'API offre alle applicazioni la possibilità di riaffinitizzare tutti i thread in background nel processo a un subset di processori usando il meccanismo Process Default per evitare interferenze da thread del sistema operativo all'interno del processo. Alcune versioni di Windows supportano i criteri di prenotazione core, in cui un subset dei set di CPU del sistema può essere dedicato all'uso esclusivo di singole applicazioni e carichi di lavoro.

L'API del set di CPU funziona con gli ID set di CPU, associati alle affinità del processore virtuale. Nella maggior parte dei sistemi e nella maggior parte delle condizioni, ogni ID set di CPU verrà mappato direttamente a un singolo processore logico domestico . Un thread affinizzato a un determinato set di CPU viene in genere eseguito su uno dei processori nel relativo elenco di ID set di CPU selezionati.

I set di CPU riservati possono essere determinati controllando il flag Allocato nel SYSTEM_CPU_SET_INFORMATION. Il sistema controlla l'accesso ai set di CPU riservati e l'assegnazione può essere eseguita tramite il flag AllocateToTargetProcess della struttura SYSTEM_CPU_SET_INFORMATION. Se un processo tenta di usare un'assegnazione del set di CPU allocata esclusivamente ad altri processi, la richiesta viene ignorata e i thread assegnati a set di CPU non consentiti vengono pianificati altrove. I set di CPU possono essere assegnati a due livelli. I set di CPU predefiniti del processo vengono assegnati a tutti i thread in un processo che non hanno un'assegnazione a livello di thread selezionato. Se un thread o un processo ha un set di maschera di affinità restrittiva, la maschera di affinità viene rispettata sopra qualsiasi assegnazione di set di CPU in conflitto. Nei sistemi a più gruppi, le assegnazioni della CPU vengono ignorate se si trovano in gruppi che non corrispondono al gruppo nella maschera di affinità del thread. Se un thread viene assegnato a più set di CPU validi, verrà eseguito su uno dei processori corrispondenti in base alle priorità e alle priorità dei thread concorrenti in tali processori.

Funzioni/enumerazioni/strutture del set di CPU