在我们的服务器上,输入sarshow's the system load statistics for today 从午夜开始,是否可以显示昨天的统计数据?
直到最近,我认为负载平均值(如顶部所示)是处于“可运行”或“正在运行”状态的进程数的最后 n 个值的移动平均值。并且 n 将由移动平均线的“长度”定义:由于计算平均负载的算法似乎每 5 秒触发一次,对于 1 分钟平均负载,n 将为 12,对于 5 分钟平均负载为 12x5 和 12x15对于 15 分钟的平均负载。
但后来我读了这篇文章:http : //www.linuxjournal.com/article/9001。这篇文章已经很老了,但今天在 Linux 内核中实现了相同的算法。负载平均值不是移动平均值,而是一种我不知道名称的算法。无论如何,我对 Linux 内核算法和虚拟周期性负载的移动平均值进行了比较:
.
这是个很大的差异。
最后我的问题是:
我从以下输出top:
Cpu(s): 43.8%us, 32.5%sy, 4.8%ni, 2.0%id, 15.6%wa, 0.2%hi, 1.2%si, 0.0%st
Mem: 16331504k total, 15759412k used, 572092k free, 4575980k buffers
Swap: 4194296k total, 260644k used, 3933652k free, 1588044k cached
Run Code Online (Sandbox Code Playgroud)
的输出iostat -xk 6显示如下:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 360.20 86.20 153.40 1133.60 2054.40 26.61 1.51 6.27 0.77 18.38
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdd 22.60 198.80 17.40 31.60 265.60 921.60 48.46 0.18 …Run Code Online (Sandbox Code Playgroud) 上周五,我将我的 Ubuntu 服务器升级到 11.10,它现在使用 3.0.0-12-server 内核运行。从那以后,整体性能急剧下降。升级前系统负载约为 0.3,但目前在具有 16GB RAM(10GB 空闲,未使用交换)的 8 核 CPU 系统上为 22-30。
我要责怪 BTRFS 文件系统驱动程序和底层 MD 阵列,因为 [md1_raid1] 和 [btrfs-transacti] 消耗了大量资源。但是所有的 [kworker/*:*] 消耗更多。
sar 自周五以来,一直在输出类似的东西:
11:25:01 CPU %user %nice %system %iowait %steal %idle
11:35:01 all 1,55 0,00 70,98 8,99 0,00 18,48
11:45:01 all 1,51 0,00 68,29 10,67 0,00 19,53
11:55:01 all 1,40 0,00 65,52 13,53 0,00 19,55
12:05:01 all 0,95 0,00 66,23 10,73 0,00 22,10
Run Code Online (Sandbox Code Playgroud)
并iostat确认写入率非常低:
sda 129,26 3059,12 614,31 258226022 51855269
sdb 98,78 24,28 …Run Code Online (Sandbox Code Playgroud) 我正在运行 Ubuntu Linux 12.04.1,带有 VirtualMin 4.08.gpl GPL 和 2 个 CPU 内核。
在过去的几周里,它几乎一直以远高于 5 的平均负载运行,通常接近 10,有时达到 20。
现在,CPU 平均负载:9.20(1 分钟)8.20(5 分钟)7.81(15 分钟)
同时,VirtualMin 返回:
Virtual Memory: 996 MB total, 15.44 MB used
Real Memory: 3.80 GB total, 972.43 MB used
Local disk space: 915.94 GB total, 116.03 GB used
Run Code Online (Sandbox Code Playgroud)
已经重新启动 ( shutdown -rf now) 机器几次,并且肯定迟早我们会以高 CPU 负载备份。
Running top(或htop) 在高 CPU 下运行时根本没有返回任何显着的结果——事实上,观察它几分钟,最高的项目可能会占用 3% 的 CPU。
Top 也返回这个:
Cpu(s): 2.2%us, 1.2%sy, 0.0%ni, 0.0%id, 96.5%wa, 0.0%hi, 0.2%si, 0.0%st …Run Code Online (Sandbox Code Playgroud) 我在所有三个负载字段中观察到某台机器(大约 9)上的高负载平均值。我将负载理解为处于“运行”状态/当前需要 CPU 时间的进程数。我的推理是否正确,如果 N 个进程在我的机器上运行,这不会产生大于 N 的负载?
此外,负载是否与进程或线程有关?换句话说,多线程进程能否产生大于 1 的负载?
通过运行 top、htop、uptime 等,我们可以看到平均负载为三个值,表示过去 1/5/15 分钟的平均负载(实际上不是,但这不是这里的问题)。
有时我会注意到过去 15 分钟的平均负载相当高,但当前负载非常低。是否有实用程序/程序可以列出在过去 1/5/15 分钟(或其他类似时间段)内消耗最多 CPU 时间的进程(即使它们不再存在)?
我知道平均负载也可能是由等待 I/O 的进程引起的,但我最感兴趣的是看到最消耗 CPU 的应用程序(尽管能够看到历史 I/O 也很好)。
据我所知,运行 htop 并按时间排序在这里对我没有帮助,因为如果计算机已经运行了一段时间,那么最高值不一定与最近的过去有关。
有没有办法让我的 SSH 服务器及其下的所有内容(包括 bash)在重负载下始终可用?
也许它可能是某种关键路径,全部在内存中,具有专用 CPU 或类似的东西。
我可以以最低成本拥有一个始终可用的服务器来调查我的服务器上发生了什么事情的方法是什么?
我有一个 rsync cron 作业,它正在推动服务器负载并触发监视器警报。如果我将作业设置为以较高的 nice 级别运行,是否会有效减少它对系统负载值的影响?
man ksoftirqd 表示:
如果 ksoftirqd 占用的 CPU 时间超过很小的百分比,这表明机器处于沉重的软中断负载下。
我正在使用 Debian Wheezy 系统,系统利用率通常很高,其中 ksoftirqd 进程在短时间内使用过多的 cpu 和磁盘资源。在此期间,系统以蜗牛般的速度运行。
如何开始理解 ksoftirqd 资源利用率飙升的根本原因是什么?
load ×10
performance ×3
cpu ×2
kernel ×2
linux ×2
algorithms ×1
command-line ×1
cron ×1
interrupt ×1
io ×1
monitoring ×1
nice ×1
process ×1
rsync ×1
ssh ×1
statistics ×1
top ×1