Index / Reload
合計が40%程度ですか。。。。。それほど、酷くメモリストールがおきているわけじゃないみたいですね。多いことは多いですが、通常のアプリケーションならこの程度は起こりえますので、問題ないレベルと言えます。となると、他に問題があるのか。。。直接見ないと余計混乱させちゃいそうです。役立たずですみません。
IA-64固有の話はなかったです。命令スケジューリングについての話は、一般論(例:Itaniumではとても重要)と、ごく簡単な概要だけでした:Scheduling- High level - code motion - Focus: loops- Before register allocation - 1st instruction scheduling phase - Avoid false dependency artifacts - Take advantage of many registers on Itanium- After low-level optimizations - 2nd instruction scheduling phase - Finalize the instruction order
> ポセさん初めまして。この測定は JavaVM の動的コンパイラの性能評価をですので、静的コンパイラは使いません。計測環境は CPU は 2-way 1.3GHz。パフォーマンスカウンターを取得しているのは自家製のツールです。(USER 側では) 単位 CPU サイクルに対して BE_L1D_FPU_BUBBLE_L1D・BE_EXE_BUBBLE(ALL)・合計のイベントが、Hotspot VM では5.23%, 34.7%, 40.0%、JRockit では 7.99%, 38.2%, 46.2% で発生しています。
> しゅどうさんJavaOne2004 の発表者は Kumar Shiv 氏と Joakim Dahlstedt 氏ですね。IA-64 向け最適化について何か言っていましたか?私は Kumar Shiv 氏が書いた ``Impact of JIT/JVM Optimizations on Java Application Performance'' という paper を持っているのですが、これは IA-32 向けの最適化の話しか載っていません。IA-64 でもアーキテクチャーの概略は同じだとは思うのですが、、、
> ぶぅさんへHotspot VM の IA-64 スケジューラーがタコなのは確かです。コンパイラは machine independent な部分が多くて、IA-64 向けの最適化はほとんどありません。ただ Hotspot VM が駄目な理由は GC アルゴリズムとして Exact GC を選択した影響が出ているのではないかと考えています。Exact GC はコード中に GC safe point をぶちぶち挟み込むので、最適化の可能な範囲が局所化してしまいます。あと、BEA JRockit に Intel の中の人も協力しているはずです。
あと、パフォーマンスモニタカウントツール(pfmon)をお持ちでしたら、実行時間(Real time)とBE_L1D_FPU_BUBBLE_L1D + BE_EXE_BUBBLE_ALLのイベントの値を取得して、教えてください。それと、CPUの周波数(1.5GHz?)ですね。それで、少しは原因が特定できるかもしれません。
ちなみに、コンパイラはどれをご使用ですか?IPCが1程度というのは、低すぎです。
JavaOneでのJRockit VMの発表スライドを、何枚かまとめてあります: 日記 6/30分 http://www.shudo.net/diary/2004jun.html#20040630アプリに応じて適切なconfigを選ぶ。configは20種類くらい用意してある。という辺りが興味深かったです。SPECjbb2000向けconfigが用意されてるのかもしれず。
先日のJavaOneでJRockit Virtual Machineについての講演がありまして、スピーカ2人のうち1人がIntelの人でした。The Performance Architecture of the BEA JRockit Virtual Machine for the JavaTM Platformhttp://www.javaone04.com/catalog/catalog/sessionDetail.jsp?SESSION_ID=10273
多分、スケジューラがダメなんでしょうね。JITの場合コンパイルにかけられる時間の制約が厳しいですから、スケジューリングの範囲を広げられないのかも。あるいはIntelのコンパイラ屋さんが手伝えば、もっと良くなるかな?
合計が40%程度ですか。。。。。
それほど、酷くメモリストールがおきているわけじゃないみたいですね。多いことは多いですが、通常のアプリケーションならこの程度は起こりえますので、問題ないレベルと言えます。
となると、他に問題があるのか。。。直接見ないと余計混乱させちゃいそうです。役立たずですみません。
IA-64固有の話はなかったです。
命令スケジューリングについての話は、一般論(例:Itaniumではとても重要)と、ごく簡単な概要だけでした:
Scheduling
- High level - code motion
- Focus: loops
- Before register allocation - 1st instruction scheduling phase
- Avoid false dependency artifacts
- Take advantage of many registers on Itanium
- After low-level optimizations - 2nd instruction scheduling phase
- Finalize the instruction order
> ポセさん
初めまして。
この測定は JavaVM の動的コンパイラの性能評価をですので、静的コンパイラは使いません。計測環境は CPU は 2-way 1.3GHz。パフォーマンスカウンターを取得しているのは自家製のツールです。
(USER 側では) 単位 CPU サイクルに対して BE_L1D_FPU_BUBBLE_L1D・BE_EXE_BUBBLE(ALL)・合計のイベントが、Hotspot VM では5.23%, 34.7%, 40.0%、JRockit では 7.99%, 38.2%, 46.2% で発生しています。
> しゅどうさん
JavaOne2004 の発表者は Kumar Shiv 氏と Joakim Dahlstedt 氏ですね。IA-64 向け最適化について何か言っていましたか?
私は Kumar Shiv 氏が書いた ``Impact of JIT/JVM Optimizations on Java Application Performance'' という paper を持っているのですが、これは IA-32 向けの最適化の話しか載っていません。
IA-64 でもアーキテクチャーの概略は同じだとは思うのですが、、、
> ぶぅさんへ
Hotspot VM の IA-64 スケジューラーがタコなのは確かです。
コンパイラは machine independent な部分が多くて、IA-64 向けの最適化はほとんどありません。
ただ Hotspot VM が駄目な理由は GC アルゴリズムとして Exact GC を選択した影響が出ているのではないかと考えています。Exact GC はコード中に GC safe point をぶちぶち挟み込むので、最適化の可能な範囲が局所化してしまいます。
あと、BEA JRockit に Intel の中の人も協力しているはずです。
あと、パフォーマンスモニタカウントツール(pfmon)をお持ちでしたら、実行時間(Real time)と
BE_L1D_FPU_BUBBLE_L1D + BE_EXE_BUBBLE_ALLのイベントの値を取得して、教えてください。それと、CPUの周波数(1.5GHz?)ですね。
それで、少しは原因が特定できるかもしれません。
ちなみに、コンパイラはどれをご使用ですか?
IPCが1程度というのは、低すぎです。
JavaOneでのJRockit VMの発表スライドを、何枚かまとめてあります:
日記 6/30分
http://www.shudo.net/diary/2004jun.html#20040630
アプリに応じて適切なconfigを選ぶ。
configは20種類くらい用意してある。
という辺りが興味深かったです。
SPECjbb2000向けconfigが用意されてるのかもしれず。
先日のJavaOneでJRockit Virtual Machineについての講演がありまして、スピーカ2人のうち1人がIntelの人でした。
The Performance Architecture of the BEA JRockit Virtual Machine for the JavaTM Platform
http://www.javaone04.com/catalog/catalog/sessionDetail.jsp?SESSION_ID=10273
多分、スケジューラがダメなんでしょうね。JITの場合コンパイルにかけられる時間の制約が厳しいですから、スケジューリングの範囲を広げられないのかも。あるいはIntelのコンパイラ屋さんが手伝えば、もっと良くなるかな?