18

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 ?

4

5 に答える 5

21

PowerShell がこのタスクを実行できます

アフィニティを取得:

PowerShell "Get-Process app | Select-Object ProcessorAffinity"

アフィニティを設定:

PowerShell "$Process = Get-Process app; $Process.ProcessorAffinity=255"

例: (8 コア プロセッサ)

  • コア番号==ビットマスク
  • コア 1 = 1 = 00000001
  • コア 2 = 2 = 00000010
  • コア 3 = 4 = 00000100
  • コア 4 = 8 = 00001000
  • コア 5 = 16 = 00010000
  • コア 6 = 32 = 00100000
  • コア 7 = 64 = 01000000
  • コア 8 = 128 = 10000000

使用するコアの 10 進数値を加算するだけです。255 = 8 つのコアすべて。

  • すべてのコア = 255 = 11111111

出力例:

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

于 2013-10-04T20:48:26.853 に答える
2

これに対する答えを探していて何も見つからない他の人にとって、私が見つけた解決策は、WinAFC (または AffinityChanger) と呼ばれるアプリを使用することでした。これは、特定の実行可能ファイルのプロファイルを指定できる部分的な GUI、部分的なコマンド ライン アプリであり、それらのプロセス リストをポーリングします。一致するプロセスが見つかった場合、読み込まれたプロファイルの設定に従って、それらのプロセスのアフィニティが変更されます。

ここにいくつかのドキュメントがあります: http://affinitychanger.sourceforge.net/

私の目的のために、次のようなプロファイルを作成しました。

TestMode = 0
TimeInterval = 1
*\convert.exe := PAIR0+PAIR1

このプロファイルは、convert.exe プロセスが最初の 2 つの CPU コア ペア (CPU0、CPU1、CPU2、および CPU3) を使用し、毎秒ポーリングするように設定します。TestMode実際にアフィニティを設定しなくても、プロファイルが機能しているかどうかを確認できるトグルです。

誰かがこれが役に立つことを願っています!

于 2016-10-05T22:55:55.943 に答える
0
wmic process where name="some.exe" call setpriority ProcessIDLevel

これらは優先度だと思います。プロセス名の代わりに PID を使用することもできます。

于 2013-10-04T19:51:58.477 に答える