- - PR -
デュアルコア機能を無効にする方法。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-03-08 09:59
某同期通信ボードを使用したいのですが、マルチCPUでは動作に不具合が発生して
います。 ハイパースレッディング機能CPUでは、BIOSで機能を無効にすることで対応できた のですが、Core2DUOプロセッサでは、BIOSによる無効かも出来ません。 また、以下の情報などを参照して、 ACPI APIC-based PC (Milti-Processor)からACPI APIC-based PC (UP)に変更して みたのですが、この場合、Windows2003の起動時(ロゴが出てプログレスバーが 途中で固まる。)に固まってしまいます。 http://www.corso-b.net/itaya/TIPS/TIPS018.html そのほか、何か良い方法が無いでしょうか? |
|
投稿日時: 2007-03-09 05:37
boot.iniの/numproc=オプションで、使用CPU数を1つに限定させてみるというのはどうでしょうか?
・Windows XP および Windows Server 2003 の Boot.ini ファイルで使用可能なスイッチ オプション http://support.microsoft.com/default.aspx?scid=kb;ja;833721 こちらもどうぞ。 TIPS:システムのブート情報ファイルBOOT.INIを編集する http://www.atmarkit.co.jp/fwin2k/win2ktips/502bootini/bootini.html |
|
投稿日時: 2007-03-09 10:09
御教示頂いたboot.iniの/numprocの設定で問題が解決しました。
ありがとうございました。 申し訳ないのですが、ここまでできたら欲が出てきまして、 特定のアプリケーションのみ1CPUで動作させられないか?と考 えています。これは、可能なら?ということで、現行システムで は/numprocで対応したいと考えています。 タスクマネージャ等で、使用できるCPUのチェックは出来ますが コレだと、実行するたびに設定しないといけないので、現実的 ではありません。 ポリシーの設定等を確認したのですが見つからず... |
|
投稿日時: 2007-03-09 13:16
自作のプログラムなら、SetProcessAffinityMask APIを呼び出して、1 CPUしか使わないようにすればいいのではないでしょうか。
既存のプログラムなら、実行ファイルのヘッダ中に、Affinity Maskを設定するフィールドがあるので、これをセットしておけばいいと思います(VS2005とかでどうやって設定するのかは知りません、すみません)。ただし、そのプロセスが別のプロセスを起動すると、Affinity Maskは継承されないのでダメですが(プロセスから起動されるスレッドには継承される)。 .exeファイル中のAffinity Maskを設定するには、MS製ツールなら、imagecfg.exe の-aオプションでセットできるようです。このツールはWindows 2000 リソースキットに含まれているようですが、Windows Server 2003やXPで使えるかどうか、問題ないかどうか分かりません(たぶん大丈夫だとは思いますが)。 |
|
投稿日時: 2007-03-16 18:38
業務連絡です(![]() せっかくなので、メモ代わりに、アフィニティマスクを設定する方法や、BOOT.iNIでCPU数を1つにする方法などをTIPS記事としてまとめさせていただきました。これで検索とかでも見つかりやすくなるかと思います。 ■Windows TIPS ・プログラムの実行に使用するCPUを限定させる http://www.atmarkit.co.jp/fwin2k/win2ktips/862affinity/affinity.html ・システム全体で使用するCPU数を限定させる http://www.atmarkit.co.jp/fwin2k/win2ktips/863syscpu/syscpu.html 以上。 |
1