我正在尝试了解从SAR提取的一些数据。我对此有三个主要问题。最终,我想确定在服务器群集的每个采样间隔内有多少个CPU处于空闲状态。
- 许多CPU并没有出现在每个条目中。这是预料之中的,这到底是什么意思?与#2有关吗?
- 有未使用的行(CPU = U)。该文件说:“U指示系统范围未使用的容量”。我真的找不到“系统范围内未使用容量”的精确定义或任何定义。我不确定如何解释这样的行:“未使用的容量是70%空闲”。
- 最后,我不确定
-
orall
线的计算方式。我认为这是所有CPU的平均值,但是当我在所有CPU上进行数学运算时,得到的答案与该行的答案截然不同。谁能确切告诉我该计算的内容?仔细研究有关SAR的相关问题,似乎system-wide
空闲百分比是每个CPU的空闲百分比与“ physc”值的乘积之和。不幸的是,我没有physc
or或entc%(假设有一个),因此无法使用自己的数据进行验证。如果是正确的话,是否意味着我需要这些physc
值才能真正理解闲置百分比?
以下是一些我所看到的示例。这些都是同一天的。
CPU | Idle CPU | Idle CPU | Idle
---------- ---------- ----------
0 | 8 0 | 15 0 | 17
1 | 25 1 | 94 1 | 32
2 | 79 2 | 100 2 | 97
3 | 62 3 | 99 3 | 71
4 | 5 4 | 13 4 | 5
5 | 7 5 | 13 5 | 23
6 | 6 6 | 99 6 | 71
7 | 7 7 | 44 7 | 98
8 | 11 8 | 12 8 | 48
9 | 17 12 | 0 12 | 38
10 | 33 16 | 12 16 | 37
11 | 64 20 | 3 20 | 42
12 | 6 U | 95 U | 97
13 | 6 - | 15 - | 85
14 | 6
15 | 6
16 | 12
17 | 15
18 | 62
19 | 69
20 | 7
21 | 7
22 | 6
23 | 7
U | 80
- | 15
case 1: avg(24): 22
case 2: avg(12): 42
case 3: avg(12): 48
此数据由运行的脚本生成:sar -P ALL 1 1
然后运行awk命令。我对awk不好,但是这些显然是重要的部分:
过滤: /System|AIX|^$|%/ {next}
解析: {k=0;if(NR==7) k=1} {sub("^-", "all", $1); cpu=$(1+k); user=$(2+k); sys=$(3+k); io=$(4+k); idle=$(5+k)}
根据我对awk的了解很少以及从输出示例中看到的内容,这似乎是正确的。
如果我假设情况2的缺失值全为零,则平均值为21,这似乎与情况1一致。但是,如果我对情况3进行此假设,则得到24%,这与85%完全不符sar给出的总体CPU空闲百分比值。
这是一整天的捕获量(每30秒)的图表:
当“系统范围”空闲时间很少时,平均CPU空闲与“系统范围”空闲之间的相关性几乎是完美的。但是随着“系统范围内”的空闲时间增加,相关性变得越来越弱。在假设这些机器是确定性机器的情况下进行工作,这告诉我,我所拥有的数据并未提供完整的信息。但是我在乎多少呢?
我不完全理解为什么在每个点上都没有报告某些CPU,但是缺少的CPU没有如上例所示均匀分布。同样通过阅读本红皮书,我认为这些必须是逻辑CPU,并且没有physc
数字,我认为这些值无济于事。我试图U
在各种方程式中使用该值,但没有发现任何明智的方法。我什至还不清楚,总的闲置百分比是否可以按面值计算。
注意:从sar捕获此数据有问题,这对于#1是完全有效的答案,如果是这种情况,则应始终返回。
sar -P ALL 1 1
然后使用awk来分解cpu编号,然后是用户,系统,IO等待和空闲百分比。我会在您的答案中添加更多信息。
sar -P ALL
直接提供的输出,而不是此脚本的输出吗?这是一个非标准的脚本,没有人看不到它就告诉你它的作用。
sar -P ALL
输出。