我想问一下关于输出的问题sar -q
。如果有人可以帮助我理解,我将不胜感激runq-sz
。
我有一个 cpu 线程正在 8 cpu threads
运行的系统RHEL 7.2
。
[ywatanabe@host2 ~]$ cat /proc/cpuinfo | grep processor | wc -l
8
以下是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
从 中man sar
,我在想这runq-sz
表示运行队列中的任务数,其中状态为TASK_RUNNING对应于 R 中的状态ps
。
runq-sz
Run queue length (number of tasks waiting for run time).
究竟runq-sz
代表什么?
此手册页对此属性有更详细的说明:
解释结果
与许多“指标”一样,您必须将它们相互结合使用来解释是否存在性能问题。这个特定的指示器指示您的系统是否缺乏 CPU 时间。
而 load1、5、15 表示处于运行队列中但被迫等待时间运行的进程。load1,5,15 种类告诉您系统的总体趋势,以及是否有很多进程在等待(增加负载)与趋势下降。但是进程可以等待 load1,5,15 的各种事情,通常是当您看到高负载时 I/O 阻塞 1,5,15 次。
使用 runq-sz,您正在等待 CPU 上的时间。
参考
这篇文章是谷歌中出现的第一篇文章,上面的最后一个答案被勾选为被接受。
答案提供了Solaris联机帮助页的参考并引用了其文本。然而,OP 的问题是关于RHEL 7。Solaris 和 Linux 中对可运行进程报告的处理是不同的。
Solaris 倾向于使用平均负载/队列作为有多少进程正在等待运行的指标。
Linux倾向于使用平均负载/队列作为有多少进程正在运行+有多少进程正在等待运行的指标。
runq-sz
in的 Linux 表示sar -q
更可能表示当前正在运行的进程数 + 排队进程数。参考 8 线程实例的 OP 原始示例,
runq-sz
小于 8 的 a 表示这方面的最佳性能。我同意低
runq-sz
与高loadavg
可能表明某种阻塞或睡眠过程。您可以在列中的 OP 示例 sar 输出中部分看到这一点blocked
。你对 Linux 说:
这意味着load avg和runq-sz包括正在运行的进程
那么等待进程和排队进程有什么区别呢?
例如,你能解释一下吗(第一行,runq-sz=10)?
这适用于 20 核(40 线程)服务器
ldavg-1 > runq-sz 是否意味着许多进程正在等待资源(例如 I/O)?
我的服务器的 CPU 使用率很低:80% 空闲。
问候,