2012-03-03 3 views
4

私はGlassfishの下にWorkManager + ThreadPoolのを持っている:JavaのTIMED_WAITに3000スレッドがある場合、CPUの影響は何ですか?このような、TIMED_WAITを使用しています

p: thread-pool-1; w: 2018 (TIMED_WAITING):

at java.lang.Object.wait(Native Method) 
at com.sun.corba.ee.impl.orbutil.threadpool.WorkQueueImpl.requestWork(WorkQueueImpl.java:171) 
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:528)` 

のは(つまり、これまでに追加された作業noです)のスレッドが何もしないことを一瞬仮定しましょう。プールに100スレッド、プールに3000スレッドの間にCPU使用率に違いがありますか?

私たちのテストでは表示されないことが示されていますが、確認したいと思います。

+0

質問する前にそれをテストするために+1 – artbristol

答えて

4

これはOS固有のものだと思います。 NPTL(Native Posix Threading Library)を搭載したLinuxサーバのJavaサーバソフトウェアでは何千ものスレッドが実行されていますが、ほとんどの時間は「スリープ」しており、CPU使用率は決して高くはありませんでした。通常は5〜20%(単一の4コアCPU)です。私は現在何の参照も見つけられませんでしたが、私はNPTLでそれを読んでいると確信しています。スリープスレッドのオーバーヘッドはごくわずかです。

+0

これはJava 5のCentOS 5.3 64ビットです。私の理解から、NPTLがありますし、問題の多くは正しくありませんか? – Yon

+0

私が知る限り正しいです。このページでは、システムがNPTLを持っているかどうかをチェックし、CentOS 4にNPTLを使用しているかどうかを調べる方法を説明しています(新しいものを使用していない場合は驚きます):http://www.ducea.com/2006/05/24/determine-nptl-version/AFAIK、2.6カーネルのLinuxディストリビューションはデフォルトでNPTLを持つべきです。 – esaj

+0

これに基づいて、NPTL 2.5を使用しています。だからうまくいくと思います。 – Yon

関連する問題