0

私はWindowsサーバーのベンチマークを行っています-議論のためにparseText()と呼ばれる単一のメソッドを持つWebアプリケーション。

1 つのインスタンスを実行するのにかかる時間は 10 ミリ秒未満ですが、10 の同時リクエストまで増やすと、処理が大幅に遅くなります。リクエストごとに 1 秒と言います。

CPU は固定されておらず、十分なメモリが利用可能です。だから私はボトルネックが何であるかについて混乱しています。

1 つ考えられたのは、メモリ レイテンシまたはバス帯域幅が問題である可能性があるというものでしたが、どの perfmon カウンターがこのようなことを最も適切に示しているかはわかりません。

問題に光を当てる可能性があることを確認するために、誰かがいくつかのカウンターを提案できますか?

4

1 に答える 1

1

私の最初の推測は、ディスク IO またはミューテックスです。

ディスクの場合、物理ディスクを追加してみてください。読み取りバイト/秒と書き込みバイト/秒、さらに読み取り/秒書き込み/秒 (つまり、読み取りと書き込みの合計バイト数と実際の io 操作数の両方) が急増していないことを確認してください。熱心な場合は、キューの長さを追加することもできます。10Mb/秒または多数の小さな IO などの大きなシフトを探しています。

メモリ割り当ての副作用である可能性があるミューテックスの場合 (非常に頻繁なメモリ割り当てがこれを引き起こす可能性があります)、「システム」とコンテキスト スイッチ/秒、およびおそらくシステム コール/秒を追加してみてください。これらは一般的な負荷から少し跳ね返るので、まず感触をつかみ、次に何が起こるかを見てください。

メモリ帯域幅が原因であると思われる場合 (つまり、FSB を使い果たす)、perfmon でそれを測定できないと思います。vtune のようなものに切り替える必要があります。これは、オプションである場合とそうでない場合があります。メイン メモリの帯域幅を使い果たす例としては、大量のメモリを割り当ててから、各バイトをある値に初期化し、これを大量に実行するプログラムがあります。これが自分の問題だと思われる場合は、コード プロファイラやその他のツールを使用してルーチンを分離する必要があるかもしれませんが、プログラムの外にいて観察するだけでは困難です。

于 2013-06-08T03:52:06.960 に答える