服务器平均负载具体公式

服务器平均负载具体公式

我原本以为 CPU 平均负载是根据处于运行状态 (R 状态) 的进程数 + 等待 I/O 的进程数 (D 状态) 来计算的。但是今天我注意到服务器显示的平均负载很高,正在运行的进程数为 1,并且没有等待 I/O 的进程。

我还检查了正在运行的线程数和最小 I/O 进程数。有人能告诉我这个较高的平均负载数字是从哪里产生的吗?

系统有 4 核 CPU 和 Ubuntu 操作系统。

top - 21:10:01 up 4 days, 23:29,  0 users,  load average: 32.31, 43.25, 19.64
Threads: 2077 total,   1 running, 2076 sleeping,   0 stopped,   0 zombie
%Cpu(s):  4.9 us,  2.0 sy,  0.1 ni, 92.0 id,  0.6 wa,  0.4 hi,  0.0 si,  0.0 st
KiB Mem:  16434332 total, 15447756 used,   986576 free,  1593972 buffers

KiB 交换:总计 6287356,已使用 1259140,可用 5028216。2754608 缓存内存

所以我在这里寻找计算系统平均负载的精确公式。提前致谢。

答案1

负载是当前暂停等待系统调用的线程数。

尝试运行

ps -eafT

您可能会发现您的单个进程可以有数十个线程。

系统负载基本上是当时调度承诺的衡量标准。您有多个核心可供调度。如果有那么多 pid 或线程完全占满调度程序,您将看到核心负载。

您的平均负载很容易飙升到比这高得多的水平。一旦达到饱和状态,您就无法执行可能添加的那么多“工作”,并且可能会出现“堆积如山”的任务。系统必须先处理其积压的系统调用,然后负载才能再次下降。

答案2

首先,问题是什么,是否存在用户响应时间问题?

平均负载为 30 或 40 意味着有多个进程正在运行或有多个 I/O 等待。

你的分析不够充分。首先60,000 毫秒内的 Linux 性能分析

简洁版本:

uptime
dmesg | tail
vmstat 1
mpstat -P ALL 1
pidstat 1
iostat -xz 1
free -m
sar -n DEV 1
sar -n TCP,ETCP 1
top

相关内容