runq-sz在sar中是怎么算的?

Yu *_*abe 4 linux cpu kernel sar

我想问一下关于 的输出的问题sar -q。如果有人能帮助我理解,我将不胜感激runq-sz

8 cpu threads我有一个 cpu 线程打开的系统 RHEL 7.2

[ywatanabe@host2 ~]$ cat /proc/cpuinfo | grep processor | wc -l
8
Run Code Online (Sandbox Code Playgroud)

以下是sar -q 我的系统的结果,但与 相比runq-sz似乎较低ldavg-1

                runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
05:10:01 PM         0       361      0.29      1.68      2.14         0
05:11:01 PM         0       363      1.18      1.61      2.08         2
05:12:01 PM         0       363      7.03      3.15      2.58         1
05:13:01 PM         0       365      8.12      4.15      2.96         1
05:14:01 PM         3       371      7.40      4.64      3.20         1
05:15:01 PM         2       370      7.57      5.26      3.51         1
05:16:01 PM         0       366      8.42      5.90      3.84         1
05:17:01 PM         0       365      8.78      6.45      4.16         1
05:18:01 PM         0       363      7.05      6.40      4.28         2
05:19:02 PM         1       364      8.05      6.74      4.53         0
05:20:01 PM         0       367      7.96      6.96      4.74         1
05:21:01 PM         0       367      7.86      7.11      4.93         1
05:22:01 PM         1       366      7.84      7.31      5.14         0
Run Code Online (Sandbox Code Playgroud)

从 中man sar,我认为runq-sz代表运行队列内的任务数量,其状态为TASK_RUNNING,对应于 中的 R 状态ps

          runq-sz
                 Run queue length (number of tasks waiting for run time).
Run Code Online (Sandbox Code Playgroud)

实际上代表什么runq-sz

slm*_*slm 5

此手册页对此属性有更详细的解释:

运行q-sz

内存中等待 CPU 运行的内核线程数。通常,该值应小于 2。值始终较高意味着系统可能受 CPU 限制。

解释结果

与许多“指标”的情况一样,您必须将它们结合使用来解释是否存在性能问题。该特定指示器指示您的系统是否缺乏 CPU 时间。

而 load1、5、15 表示进程位于运行队列中,但被迫等待运行时间。load1,5,15 变量告诉您​​系统的总体趋势,以及是否有大量进程在等待(增加负载)与下降趋势。但是进程可以通过 load1,5,15 等待各种事情,通常是当您看到高 load1,5,15 倍时 I/O 被阻塞。

使用 runq-sz,您可以等待 CPU 的时间。

参考