Visualizzazione post con etichetta Affinità del processore. Mostra tutti i post
Visualizzazione post con etichetta Affinità del processore. Mostra tutti i post

lunedì 14 marzo 2016

Windows Quick Tip: Impostare l'affinità del processore e limitare il numero di core utilizzati da un processo

Settare l'affinità del processore permette di selezionare, per un determinato processo, quanti e quali core della CPU utilizzare. Per default Windows permette ad un processo di accedere a tutti i core disponibili, tuttavia tale impostazione può creare problemi, o comunque ridurre le prestazioni, delle applicazioni non ottimizzate per lavorare con più core. In questo caso per l'applicazione incriminata possiamo impostare l'affinità del processore in modo che venga utilizzato un solo core.

Per impostare l'affinità di un determinato processo possiamo procedere nel seguente modo:
  • Avviare l'applicazione/processo;
  • Avviare Task Manager (CTRL+SHIFT+ESC) e posizionarsi sulla scheda Processi  o Dettagli (a seconda della versione di Windows);
  • Cliccare con il tasto destro del mouse sul processo a cui vogliamo settare l'affinità e, dal menu contestuale, selezionare la voce Imposta AffinitàA questo punto non resta che selezionare su quali core il processo deve essere eseguito.
Impostazione Affinità tramite Task Manager/Gestione Attività
FIG 1 - Impostazione Affinità tramite Task Manager/Gestione Attività
Agendo tramite il Task Manager (o Gestione Attività) l'impostazione è solo temporanea: terminando e riavviando il processo le impostazioni di affinità torneranno quelle di default. Quello che possiamo fare è lanciare il processo con alcune opzioni da riga di comando oppure creare un collegamento. Prima però è necessario fare una piccola premessa.
I core della CPU sono numerati a partire da 0. Supponiamo che la nostra CPU sia dotata di 4 Core fisici. Windows, con l'utilizzo della tecnologia Hyper-Threading, vedrà 8 core numerati da 0 a 7 così come mostrato in tabella. Supponiamo di voler eseguire un processo solo sul Core 1 e Core 3. A questi 2 core assegniamo il valore 1 mentre ai restanti assegniamo valore 0 (si veda la seconda riga della tabella).

Core 7 Core 6 Core 5 Core 4 Core 3 Core 2 Core 1 Core 0
0 0 0 0 1 0 1 0

Nella seconda riga della tabella abbiamo il seguente valore binario 00001010 che convertito in esadecimale (HEX) corrisponde ad A. Questo valore verrà utilizzato all'interno del comando per impostare l'affinità del processore in modo che il processo venga eseguito solo sui Core 1 e 3.

Per creare un collegamento che imposti l'affinità del processore di un determinato processo:
  • Cliccare con il tasto destro del mouse su un'area vuota del desktop, quindi selezionare dal menu contestuale l'opzione Nuovo e poi cliccare su Collegamento.
  • Nella casella di testo Immettere il percorso per il collegamento inserire il comando che si intende eseguire. In questo caso il comando sarà del tipo
    cmd.exe /c start "Nome Programma" /affinity <numero_core_in_hex> "percorso completo file"
    ad es. se vogliamo eseguire notepad.exe sul core 3 e 1 il comando sarà
    cmd.exe /c start "Blocco note" /affinity A "C:\Windows\notepad.exe"

    Creazione di un collegamento per l'impostazione affinità del processore
    FIG 2 - Creazione collegamento per impostare l'affinità del processore
  • Una volta immesso il comando cliccare sul pulsante Avanti e digitare un nome da dare al collegamento quindi cliccare su Fine.
    Specificare un nome per il collegamento
    FIG 3 - Specificare un nome per il collegamento
Cliccando sul collegamento appena creato l'applicazione verrà eseguita solo sui core impostati. Se da Task Manager verifichiamo le impostazioni di affinità vedremo che sono impostate sul core 3 e 1 così come indicato nel collegamento.
Impostazione affinità del processore
FIG 4 - Impostazione affinità del processore