Dans Windows, avec
START /node 1 /affinity ff cmd /C "app.exe"
Je peux définir l’affinité de app.exe (nombre de cœurs utilisés par app.exe).
Avec un script Windows, comment puis-je changer l’affinité d’un processus en cours d’exécution?
PowerShell "Get-Process app | Select-Object ProcessorAffinity"
PowerShell "$Process = Get-Process app; $Process.ProcessorAffinity=255"
Ajoutez simplement les valeurs décimales ensemble pour le kernel que vous souhaitez utiliser. 255 = Tous les 8 cœurs.
C:\>PowerShell "Get-Process notepad++ | Select-Object ProcessorAffinity" ProcessorAffinity ----------------- 255 C:\>PowerShell "$Process = Get-Process notepad++; $Process.ProcessorAffinity=13" C:\>PowerShell "Get-Process notepad++ | Select-Object ProcessorAffinity" ProcessorAffinity ----------------- 13 C:\>PowerShell "$Process = Get-Process notepad++; $Process.ProcessorAffinity=255" C:\>
La source:
Voici un article bien détaillé sur la façon de modifier l’affinité d’un processus: http://www.energizedtech.com/2010/07/powershell-setting-processor-a.html
La réponse acceptée fonctionne, mais uniquement pour le premier processus de la liste. La solution à cela dans les commentaires ne fonctionne pas pour moi.
Pour modifier l’affinité de tous les processus portant le même nom, utilisez ceci:
Powershell "ForEach($PROCESS in GET-PROCESS processname) { $PROCESS.ProcessorAffinity=255}"
Où 255
est le masque indiqué dans la réponse acceptée. (Impossible de commenter encore, donc nouvelle réponse, désolé)
Pour quiconque cherchait des réponses à cette question et n’en trouvait pas, la solution que j’ai trouvée consistait à utiliser une application appelée WinAFC (ou AffinityChanger). Il s’agit d’une application de ligne de commande partielle partielle qui vous permet de spécifier des profils pour certains exécutables, et interroge la liste des processus pour eux. S’il trouve des processus de correspondance, cela changera l’affinité de ces processus en fonction des parameters du profil chargé.
Il y a de la documentation ici: http://affinitychanger.sourceforge.net/
Pour mon propos, j’ai créé un profil qui ressemblait à ceci:
TestMode = 0 TimeInterval = 1 *\convert.exe := PAIR0+PAIR1
Ce profil définit tout processus convert.exe pour utiliser les deux premières paires de cœurs de processeur (CPU0, CPU1, CPU2 et CPU3), en interrogeant chaque seconde. TestMode
est un commutateur qui vous permet de voir si votre profil fonctionne sans définir d’affinités.
J’espère que quelqu’un trouve cela utile!
wmic process where name="some.exe" call setpriority ProcessIDLevel
Je pense que ce sont les niveaux de priorité. Vous pouvez également utiliser PID au lieu du nom du processus.