- PR -

デュアルCPU上のマルチスレッド動作について

1
投稿者投稿内容
ともみ
会議室デビュー日: 2004/09/03
投稿数: 11
投稿日時: 2005-02-21 14:48
マルチスレッド構成で書かれたあるプログラムをデュアルCPU上で動作させる場合、
1CPUにはスレッド単位で処理があてられるのでしょうか?
あるいは、1CPUにはプロセス単位であてられ、そのプロセスで生成されたスレッドは
全てそのCPU上でのみ動作してしまうのでしょうか?

参考↓
http://pcweb.mycom.co.jp/special/2002/dual/006.html

【動作環境】
OS  :Linux2.4.28
CPU :Intel Xeon x 2

以上よろしくお願い致します。
kzymt
会議室デビュー日: 2005/02/21
投稿数: 7
投稿日時: 2005-02-21 15:08
 マルチスレッドのプログラムは通常スレッド単位でCPUに割当てられるはずです。
でないと、マルチスレッドの意味ないですよね(^^;
ともみ
会議室デビュー日: 2004/09/03
投稿数: 11
投稿日時: 2005-02-21 17:24
回答ありがとうございます −> kzymtさん

ただ、私の理解が悪いために確認させてください。

> マルチスレッドのプログラムは通常スレッド単位でCPUに割当てられるはずです。
> でないと、マルチスレッドの意味ないですよね(^^;

同一プロセス下で生成された複数のスレッドは、デュアルCPU環境の場合、
CPU1とCPU2それぞれに振り分けられるということですよね?

スレッド単位でCPUに割り当てられるのはわかりますが、デュアルCPU環境の場合、
同一プロセス下で生成された複数のスレッドに限っては、片方のCPUのみにしか
割り当てられないとか決まってないのかなと思いまして
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-02-21 18:29
引用:

ともみさんの書き込み (2005-02-21 17:24) より:
同一プロセス下で生成された複数のスレッドは、デュアルCPU環境の場合、
CPU1とCPU2それぞれに振り分けられるということですよね?


ネィティブスレッドの場合は、確かにCPU1とCPU2それぞれに振り分けられます。
Javaや.Netの様な仮想マシン上の仮想スレッドの場合、単独のCPU上でしか動作しない場合もります。この辺りはVMの実装次第だと思いますが、単独CPU上でしか動作しない実装のほうが多いんじゃないでしょうか?


_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-02-21 18:47
引用:

Javaや.Netの様な仮想マシン上の仮想スレッドの場合、単独のCPU上でしか動作しない場合もります。この辺りはVMの実装次第だと思いますが、単独CPU上でしか動作しない実装のほうが多いんじゃないでしょうか?


.NET のことは知りませんが、現在では、主要な OS の JavaVM 実装のほとんどすべてが native thread (OS上のスレッドとJava上のスレッドが 1対1で対応する) になっています。仮想スレッドと言われているのは Java で green thread と呼ばれているものだと思いますが、もうほとんど使われていないんじゃないでしょうか。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-02-22 01:03
引用:

kzymtさんの書き込み (2005-02-21 15:08) より:
 マルチスレッドのプログラムは通常スレッド単位でCPUに割当てられるはずです。
でないと、マルチスレッドの意味ないですよね(^^;


メモリを共有して節約できるとか、IPCの仕組みを使わなくても
協調動作できるとか
ともみ
会議室デビュー日: 2004/09/03
投稿数: 11
投稿日時: 2005-02-22 09:33
皆様、回答ありがとうございます。
1プロセス下で生成されたスレッドはCPU1とCPU2に振り分けられるのですね。

現在、あるマルチスレッドプログラム(ネイティブコードで書かれてます)を効率良く
処理できるマシンを選定中なのですが、おかげさまでデュアル環境にする価値があることが
わかりました。ありがとうございました。

1

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