• 締切済み

マルチコアのCPUの動きをコントロールできますか?

マルチコアのCPUの挙動について教えて頂きたいのですが。 自分のパソコンはWindows7とLinuxのデュアルブートです。 Linuxはconkyを入れて、デスクトップ上でCPUやメモリ、ネットワークなどを監視しています。 そこで気が付いたのですが、クアッドコアをLinux上で見ていると、ほとんどCore2ばかり動いています。 他は10%いかないとかでもCore2は30%以上とか動いています。 ではWindows7のタスクマネージャ上ではどうかと見ると、Core1とCore3がメインで動いて、逆にCore2はあまり動いていません。 自分としては、4つのCoreを均等に使えればいいのにと思うのですが、これらの挙動を自分で管理できないものでしょうか? 例えばプログラミングで複雑な計算をさせるとかの際にも、そういったように自ら割り振りできればいいなぁと思うのですが。 Windows、Linux共にアドバイスあれば教えて頂きたいと思います。

みんなの回答

noname#259146
noname#259146
回答No.2

>これらの挙動を自分で管理できないものでしょうか? 1個のソフトしか動かないOSならできなこともないでしょうが、複数のソフトを人とOSが勝手に動く環境ではとうてい管理できないでしょう。 上記については異論もあるでしょうが、現実無理です。 マルチコアのCPUを上手に使うにはまずOSが対応しており、使うソフトが対応(並列処理等)していないとだめです。 でもそれだとせっかくのマルチコアCPUがもったいないのでOSが対応していればCPUが自動でコアの使い方を決めてくれるようにはなっています。 >Windows、Linux共にアドバイスあれば教えて頂きたいと思います。 基本の考え方が同じです、ソフトの対応が問題になります。 私の答え 気にしないのが良いでしょう

chopperin
質問者

お礼

ご回答ありがとうございました。 参考になりました。

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.1

そこそこCPUを使っている状況であれば、通常は長時間の平均を取れば均等になるはずです。 WindowsもLinuxもプロセス毎に動くCPU(コア)を限定できます。類縁とかアフィニティと言います。 Windowsだとタスクマネージャのプロセスタブで、プロセスを右クリックして「関係の設定」で設定できます。プログラムから別プログラムを起動するときにもアフィニティを設定できたはずです。 Linuxだとtasksetコマンドで設定できます。プログラム中でセットするならsched_setaffinity, sched_getaffinity システムコールのようです。

chopperin
質問者

お礼

ご回答ありがとうございました。 参考になりました。

関連するQ&A