- PR -

デュアルコア機能を無効にする方法。

1
投稿者投稿内容
ryoichi
常連さん
会議室デビュー日: 2003/09/12
投稿数: 30
投稿日時: 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

そのほか、何か良い方法が無いでしょうか?
Uchikoshi
@ITエディタ
会議室デビュー日: 2001/07/27
投稿数: 197
投稿日時: 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
ryoichi
常連さん
会議室デビュー日: 2003/09/12
投稿数: 30
投稿日時: 2007-03-09 10:09
御教示頂いたboot.iniの/numprocの設定で問題が解決しました。
ありがとうございました。

申し訳ないのですが、ここまでできたら欲が出てきまして、
特定のアプリケーションのみ1CPUで動作させられないか?と考
えています。これは、可能なら?ということで、現行システムで
は/numprocで対応したいと考えています。

タスクマネージャ等で、使用できるCPUのチェックは出来ますが
コレだと、実行するたびに設定しないといけないので、現実的
ではありません。
ポリシーの設定等を確認したのですが見つからず...
Uchikoshi
@ITエディタ
会議室デビュー日: 2001/07/27
投稿数: 197
投稿日時: 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で使えるかどうか、問題ないかどうか分かりません(たぶん大丈夫だとは思いますが)。
Uchikoshi
@ITエディタ
会議室デビュー日: 2001/07/27
投稿数: 197
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)