web-dev-qa-db-fra.com

Définir l'affinité avec la commande start / AFFINITY sous Windows 7

J'utilise le start /AFFINITY [n] [.exe] commande pour démarrer un exécutable avec l'affinité spécifiée. J'ai un système avec 8 processeurs (1,2,3,4,5,6,7,8). Je voudrais configurer le processus pour utiliser tous les processeurs impairs (1,3,5,7). Je ne peux pas comprendre comment faire cela et je voudrais savoir si c'est possible en utilisant la commande start. Sinon, existe-t-il une autre manière ligne de commande de le faire?

L'aide de la commande start n'était pas particulièrement utile:

 AFFINITY    Specifies the processor affinity mask as a hexadecimal number.
             The process is restricted to running on these processors.

             The affinity mask is interpreted differently when /AFFINITY and
             /NODE are combined.  Specify the affinity mask as if the NUMA
             node's processor mask is right shifted to begin at bit zero.
             The process is restricted to running on those processors in
             common between the specified affinity mask and the NUMA node.
             If no processors are in common, the process is restricted to
             running on the specified NUMA node.
20
bradvido

AFFINITY fonctionne avec un masque hexidécimal qui devrait permettre un contrôle granulaire de tous vos processeurs. Notez que le bit le plus à droite spécifie le processeur de plus bas niveau (0) (voir KB 299641 ).

Pour le cas en question, 0xAA (10101010) demande que votre processus s'exécute en utilisant les processeurs 1, 3, 5 et 7, mais pas 0, 2, 4 ou 6. Assurez-vous de laisser de côté le '0x' sur la ligne de commande.

 start /affinity AA app.exe

Autres exemples:

 start /affinity 1 app.exe     (only use CPU 0)
 start /affinity 2 app.exe     (only use CPU 1)
 start /affinity 1F app.exe    (only use CPUs 0, 1, 2, 3, and 4)
23
ladenedge

Pour obtenir le bon numéro HEX, imaginez vos cœurs au format avion 8765 4321 (pour le processeur à 8 cœurs) en sens inverse (mais PAS comme 1234 5678)

Pour activer les cœurs 7, 6 et 3, tapez le numéro 0x64 pour l'affinité:

/AFFINITY 0x64

Pour mieux voir, assortir et comparer: 0110 0100 - nombre = 0x64 (8765 4321) - noyaux

Pour l'exemple @ladenedge: /AFFINITY AA1010 1010 - nombre = 0xAA (8765 4321) - cœurs

Voir aussi: Démarrer une application affectée à un processeur spécifique sous Windows 7, 8 ou Vista

9
NEf

Plus d'informations pour vos propres besoins de calcul:

CPU ID  CPU value (dec)
0       001 (= 2^0)
1       002 (= 2^1)
2       004 (= 2^2)
3       008 (= 2^3)
4       016 (= 2^4)
5       032 (= 2^5)
6       064 (= 2^6)
7       128 (= 2^7)

Par conséquent:

  • Masque pour les identifiants CPU 0, 1, 2, 3, 4, 5, 6, 7: 255 (somme des valeurs décimales CPU individuelles), c'est-à-dire le masque 'FF' en hexadécimal
  • Masque pour les identifiants CPU 0, 2, 4, 6: 85 (somme des valeurs décimales CPU individuelles), c'est-à-dire le masque '55' en hexadécimal

Référence: recherchez le modèle "Ce sont des valeurs de masque d'affinité pour un système à 8 CPU" sur https://msdn.Microsoft.com/en-US/library/ms187104.aspx .

4
Pascal