如何在运行队列延迟太大时调整Linux性能?

时间:2013-01-02 11:25:17

标签: java linux jvm performance

我观察到当系统加载上升时,运行队列延迟大约为10000 usecs。该应用程序启动8个JVM实例,每个实例启动大量线程,平台为Linux。

我想知道是否有关于调整此类多线程应用程序的运行队列延迟的一般想法?

2 个答案:

答案 0 :(得分:0)

10 ms的运行队列延迟不是那么高。最简单的方法是减少尝试运行的线程数,或者为系统提供更多硬件(或多个盒子)理想情况下,您希望拥有的线程少于您拥有的核心数。如果你有很多想要高效运行的线程,那么Linux只能做很多事情。

答案 1 :(得分:0)

运行队列延迟取决于可运行(准备运行)线程与可用CPU的比率。

当可运行线程多于可用CPU时,即当负载平均值高于CPU数量时,不可避免地会有一些线程必须等到CPU变为可用,即直到某些其他线程被阻塞或抢占为止

因此,为了改善运行队列延迟,您需要增加可用CPU的数量或降低竞争CPU的线程数。

如果应用程序是CPU密集型的话,将会有更多的CPU竞争。您应该调查您的JVM是否不会花太多时间进行垃圾回收。在具有少量CPU的计算机上运行多个JVM时,您可以通过让许多JVM同时进行垃圾收集来轻松增加运行队列延迟的长尾。如果是这种情况,您可以尝试增加线程数并减少单独JVM的数量。