ソフトウェアの最小要件を評価する方法はありますか? たとえば、アプリケーションが必要とする RAM の最小量をどのように見つければよいのでしょうか?
ありがとう!
ソフトウェアの最小要件を評価する方法はありますか? たとえば、アプリケーションが必要とする RAM の最小量をどのように見つければよいのでしょうか?
ありがとう!
ここでは、プロファイラーは役に立ちません。データ構造のサイズを見積もることもできません。
プロファイラーは、コードが最も多くの CPU 時間を消費している場所を確かに教えてくれますが、パフォーマンスの目標を達成できていないかどうかはわかりません。たとえば、特定のシステムでのアプリケーションのパフォーマンスにユーザーが満足するかどうかはわかりません。
データ構造のサイズと、一度に割り当てられる可能性のある数を計算するだけでは、時間の経過に伴うメモリ使用量の正確な全体像はまったく得られません。その理由は、メモリ使用量は、アプリケーションが行う I/O の量、アプリケーションが使用する OS サービス、そして最も重要なこととして、アプリケーションがメモリを使用する方法の一時的な性質など、他の多くの要因によって決定されるためです。
最小要件を理解する最も効果的な方法は、
CPU や、ディスク、ネットワーク、GPU などの他のコンポーネントでも同じことができます。
また、ここには単純な答えがないことにも注意してください。最小要件の設定で効果的な仕事をすることは実際の仕事です。これは、アプリケーションが何らかのプラットフォームの側面に参加型である場合に特に当てはまります。
他にも要因があります。たとえば、メモリを大量に消費している、または CPU ピッグの可能性がある別のアプリケーションをユーザーが開くまで、ある構成でアプリが正常に動作する場合があります。ユーザーが 1 つのアプリケーションしか開いていないことはめったにありません。
これは、最小要件を指定することに加えて、ユーザーの期待を設定する効果的な仕事をしなければならないことを意味します。つまり、アプリケーションがいつうまく機能し、いつうまくいかないか、パフォーマンスに影響を与える要因は何かを説明します。
[1]: http://msdn.microsoft.com/en-us/library/ms751538.aspx強力なテキスト
理想的には、対象ユーザーに基づいてソフトウェアの最小要件を決定し、開発中にその構成でソフトウェアをテストして、満足のいくエクスペリエンスが提供されることを確認します。
ソフトウェアを実行しているシステムを見て、アプリケーションによって消費されているメモリの量を確認し、それを使用して消費されているメモリの量を導き出すことができます。CPU はもう少し複雑です。CPU 要件をモデル化することもできますが、これを正確に行うのは難しい場合があります。
ただし、最終的には、対象のベース システムでアプリをテストする必要があります。
アプリケーションが使用するデータ構造を考慮して、通常の使用でどのくらいのスペースを占めるかを見積もります。その見積もりを使用して、さまざまなシナリオ (つまり、さまざまなターゲット オペレーティング システム、さまざまな仮想メモリ設定など) で見積もりをテストするために、多数のマシン (仮想または物理) をセットアップします。
次に、さまざまなシナリオでアプリケーションのパフォーマンスを測定します。最小設定は、パフォーマンスが最も低いマシンですが、それでも許容範囲内です。
ソフトウェアのストレス テスト中にパフォーマンス プロファイラーを使用してみてください。
仮想化を使用して、仮想マシンでさまざまな量の RAM を使用して代表的なテスト スイートを繰り返し実行できます...スワッピングが原因でパフォーマンスが許容レベルを下回った場合は、メモリ要件が見つかりました。