2011-02-26 40 views
4

4つのプロセッサを搭載したクアッドコアサーバー上で実行されている1つのカスタマーサイトで、トランザクション集中的な処理が行われています。このプロセスは、利用可能なすべてのコアを利用するように設計されています。このインストールでは、入力キューを16分の1に分け、キューの各部分をコアに割り当てます。それはうまく動作し、ボックス上の取引量に追いついています。CPUの使用率とスレッド

ボックスのCPU使用率を見ると、33%を超えることはありません。現在、既存顧客の2倍以上の新規顧客を獲得しました。私たちの中には、CPU使用率が最大使用率を下回っているため、同じ設定を使用する必要があると主張している人もいます。

cpu利用率とトランザクション処理速度の間には直接的な相関関係はなく、基礎となるソフトウェアモジュールのロジックは利用可能なコア数に基づいているため、使用可能なコア数新しいクライアントが増加したトラフィック量に対応できるようにします。

このインスタンスに誰が正しいのかについての感想はありますか?

は、低CPU使用率の理由が最も重要である理解し、あなたの新しい顧客のための最適な構成を決定するには、

+3

ディスク使用率はどうですか?これらの取引はディスクに当たっていますか?もしそうなら、あなたはiostatを見てください。 – jterrace

+2

実稼働のようなハードウェアで実稼働のような負荷のもとで実行している間は、アプリケーションを適切にプロファイリングしてください。実際のボトルネックがどこにあるかがわかります。今はすべての推測です - それは無駄ではありませんが、必然的に推測です。 – 9000

答えて

2

、ありがとうございました。

可能性が非常に高い、その理由は、次のいずれかです。

  • あなたのプロセスは、メモリ帯域幅によって制限されます。この場合、マザーボードでサポートされていれば、より高速なRAMが役立ちます。可能であれば、処理中にアクセスされるデータの量を制限する再設計により、パフォーマンスが向上します。より多くのCPUコアを追加することは、パフォーマンスを向上させるために何もしません。

  • プロセスはディスクI/Oによって制限されます。より高速なディスク接続(SATAなど)を使用したり、SSDにアップグレードしたりすることもできますが、CPUの消費量は増えません。

  • プロセスは同期競合によって制限されます。この場合、コアを増やすためにスレッドを追加すると、生産性が低下することさえあります。この場合、アルゴリズムの再設計が役立ちます。これを言った、私も間違いなくCPUバウンドなプロセスは、特定のターボブーストの関連する例ので、最新のプロセッサ(コアi7プロセッサーなど)に、100%のCPU使用率を達成することができない状況で、タスクマネージャになるのを見てき持っ

100%未満を示します。

9000によれば、負荷がかかっているときにボトルネックが何であるかを知る必要があります。 Perfmonは、見つけ出すのに十分なデータを提供するかもしれません。

もう1つの考慮点:既存のマシンのプロセスをコアの一部に制限することができます(理論的には、理論上はこの制限のためにCPUがボトルネックにならないように少なくとも30%です)。 。そうでない場合、より多くのコアを追加してもパフォーマンスは向上しません。