linux-kernel - 为什么 /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。
解决方案
推荐阅读
- pyinstaller - 是否有等效于使用 PyObjC 的“os.listdir()”方法?
- google-chrome - 如何从弹出窗口访问当前选项卡的 LocalStorage 和 Cookie
- android - Bitbucket Container 'Build' 超出内存限制 - 使用 android build 时
- kotlin - 如何测试返回 com.google.type.Money 的 gRPC 端点
- android - 我无法读取我的 FirebaseDatabase。它显示警告为:W/System: Ignoring header X-Firebase-Locale because its value is null
- python - 将具有不同形状的numpy数组列表转换为灰度值
- javascript - 我的三元代码不起作用 Javascript
- python - 如何将 python 列表中的每个元素与另一个列表中的元素相乘?
- php - 使用 PHP 填写 PDF 表单
- python - 如何使用包含来自两个列表的多个值的键创建一个字典?