「シンプルなJavaアプリ」に関しては、以前は似たようなことをしていました。私の努力は、特定のJavaアプリケーションのパフォーマンスをテストするのではなく、Java VM(仮想マシン-「JVM」)のプロファイリングに集中していました。焦点は、ホスティングオペレーティングシステムの機能のテストにありました-演習:
- CPU
- メモリー
- オペレーティング·システム
- 仮想化されている場合、サーバーVM(JVMではない)自体-上記のすべての仮想化コンポーネントと物理コンポーネントの両方を含みます。
- ディスクやネットワークなどの外部要因をほとんど無視します。
私がこれについて調べた解決策は次のとおりです。
SciMarkは、科学および工学アプリケーションで発生する数値コードのパフォーマンスを測定する複合Javaベンチマークです。これは、FFT、ガウス・ザイデル緩和、スパース行列乗算、モンテカルロ積分、および密なLU分解の5つの計算カーネルで構成されています。
これらのカーネルは、基盤となるJVM/JITがこれらのタイプのアルゴリズムを利用するアプリケーションでどの程度うまく機能するかを示すために選択されます。問題のサイズは、メモリ階層の影響を分離し、内部のJVM / JITおよびCPUの問題に焦点を当てるために、意図的に小さく選択されています。ベンチマークのより大きなバージョン(SciMark 2.0 LARGE)は、キャッシュ不足の問題サイズでメモリサブシステムのパフォーマンスに対応します。
いくつかの計算カーネルを測定し、およそMflops(1秒あたり数百万の浮動小数点演算)で複合スコアを報告します。
やや時代遅れ(2004年)ですが、SciMarkは依然として非常に効果的であるように見えます。
各テストの実行には、約30秒かかります。
SPECjvm2008(Java仮想マシンベンチマーク)は、Javaランタイム環境(JRE)のパフォーマンスを測定するためのベンチマークスイートであり、コアJava機能に焦点を当てたいくつかの実際のアプリケーションとベンチマークが含まれています。このスイートは、単一のアプリケーションを実行するJREのパフォーマンスに重点を置いています。これは、ハードウェアプロセッサとメモリサブシステムのパフォーマンスを反映していますが、ファイルI / Oへの依存度が低く、マシン間のネットワークI/Oは含まれていません。SPECjvm2008ワークロードは、さまざまな一般的な汎用アプリケーションの計算を模倣しています。これらの特性は、このベンチマークがクライアントシステムとサーバーシステムの両方で基本的なJavaパフォーマンスの測定に適用できるという意図を反映しています。
SPECは、Javaのユーザーエクスペリエンスも重要であると考えています。したがって、スイートにはスタートアップベンチマークが含まれており、baseと呼ばれる必須の実行カテゴリがあります。これは、すぐに使用できるパフォーマンスを向上させるために、JVMを調整せずに実行する必要があります。
SPECjvm2008ベンチマークのハイライト
- 実際のアプリケーション(derby、sunflow、javacなど)と領域に焦点を当てたベンチマーク(xml、シリアル化、暗号化、scimarkなど)を活用します。
- また、JREを実行するコンテキストでオペレーティングシステムとハードウェアのパフォーマンスを測定します。
SciMarkとは異なり、SPECjvm2008は、スイートを完全に実行するのにはるかに長い時間がかかります-2時間強かかります。
ネットワークをテストするために、Linux / Windows/etcの両方で利用可能なiperfのようなものを使用します。
ディスクのパフォーマンスをテストするために、この背後にある科学全体があり、使用しているオペレーティングシステムがわからない限り、具体的な答えを出すことはできません。ただし、たとえばLinuxを使用している場合は、これを確認します。