In Windows, with
START /node 1 /affinity ff cmd /C "app.exe"
I can set the affinity of app.exe (number of cores used by app.exe).
With a windows script, How I can change the affinity of a running process ?
In Windows, with
START /node 1 /affinity ff cmd /C "app.exe"
I can set the affinity of app.exe (number of cores used by app.exe).
With a windows script, How I can change the affinity of a running process ?
PowerShell "Get-Process app | Select-Object ProcessorAffinity"
PowerShell "$Process = Get-Process app; $Process.ProcessorAffinity=255"
使用するコアの 10 進数値を加算するだけです。255 = 8 つのコアすべて。
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:\>
ソース:
プロセスのアフィニティを変更する方法に関する詳細な投稿は次のとおりです 。 http://www.energizedtech.com/2010/07/powershell-setting-processor-a.html
これに対する答えを探していて何も見つからない他の人にとって、私が見つけた解決策は、WinAFC (または AffinityChanger) と呼ばれるアプリを使用することでした。これは、特定の実行可能ファイルのプロファイルを指定できる部分的な GUI、部分的なコマンド ライン アプリであり、それらのプロセス リストをポーリングします。一致するプロセスが見つかった場合、読み込まれたプロファイルの設定に従って、それらのプロセスのアフィニティが変更されます。
ここにいくつかのドキュメントがあります: http://affinitychanger.sourceforge.net/
私の目的のために、次のようなプロファイルを作成しました。
TestMode = 0
TimeInterval = 1
*\convert.exe := PAIR0+PAIR1
このプロファイルは、convert.exe プロセスが最初の 2 つの CPU コア ペア (CPU0、CPU1、CPU2、および CPU3) を使用し、毎秒ポーリングするように設定します。TestMode
実際にアフィニティを設定しなくても、プロファイルが機能しているかどうかを確認できるトグルです。
誰かがこれが役に立つことを願っています!
wmic process where name="some.exe" call setpriority ProcessIDLevel
これらは優先度だと思います。プロセス名の代わりに PID を使用することもできます。