2009-03-09 4 views
9

私はいくつかのプロセス(常に同じ実行可能プログラムですが、いくつかのインスタンス)をスピンし、100%のCPU時間を要するサードパーティ製アプリケーションを備えたクアッドコアシステムを持っています。私はまた、同じボックス(IISとサードパーティ)で実行されているいくつかのWebサービスを持っています。Windows XPで実行可能ファイルにプロセッサアフィニティを設定する方法はありますか?

すべてのコアが忙しくている問題は、このサードパーティのWebサーバーをタイムアウトさせることです(IISは正常に動作しますが、通常よりも遅くなります)。私はサードパーティのWebサーバーを支配していません。より大きな製品の一部であり、運用する必要があります。だから、私はプロセッサアフィニティ(SysInternals Process Explorer経由)でプレイしようとし、それらの厄介なプロセスを4つのコアのうち3つに限定し、第4コアを第三者のWebサーバーに専念させました。

問題は、実行可能なプロセスではなく、実行可能レベルでのみ親和性を設定するため、これらのプロセスが終了してから新しいプロセスとして再作成されると、すべて同じです。だから、私はこのImageCfg.exeユーティリティをMicrosoftから探せたが、ダウンロードのためにMicrosoftのwebsideで見つけることができず、一部の人はそれを試してみて、実際には動作しないと不平を言うのを見る。

アフィニティを実行可能ファイルに貼り付ける方法はありますか?

+1

最初のお問い合わせは、問題のソフトウェアの発行元にお願いします。スレッドの使用を制限する方法を教えてください。 – NotMe

+0

しかし、ソフトウェアがその機能を持っていない可能性があるので、問題はまだ興味深いです。そこには確かに他のソフトウェアはありません...毎回ベンダーに電話しなければならないのは面倒です。 – ine

答えて

5

Process Lassoの機能の1つは、そのプロセスが起動されるたびにプロセスの親和性を設定することです。

3

SetProcessAffinityMask()を使用してください。そしてProcessor Affinity is inherited!

あなたは、特にthe "Debugger" optionをImageFileExecutionOptionsを使用し、あなたのための親和性を設定したいものがある自体にSetProcessAffinityMask()を呼び出し、その後、新しいプロセスを生成し、独自の小さな実行可能ファイルを、記述する必要があります、注意してください。それをデバッガとして設定すると、完了です。

+1

本当にこの文書を読んでください。あなたは簡単にこれで足に自分を撃つことができます。多くの邪魔者。 –

5

/AFFINITYのパラメータをstartに設定してください。

ヘルプから:

AFFINITY The new application will have the specified processor 
      affinity mask, expressed as a hexadecimal number. 

Windows上のプロセッサの親和性は、あなたには、いくつかの実験を必要とするかもしれないが、私はそれゆえ7は、最初の3つのコアであることとFは全てが、1は、第一のコアであることを前提としたいビットマスクであるため四。または8は4番目のもののみです。

次に、スケジュールされたタスクまたはショートカットを、startの呼び出しで置き換えて、適切なパラメータを設定することができます。

+1

Windows XPには '/ affinity'オプションはありません。 –

3

シングル・プロキシ・アフィニティ・アプリケーション・シムを使用すると、1つのプロセッサを実行可能レベルに強制することができます。これにより、プロセスが1つのコアに強制されます。

この記事のhttp://msdn.microsoft.com/en-us/library/bb173458.aspxには、shimを底部に向けて有効にする段落があります。

+0

この記事はhttp://msdn.microsoft.com/en-us/library/ee417693.aspxに移動しました –

0

プロセスの優先度を設定して、CPUの100%を使用することを決定した場合でも、優先度の高いものが処理を引き継ぐようにすることができます。

Doing this automatically(タスクマネージャで再生する必要はありません)は、私が少し前に尋ねたものです。

+0

質問はプロセッサの優先順位ではなくプロセッサの親和性に関するものです。 –

3

ImageCfg.exeユーティリティは機能しません。私は今日、会社の問題を解決するためにそれを使用しました。それが利用可能である

は、例えば、CPU0とCPU1に.EXEを制限XXX.EXE http://www.robpol86.com/pages/imagecfg.php

Imagecfg -aを0x3から。

+0

理由はわかりませんが、私の場合は動作しませんでした。 – bychkov

6

http://waynes-world-it.blogspot.com/2009/06/processor-affinity-on-windows-server.html

PowerShellの

使用PowerShellの1つまたは複数の実行中のプロセスのためのプロセッサアフィニティを設定します。 calc.exeのプロセッサーマスクを最初の4つのプロセッサーに設定するスクリプトの例を以下に示します。スクリプトはシンプルで、スケジュールが簡単で、x86とx64で動作し、同じ名前の複数のプロセスをサポートしているため、少なくとも部分的にはPowerShellの管理がいかに簡単なのかを強調しているためです。

calc.exe(n!)で多数の階乗を使用すると、テストに役立つ100%CPUが生成されることに注意してください。マスクは、以下の1111 = 0xFのである - のみ最初の4つのプロセッサのマスク可能使用:

$calcSet = Get-Process -ProcessName "calc" 
foreach ($calc in $calcSet) {$calc.ProcessorAffinity=0xF} 
1

明らかに、このスレッドは時代遅れですが、イムは、(私が行ったように)誰もがこのテーマにグーグル場合には、とにかくコメントを追加します

あなたはそれ は、CPUの100%、それはそうする必要があるときに、より高い優先順位が 引き継ぐことが可能であるものを使用することを決定した場合でも、そのようプロセスの優先順位を設定してみてください可能性があります。

これを自動的に実行すると(以前のマネージャの で再生する必要はありません)、これまでに尋ねたことがあります。

開始コマンドは、プロセスの起動優先度を設定するために使用できます。

例: start "my path\my process" /LOWは低優先度です。

可優先スイッチ LOW, NORMAL, HIGH, REALTIME, ABOVENORMAL, BELOWNORMAL

は、例えば、バッチファイルから呼び出されることが可能です。

+0

質問は、プロセスの優先順位ではなく、プロセッサの親和性に関するものです。 –

関連する問題