- - PR -
Redhat9 で LinuxThreads を採用するには
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-01 17:03
いつもお世話になっております。
別スレッドからお邪魔させていただきます。 現在、Redhat9(カーネル:2.4.20-8) にてスレッド方式 LinuxThreads を使用する設定を行っております。 あるサイトで LD_ASSUME_KERNEL=2.4.19 を環境変数に指定することで NPTL -> LinuxThreads を使用するようになるという記載があり試してみましたが LinuxThreads になっておりません。 確認方法としては Tomcat(5.0.28) を起動して、 スレッド(ps -aux | grep java で確認)が複数見えるか、 単一スレッドで見えるか判断しました。 (別に確認方法はございますでしょうか?) なお、RedhatES3(カーネル:2.4.21-4.ELsmp)にて同じ設定をしたところ 、スレッドが複数立ち上がり LinuxThreads にて動作していることが確認できました。 OSの違いなのか、カーネルの違いなのか、はたまた別も問題なのかわかりません。 [テスト環境1] RedhatES3 : 2.4.21-4.ELsmp -> OK [テスト環境2] Redhat9 : 2.4.20-8 -> NG 何か御存知の方お教えください。 [ メッセージ編集済み 編集者: ひじき 編集日時 2007-02-01 17:06 ] | ||||||||||||
|
投稿日時: 2007-02-01 17:29
こんにちは。
NPTL か LinuxThreads かは、ライブラリ libc.so や libpthread.so の実体によって変わります。 前者は /lib/tls 以下の soファイルが、後者は /lib/i686 以下の so ファイルが司ります。 動作している Tomcat がどちらのファイルを使っているか、/proc/(javaのPID)/maps ファイルを見れば見当がつきますので、確認してみては如何でしょう。 後、動作中のプロセスの環境変数 /proc/(PID)/environ も確認すると良いでしょう。 tr '\0' '\n' < /proc/(PID)/environ | grep LD_ASSUME_KERNEL あたりで。 ※pthreads(7)によれば、getconfを使うことで、どちらのスレッドモデルになるかが分かるそうで…。 [ メッセージ編集済み 編集者: angel 編集日時 2007-02-01 17:32 ] | ||||||||||||
|
投稿日時: 2007-02-01 18:26
御返答ありがとうございます。勉強になります。
早速確認してみようと思います! | ||||||||||||
|
投稿日時: 2007-02-01 20:03
以下コマンドの実行結果です。
[webadmin@xxxxx webadmin]$ view /proc/25424/maps 1 08048000-08053000 r-xp 00000000 03:02 1379379 /usr/local/j2sdk1.4.2_13/bin/java 2 08053000-08055000 rw-p 0000a000 03:02 1379379 /usr/local/j2sdk1.4.2_13/bin/java 3 08055000-0943e000 rwxp 00000000 00:00 0 4 40000000-40015000 r-xp 00000000 03:07 523266 /lib/ld-2.3.2.so 5 40015000-40016000 rw-p 00014000 03:07 523266 /lib/ld-2.3.2.so 6 40016000-40017000 rw-p 00000000 00:00 0 7 40017000-4001d000 r-xp 00000000 03:02 2003085 /usr/local/j2sdk1.4.2_13/jre/lib/i386/native_threads/libhpi.so 8 4001d000-4001f000 rw-p 00005000 03:02 2003085 /usr/local/j2sdk1.4.2_13/jre/lib/i386/native_threads/libhpi.so 9 4001f000-40023000 rw-s 00000000 03:05 160002 /tmp/hsperfdata_webadmin/25424 10 40023000-40026000 r--s 00000000 03:02 493094 /usr/local/j2sdk1.4.2_13/jre/lib/ext/dnsns.jar 11 40026000-40033000 r-xp 00000000 03:07 605030 /lib/i686/libpthread-0.10.so 12 40033000-40036000 rw-p 0000d000 03:07 605030 /lib/i686/libpthread-0.10.so 13 40036000-40076000 rw-p 00000000 00:00 0 14 40076000-40078000 r-xp 00000000 03:07 523277 /lib/libdl-2.3.2.so 15 40078000-40079000 rw-p 00002000 03:07 523277 /lib/libdl-2.3.2.so 16 40079000-401aa000 r-xp 00000000 03:07 605026 /lib/i686/libc-2.3.2.so 17 401aa000-401ad000 rw-p 00130000 03:07 605026 /lib/i686/libc-2.3.2.so 18 401ad000-401b0000 rw-p 00000000 00:00 0 19 401b0000-40780000 r-xp 00000000 03:02 558548 /usr/local/j2sdk1.4.2_13/jre/lib/i386/server/libjvm.so 20 40780000-407db000 rw-p 005cf000 03:02 558548 /usr/local/j2sdk1.4.2_13/jre/lib/i386/server/libjvm.so 21 407db000-407f0000 rw-p 00000000 00:00 0 22 407f0000-40802000 r-xp 00000000 03:07 523281 /lib/libnsl-2.3.2.so 23 40802000-40803000 rw-p 00011000 03:07 523281 /lib/libnsl-2.3.2.so 24 40803000-40805000 rw-p 00000000 00:00 0 25 40805000-40826000 r-xp 00000000 03:07 605028 /lib/i686/libm-2.3.2.so 26 40826000-40827000 rw-p 00020000 03:07 605028 /lib/i686/libm-2.3.2.so 27 40827000-40834000 r-xp 00000000 03:02 1839200 /usr/local/j2sdk1.4.2_13/jre/lib/i386/libverify.so 28 40834000-40836000 rw-p 0000c000 03:02 1839200 /usr/local/j2sdk1.4.2_13/jre/lib/i386/libverify.so 29 40836000-40841000 r-xp 00000000 03:07 523287 /lib/libnss_files-2.3.2.so 30 40841000-40842000 rw-p 0000a000 03:07 523287 /lib/libnss_files-2.3.2.so 31 40842000-4085e000 r-xp 00000000 03:02 1839201 /usr/local/j2sdk1.4.2_13/jre/lib/i386/libjava.so 32 4085e000-40860000 rw-p 0001b000 03:02 1839201 /usr/local/j2sdk1.4.2_13/jre/lib/i386/libjava.so 33 40860000-4086e000 r-xp 00000000 03:02 1839203 /usr/local/j2sdk1.4.2_13/jre/lib/i386/libzip.so 34 4086e000-40870000 rw-p 0000d000 03:02 1839203 /usr/local/j2sdk1.4.2_13/jre/lib/i386/libzip.so 35 40870000-40967000 r--s 00000000 03:02 591601 /usr/local/jakarta-tomcat-5.0.28/common/endorsed/xercesImpl.jar 36 40967000-40986000 r--s 00000000 03:02 591602 /usr/local/jakarta-tomcat-5.0.28/common/endorsed/xml-apis.jar 37 40986000-42334000 r--s 00000000 03:02 558601 /usr/local/j2sdk1.4.2_13/jre/lib/rt.jar
[webadmin@xxxxx webadmin]$ tr '\0' '\n' < /proc/25424/environ | grep LD_ASSUME_KERNEL LD_ASSUME_KERNEL=2.4.19 /proc/(javaのPID)/maps を見る限りでは /lib/i686/ があるため LinuxThreads にて動作しているように見えます。
ですが、次のコマンドを実行したら NPTL 0.29 と返ってきました。 [webadmin@xxxxx webadmin]$ getconf GNU_LIBPTHREAD_VERSION NPTL 0.29 ちなみに、RedhatES3でも同じことをやってみたら LinuxThreadsが返ってきました。 * getconf GNU_LIBPTHREAD_VERSION [テスト環境1] RedhatES3 : 2.4.21-4.ELsmp -> linuxthreads-0.10 [テスト環境2] Redhat9 : 2.4.20-8 -> NPTL 0.29 この結果をもとにどう判断してよいのか困っております。御教授ください。 [ メッセージ編集済み 編集者: ひじき 編集日時 2007-02-01 20:15 ] | ||||||||||||
|
投稿日時: 2007-02-03 15:50
ひじきさんの直前の書き込みにあるコマンド結果からは、Linux Threadsで動作していると判断できると思います。
なお、getconf に関しては、同じ環境変数条件で試す必要があります。 RedHat9 では NPTL がデフォルトですから、単に実行した場合には NPTL の表示があって然るべし、です。 “LD_ASSUME_KERNEL=2.4.19 getconf GNU_LIBPTHREAD_VERSION”のように環境変数をセットして実行した結果を見ましょう。( 恐らく linuxthreads の表示になるでしょう ) で、1プロセスしか見えない原因については…、なんとも思いつきません。 grep で引っかかっていない可能性も一応考えて、grep を通さずに全プロセス分の情報を見てみるか、親子関係の分かる pstree を使ってみるか、位しか。 お役に立てず申し訳ないですが。 | ||||||||||||
|
投稿日時: 2007-02-05 19:45
了解致しました。御教授いただきありがとうございます。
[webadmin@xxxxx webadmin]$ LD_ASSUME_KERNEL=2.4.19 getconf GNU_LIBPTHREAD_VERSION NPTL 0.29 と表示されました。何故でしょう。。。。
pstree -p で確認。 * LD_ASSUME_KERNEL 設定前 [webadmin@xxxxx webadmin]$ ps -aux | grep java webadmin 4525 87.6 6.9 723944 71212 pts/0 R 19:36 0:05 /usr/local/java/bin/java -server -Xms512m -Xmx512m -XX :NewRatio=1 -XX:SurvivorRatio=1 -verbose:gc -Djava.endorsed.d irs=/usr/local/tomcat/common/endorsed -classpath /usr/local/java/lib/tools.jar:/usr/lo webadmin 4537 0.0 0.0 4576 664 pts/0 S 19:36 0:00 grep java [webadmin@xxxxx webadmin]$ pstree -p 4525 java(4525) * LD_ASSUME_KERNEL 設定後 [webadmin@xxxxx webadmin]$ ps -aux | grep java webadmin 4597 96.0 5.7 721684 59336 pts/0 R 19:40 0:03 /usr/local/java/bin/java -server -Xms512m -Xmx512m -XX :NewRatio=1 -XX:SurvivorRatio=1 -verbose:gc -Djava.endorsed.d irs=/usr/local/tomcat/common/endorsed -classpath /usr/local/java/lib/tools.jar:/usr/lo [webadmin@xxxxx webadmin]$ pstree -p 4597 java(4597)---java(4598)-+-java(4599) |-java(4600) 中略 |-java(4641) `-java(4642) 設定後は子プロセスまで表示されました。 ps では何故見えないのでしょう...(なぞ) とりあえずLinuxThreadsになっているようですのであまり深追いしないでおきます... ありがとうございました。 |
1