アプリケーションが I/O を待機している時間を収集したいと考えています。この Java アプリケーションを ubuntu/linux で実行しています。yourkit プロファイラーを使用しています。I/O 時間を測定するための他のプロファイリング ツールがあるかどうかを提案します。
3 に答える
Youtkit は、アプリケーションにズーム顕微鏡を組み込むのに最適です。このような状況では、外部から巨視的なビューを見て、非常に大まかな測定を行って、CPU バウンドか IO バウンドかを確認することもしばしば有効です。
そうでなければ「空」でフルスロットルで実行されているアプリが 10% の CPU しか使用していない場合 (さらに言えば、IO を待っているのは約 90% です)、必要に応じて IO 側で何ができるかを調査することは非常に理にかなっています。スループットを向上させます。一方、すべてのコアが 90% を超えて実行されている場合は、アプリが CPU バウンドであるため、そこまで多くは得られません。コマンド top、iostat、および vmstat を使用すると、これらの大まかな見積もりを得ることができます。
strace を使用すると、ファイルの開閉回数、読み取り操作の実行回数などについての洞察を得ることができます。この場合、grep または perl を使用して、このツールが生成する山のようなデータを選別する方法も学びます。
メモリがどの程度効率的に使用されているかに注目し、インフラストラクチャを理解してください。vmstat で多数のブロックがスワップインおよびスワップアウトされていることがわかった場合は、それがゼロになるまでメモリを再調整するか、他のすべての努力が比較的役に立たなくなります。
あなたの焦点がレイテンシー、ジッター、スループットなどであるかどうかは、あなたの質問からは明らかではありませんが、この種の比較的迅速な概算は、顕微鏡でどこを見ればよいかを判断するのに役立ちます。
RotateRight/ZoomまたはLTProfを使用できます。または、高精度を求めていない場合は、lsstackを使用して 10 または 20 のスタック サンプルを取得し、I/O の割合を確認するか、Java で同等のことを行うことができます。
strace
システム I\O 呼び出しを監視するために使用します。man
紹介ページを読んでください。