0

この質問は非常に一般的であることを認識しており、Linux (RedHat 5) と Windows (2008 Server) のパフォーマンスの違いを調整する方法について、非常に一般的な意見を求めています。私は、まったく同じハードウェア上の Linux と Windows で約半分の容量で実行しているように見えるネットワーク オフのネットフロー パケットを処理している複数のサービスのコレクションである Java アプリケーションを持っています。このアプリケーションでは、パケットをソケットから取り出し、パケットに対して非常に単純な処理を実行し、圧縮された出力ファイルを書き出して、別の C++ アプリケーションによって下流で処理されます。

関連するプログラム内の領域: ソケットからパケットをプルする データベース アクセス (mysql 5.1.45) 大量のファイル I/O

最適化に関する限り、私は Linux の経験がほとんどありません。Windows とは異なる Linux でこれを最適化しようとするときに注意すべき点を誰かが指摘できれば幸いです。

また、他にどのような情報を提供できるかは完全にはわかりません。のように、私は多くの有用な情報を提供していないことを知っています.正しい方向に私を向ける質問をいただければ幸いです.

Linux と Windows で Java パフォーマンスのベンチマークを提供するユーティリティはありますか?

質問が意味をなさない場合、または有用な質問をするには情報が少なすぎる場合は、遠慮なく私を撃ってください。

ありがとう!

編集:すべてのjvm設定は同じです(関連するサービスの両方のケースでまったく同じラッパー構成ファイルを使用します)

編集:当面の間、この問題を表にしたいと思います。基本的なプロファイラーを実行して結果を比較することを除けば、これ以上の調査にこれ以上多くの時間を費やすことができませんでした。Linux と Windows の両方での結果は、NIC からパケットを引き出す際の大幅な遅延を除けば、ほぼ同じに見えます。なぜこれが事実なのか、それとも他のネットワーク状態に関連する異常なのかはまだわかりません. これをもう一度見る時間ができたら、もっと投稿します。

答えてくれてありがとう!

4

4 に答える 4

1

JVisualVMは、ターゲット プラットフォームですでに利用できる場合があります。例はここにあります。

于 2012-07-11T00:43:57.967 に答える
1

一見、Linux は同じハードウェアの Windows よりも遅くはありません。OS(またはOS上のJava)を非難する前に、他のことを見てみたいと思います:

  • ハードウェアは同じですか?プロセッサの仕様は同じですか?同じ量のメモリ?ディスクのスペックは同じ?

  • データベースに問題がありますか?Windows システムと Linux システムは同じデータベース インスタンスと通信していますか? 彼らは同じように話しているのですか?データベース インスタンスが異なる場合、それらは同じように構成されていますか? それらは調整されていますか?

この種の問題の解決策には、多くの場合、パフォーマンスの監視、プロファイリングなどを有効にし、システムの動作を分析してボトルネックがどこにあるかを確認することが含まれます。

IMO、(たとえば)NIOを使用すると問題が解決するという理論に時間を費やす(無駄にする)前に、ボトルネックが実際にどこにあるかを把握する必要があります。


Linux と Windows で Java パフォーマンスのベンチマークを提供するユーティリティはありますか?

私が知っているわけではありません。

于 2012-07-10T22:57:36.107 に答える
1

提案: シナリオに合ったプロファイリング ツールを見つけて、両方の環境で実行してください。

たとえば、Eclipse TFTP:

PS:

NIO に関する Affe の提案は良いものです。確かに、なぜパフォーマンスに差があるように見えるのかという疑問が生じます。ただし、まだ NIO を使用していない場合は、両方の環境にメリットがあります。私見では...

于 2012-07-10T22:53:56.247 に答える
1

パフォーマンスに影響を与える可能性のあるその他の事項: - JVM - 同じベンダーの JVM を使用していますか? 同じバージョン?どちらも 64 ビットまたは 32 ビットですか? - カーネルの問題: カスタム カーネルを実行していますか? プロセッサ用に正しくコンパイルされていますか? - Linux で CLI パフォーマンス ツール (top、ntop、iostat、vmstat) が教えてくれることは何ですか? たとえば、iostat の IO 待機時間が長い場合、ドライブの構成方法に問題がある可能性があります。

Java のパフォーマンスに影響を与える要因はたくさんあります。シンプルに始めて、逆方向に作業します。私の考えでは、単純な == メモリ ページや IO パフォーマンスなどの基本的な統計です。まったく同じコードを話している場合は、違いを特定し始めます (OS は明らかですが、他に何がありますか?)

于 2012-07-10T23:44:19.130 に答える