Définir affinity avec la commande start /AFFINITY sur Windows 7

j'utilise le start /AFFINITY [n] [.exe] commande pour lancer 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 régler le processus pour utiliser tous les processeurs impairs (1,3,5,7). Je ne sais pas comment faire cela et je voudrais savoir si c'est possible en utilisant la commande start. Dans la négative, y a-t-il un remplaçant en ligne de commande moyen de le faire?

l'aide pour 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.
18
demandé sur bradvido 2011-10-14 00:17:53

3 réponses

L'affinité fonctionne avec un hexadécimal masque cela devrait permettre le contrôle granulaire de tous vos processeurs. Notez que l' le bit le plus à droite spécifie le CPU D'ordre le plus bas (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 d'omettre le " 0x " sur la ligne de commande.

 start /affinity AA app.exe

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)
19
répondu ladenedge 2016-05-11 18:54:09

Pour obtenir le droit nombre HEXADÉCIMAL imaginez vos cœurs dans l'avion format 8765 4321 (pour les 8-core CPU) en direction arrière (mais PAS comme 1234 5678)

pour activer les noyaux 7, 6 et 3, Tapez numéro 0x64 affinité:

/AFFINITY 0x64

Pour mieux les regarder, de match et de les comparer: 0110 0100 nombre = 0x64 (8765 4321) - Core

Pour @ladenedge exemple: /AFFINITY AA1010 1010 nombre = 0xAA (8765 4321) - les noyaux

Voir aussi: démarrer une Application Affecté à une unité centrale dans Windows 7, 8 ou Vista

8
répondu NEf 2014-10-16 15:33:15

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)

Donc:

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

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

4
répondu Pascal 2017-03-19 14:42:00