Più processori
I computer con più processori sono in genere progettati per una di due architetture: accesso non uniforme alla memoria (NUMA) o multiprocessore simmetrico (SMP).
In un computer NUMA ogni processore è più vicino ad alcune parti della memoria rispetto ad altre, rendendo l'accesso alla memoria più veloce per alcune parti della memoria rispetto ad altre parti. Nel modello NUMA il sistema tenta di pianificare i thread sui processori vicini alla memoria usata. Per altre informazioni su NUMA, vedere NUMA Support.
In un computer SMP due o più processori o core identici si connettono a una singola memoria principale condivisa. Nel modello SMP è possibile assegnare qualsiasi thread a qualsiasi processore. Di conseguenza, la pianificazione dei thread in un computer SMP è simile alla pianificazione dei thread in un computer con un singolo processore. Tuttavia, l'utilità di pianificazione dispone di un pool di processori, in modo che possa pianificare l'esecuzione simultanea dei thread. La pianificazione è ancora determinata dalla priorità del thread, ma può essere influenzata impostando l'affinità di thread e il processore ideale del thread, come illustrato in questo argomento.
Affinità thread
affinità thread forza l'esecuzione di un thread in un subset specifico di processori. L'impostazione dell'affinità thread deve essere in genere evitata, perché può interferire con la capacità dell'utilità di pianificazione di pianificare i thread in modo efficace tra processori. Ciò può ridurre i miglioramenti delle prestazioni prodotti dall'elaborazione parallela. Un uso appropriato dell'affinità di thread consiste nel testare ogni processore.
Il sistema rappresenta l'affinità con una maschera di bit denominata maschera di affinità del processore. La maschera di affinità è la dimensione del numero massimo di processori nel sistema, con bit impostati per identificare un subset di processori. Inizialmente, il sistema determina il subset di processori nella maschera.
È possibile ottenere l'affinità di thread corrente per tutti i thread del processo chiamando la funzioneGetProcessAffinityMask. Usare la funzioneSetProcessAffinityMaskper specificare l'affinità di thread per tutti i thread del processo. Per impostare l'affinità di thread per un singolo thread, usare la funzionesetThreadAffinityMask. L'affinità thread deve essere un subset dell'affinità del processo.
Nei sistemi con più di 64 processori, la maschera di affinità rappresenta inizialmente i processori in un singolo gruppo di processori. Tuttavia, l'affinità thread può essere impostata su un processore in un gruppo diverso, che modifica la maschera di affinità per il processo. Per altre informazioni, vedere gruppi di processori.
Processore ideale thread
Quando si specifica un processore ideale thread, l'utilità di pianificazione esegue il thread nel processore specificato, quando possibile. Usare la funzioneSetThreadIdealProcessorper specificare un processore preferito per un thread. Ciò non garantisce che verrà scelto il processore ideale, ma fornisce un suggerimento utile per l'utilità di pianificazione. Nei sistemi con più di 64 processori è possibile usare la funzionesetThreadIdealProcessorExper specificare un processore preferito in un gruppo di processori specifico.
Argomenti correlati