vmstat - cpu没有完全忙,但有等待进程。这是什么意思?

时间:2015-12-04 10:28:48

标签: cpu wait aix

我正在对db2实例运行一些负载。负载是通过运行sql语句的java程序生成的。此负载生成器程序正在另一台计算机上运行。我正在运行负载生成器的多个JVM,每个JVM都会生成多个线程,从而触发SQL查询。

在db2服务器计算机(AIX 7.1)上,我运行了vmstat 1,我看到了以下的输出

kthr    memory              page              faults        cpu    
----- ----------- ------------------------ ------------ -----------
 r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa
16  0 2483017 4805102   0   0   0   0    0   0 11481 97937 24610 73  4 23  0
20  0 2483098 4805021   0   0   0   0    0   0 11488 109427 24965 74  5 21  0
18  0 2483015 4805104   0   0   0   0    0   0 12068 103477 25386 75  4 21  0
 0  0 2483015 4805104   0   0   0   0    0   0 12893 105653 22407 75  4 21  0
14  0 2483015 4805104   0   0   0   0    0   0 13239 106536 23097 74  4 21  0
13  0 2483015 4805104   0   0   0   0    0   0 11745 105253 30494 70  4 25  0
16  0 2483015 4805104   0   0   0   0    0   0 9920 93743 33563 59  4 37  0
 4  0 2483015 4805104   0   0   0   0    0   0 10717 91356 28120 62  4 34  0
16  0 2483015 4805104   0   0   0   0    0   0 12023 102409 26877 73  4 23  0
11  0 2483015 4805104   0   0   0   0    0   0 12222 105361 27300 74  4 22  0
17  0 2483015 4805104   0   0   0   0    0   0 13539 109858 25124 75  4 21  0
18  0 2483580 4804539   0   0   0   0    0   0 13808 113410 22928 75  5 21  0
16  0 2483022 4805097   0   0   0   0    0   0 13926 117611 22962 75  5 20  0
14  0 2483022 4805092   0   0   0   0    0   0 13913 111620 23642 74  5 21  0
16  0 2483025 4805085   0   0   0   0    0   0 12969 114079 24493 73  5 22  0
13  0 2483025 4805085   0   0   0   0    0   0 13610 109493 23120 76  5 20  0
16  0 2483025 4805085   0   0   0   0    0   0 12375 103619 24001 74  4 22  0
 9  0 2483025 4805085   0   0   0   0    0   0 13233 108431 23304 75  4 20  0
13  0 2483025 4805085   0   0   0   0    0   0 11975 101451 24412 74  4 22  0

我很担心专栏下的高价值" r"即使cpu没有完全忙碌。我总是认为专栏#34; r"显示已建立的进程队列(等待cpu注意)。但我看了man vmstat。它声明列" r"显示" 采样间隔内可运行内核线程的平均数。可运行线程由准备但仍在等待运行的线程和已经运行的线程组成。"

任何人都可以了解如何查明这些是在运行线程还是在等待?如果CPU不是100%忙,可以有等待线程吗?

谢谢。

- Parag

1 个答案:

答案 0 :(得分:0)

Parag,如果您查看vmstat的手册页详细信息,请参阅以下信息:

r    Average number of runnable kernel threads over the sampling interval.
     Runnable threads consist of the threads that are ready but still waiting to run, and the threads that are already running.

现在您可以看到这是系统上的任何内核线程,可能是您有很多后台进程在执行其他操作,而不知道您的系统很难说。

有三种线程:

  • 内核线程
  • 仅内核线程
  • 用户线程。

内核线程是一个内核实体,就像进程和中断处理程序一样;它是由系统调度程序处理的实体。内核线程在执行用户函数或库调用时在用户模式环境中运行;它在执行系统调用时切换到内核模式环境。

仅内核线程是仅在内核模式环境中执行的内核线程。仅内核线程由内核模式环境程序员通过内核服务控制。