1

システムの負荷が増加しているとき、実行キューの待機時間は約10000usecsであることがわかりました。アプリケーションは8つのJVMインスタンスを開始し、各インスタンスは多くのスレッドを開始し、プラットフォームはLinuxです。

このようなマルチスレッドアプリケーションの実行キューの待機時間を調整することについての一般的なアイデアはありますか?

4

2 に答える 2

0

10 ミリ秒の実行キューの待ち時間はそれほど高くありません。最も簡単な方法は、実行しようとしているスレッドの数を減らすか、システムにより多くのハードウェア (または複数のボックス) を与えることです。効率的に実行したいスレッドがたくさんある場合、Linux でできることは限られています。

于 2013-01-02T11:42:24.737 に答える
0

実行キューのレイテンシーは、使用可能な CPU に対する実行可能な (すぐに実行できる) スレッドの比率によって異なります。

使用可能な CPU よりも多くの実行可能なスレッドがある場合、つまり負荷平均が CPU の数を上回っている場合、CPU が使用可能になるまで、つまり他のスレッドの一部がブロックまたはプリエンプトされるまで、一部のスレッドは必然的に待機する必要があります。

したがって、実行キューのレイテンシーを改善するには、使用可能な CPU の数を増やすか、CPU で競合するスレッドの数を減らす必要があります。

アプリケーションが CPU を集中的に使用する場合、CPU の競合はさらに激しくなります。JVM がガベージ コレクションに多くの時間を費やしていないかどうかを調査する必要があります。CPU の少ないマシンで複数の JVM を実行する場合、多くの JVM が同時にガベージ コレクションを実行することで、実行キューのレイテンシのロング テールを簡単に増やすことができます。この場合は、スレッドの数を増やして、個別の JVM の数を減らしてみてください。

于 2013-01-02T11:42:49.457 に答える