こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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

投稿日時 - 2013-12-19 20:55:01

QNo.8393219

困ってます

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>これらの挙動を自分で管理できないものでしょうか?
1個のソフトしか動かないOSならできなこともないでしょうが、複数のソフトを人とOSが勝手に動く環境ではとうてい管理できないでしょう。
上記については異論もあるでしょうが、現実無理です。


マルチコアのCPUを上手に使うにはまずOSが対応しており、使うソフトが対応(並列処理等)していないとだめです。

でもそれだとせっかくのマルチコアCPUがもったいないのでOSが対応していればCPUが自動でコアの使い方を決めてくれるようにはなっています。

>Windows、Linux共にアドバイスあれば教えて頂きたいと思います。
基本の考え方が同じです、ソフトの対応が問題になります。

私の答え 気にしないのが良いでしょう

投稿日時 - 2013-12-20 16:03:18

お礼

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

投稿日時 - 2014-01-03 15:12:09

ANo.1

そこそこCPUを使っている状況であれば、通常は長時間の平均を取れば均等になるはずです。

WindowsもLinuxもプロセス毎に動くCPU(コア)を限定できます。類縁とかアフィニティと言います。
Windowsだとタスクマネージャのプロセスタブで、プロセスを右クリックして「関係の設定」で設定できます。プログラムから別プログラムを起動するときにもアフィニティを設定できたはずです。

Linuxだとtasksetコマンドで設定できます。プログラム中でセットするならsched_setaffinity, sched_getaffinity システムコールのようです。

投稿日時 - 2013-12-19 21:17:47

お礼

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

投稿日時 - 2014-01-03 15:11:39

あなたにオススメの質問