首页 > 解决方案 > 为什么 /proc/stat 跑在后面

问题描述

我确信这就是它的方式,但是有人可以很好地参考对这种观察的解释。

当我将 CPU 的所有字段加起来时/proc/stat,CPU0 仅报告 6134 秒的活动,因此落后了 89 秒/proc/uptime

根据http://man7.org/linux/man-pages/man5/proc.5.html似乎涵盖了所有类型的活动,但是有什么不计入的吗?

~ # cat /proc/uptime                                                 
6223.05 10849.57
~ # awk /cpu/'{print $1, $2+$3+$4+$5+$6+$7+$8+$9+$10+$11}' /proc/stat
cpu 1233568
cpu0 613483
cpu1 620083

我正在使用双核 ARMv7 处理器 rev 5 (v7l)
CPU0 的负载比 CPU1 更高

顺便说一句,我的 ubuntu 也是如此。

编辑:我现在观察到它也可以运行得更快这个小脚本显示了我的问题。

b=`awk /cpu1/'{print $2+$3+$4+$5+$6+$7+$8+$9+$10+$11}' /proc/stat`
sleep 1
a=`awk /cpu1/'{print $2+$3+$4+$5+$6+$7+$8+$9+$10+$11}' /proc/stat`
expr $a - $b

通常睡眠需要额外的 20 毫秒,但在我的目标为 100 jiffies/s 时,我以这种方式数到了 140 jiffies/s。

似乎是用户空间和空闲计算了 jiffies。在一个示例中,我计算了 102 个用户空间 jiffies,这可以用额外 20 毫秒的睡眠来解释。因此用户空间一直占用。

但随后也有 33 个空闲滴答。

在重新启动之间,我的系统报告是随机的。通常,使用相同的软件大约为 40、90 或 140 jiffies/s。一旦系统启动,它就不会改变。

我的系统在 /proc/stat 计数器的更新方式上存在错误。或者 /proc/stat 中的计数器不是 jiffies。

标签: linux-kernel

解决方案


推荐阅读