- - PR -
JavaスレッドとLinuxプロセス
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-12-13 21:23
こんにちは、カーニーです。
LinuxのスレッドとJavaに関して教えて下さい。 -- 環境 -- Red Hat Enterprise Linux 3.0 ES J2SE 1.4.2 ---------- Linux(カーネル2.4)ではスレッドはプロセスと同様に扱われるので、psコマンドで各スレッドが見える、と聞いています。 そこで次のようなコードを書いてみました。 ManyThreads.java
java ManyThreads <起動スレッド数> <ループ回数> で実行するんですが、実行中にpsで見ても、javaプロセスが1つしか見えないのですよ。 何か勘違いしておりますかね? 実は問題にしたいのはTomcatアプリなんですが、Red Hat Enterprise Linux 3.0 WS環境でjavaプロセスがたくさん起動しているという問題が報告されてまして、ところが自分のところのESでは全然それが再現しなくて困っています。 何かご存知の方がいれば、教えてくださいませ。 よろしくお願いします。 [修正] AS -> ES [ メッセージ編集済み 編集者: カーニー 編集日時 2004-12-14 16:15 ] | ||||
|
投稿日時: 2004-12-14 15:36
ps に -T とか H オプションを付けてますか ? | ||||
|
投稿日時: 2004-12-14 15:54
NTPL が有効(デフォルト)になっていると一つのプロセスしか見えないかもしれません。RHEL では独自にカーネル2.4系に NTPL を移植していますので。
LinuxThreads を使うようにすれば ps で見えるかと思います。 マルチプロセッサのマシンであれば積極的に LinuxThreads を使うメリットはあまりありませんが。 [ メッセージ編集済み 編集者: インギ 編集日時 2004-12-14 15:57 ] | ||||
|
投稿日時: 2004-12-14 16:10
はしもとさん、インギさん、ご返答どうもありがとうございます。
手元に、 Red Hat Enterprise Linux 3.0 ES Red Hat Enterprise Linux 3.0 WS の両方を用意できたので実験したところ、WSのほうではちゃんと(?)各スレッドがpsコマンドで見えました! インギさんのおっしゃるNTPLってやつの差ですかね? いずれにしてもプログラムに問題があるわけではないようなので一安心です。 どうもありがとうございました。 [修正] うちにあるのは"AS"ではなく、"ES"でした。初回質問もまとめて訂正。 [ メッセージ編集済み 編集者: カーニー 編集日時 2004-12-14 16:14 ] [ メッセージ編集済み 編集者: カーニー 編集日時 2004-12-14 16:17 ] | ||||
|
投稿日時: 2004-12-14 16:32
なるほど。おそらく ES ではマルチプロセッサ環境でスループットが向上するように NTPL がデフォルトで有効になっているんでしょうね。
|
1