5

アプリケーションのパフォーマンスとインテリジェンスに関連する質問があります。

3 台の異なる構成のマシンで実行すると、ウィンドウ サービスが作成されました。マシンの適切なリソース (CPU とメモリ) を活用してほしい。

マシン 1(M1) には 1 GB RAM のシングル コアがあるとします。

マシン 2 (M2) には、2 GB RAM の 2 つのコアがあります。

Machine3 (M3) には、4 GB の RAM を備えた 4 つのコアがあります。

私のサービスが実行されると、適切なリソースを利用する必要があります。たとえば、マシンの CPU 使用率が 1% の場合、ユーザーは 50% 以上使用する必要があります。すでに 50% の場合は、30% のみを使用します。ラムもそう。ただし、90% などの制限を超えることはありません。

基本的に、私はマルチスレッド サービスを作成しましたが、これは現在、マシン リソースを気にせず、それを利用し続けています。私はその中にこの知性を含めたいと思っています。

あなたのアイデアで私を助けてください。

ありがとう

4

2 に答える 2

4

Archeg が言ったように、プロセッサの数に基づいて、スレッド数を増やすことができます。しかし、CPU アクティビティに基づいてスレッド数を増やすことは、間違った方法です。

このように見てください。CPU スケジューラは、ミリ秒単位でタイムスロットを割り当てます。他のプロセスからのシステムへの負荷が低い場合、プロセスにより多くの時間が与えられます。限目。プロセスが多い場合、タイムスロットの頻度は低くなります。必要以上のスレッドでスラッシュしないでください。

あなたがしなければならないことは、あなたが何をしたいかを決めることです。サービスは時間に敏感ですか? その場合、負荷の高いシステムでは操作に使用できる CPU 時間が少なくなり、アイドル状態のシステムでは同じ (たとえば 1 秒) 以内により多くの CPU 時間を使用できます。注意: サービスが I/O を行う場合、サービス自体が使用できる CPU の量を調整している可能性があります。

RAM を使用すると、システムにどれだけの空き RAM があるかを考えて、アルゴリズムをより少ない処理またはより高速な処理を使用するアルゴリズムに切り替えることができますが、より多くのメモリが必要です (またはその逆)。

要点は、この種のインテリジェントなスケーリングを行うための「サービスに依存しない」方法は、より優れたスケジューラー以外にないということです (これは、多くの賢い人々が何年にもわたって検討してきたことです)。ただし、現在のシステムの制約を認識し、それに応じて動作を変更するサービスを作成することはできます。

于 2012-04-19T19:55:34.370 に答える
2

パフォーマンスを考慮して設計すれば、高性能 .NET アプリケーションの構築は非常に簡単になります。プロジェクトの最初からパフォーマンス計画を立てるようにしてください。ビルド後のステップとしてパフォーマンスを追加しようとしないでください。また、反復間の一定の測定を組み込んだ反復開発プロセスを使用します。

ベスト プラクティスの設計ガイドラインに従うことで、高性能アプリケーションを作成できる可能性が大幅に高まります。

次の設計ガイドラインを考慮してください。

  • セキュリティとパフォーマンスを考慮してください。
  • アプリケーションを論理的に分割します。
  • 親和性を評価します。
  • 往復を減らします。
  • 長時間実行されるタスクをブロックしないようにします。
  • キャッシングを使用します。
  • 不必要な例外は避けてください。
于 2012-04-25T05:59:28.813 に答える