linux - top命令的CPU使用率计算

标签 linux cpu gnu-coreutils top-command

我正在尝试使用 GNU coreutil top 的公式来计算 CPU 使用百分比。 但是 top 使用一些 half_total 来计算百分比,即在百分比上增加 0.5。

在顶部的 source 的 utils.c 中,以下行(在 3.8 beta1 中,行号为:459):-

*out++ = (int)((*diffs++ * 1000 + half_total)/total_change);

这转化为: ( (*diffs++ * 1000)/total_change ) + 1/2 因此,它总是给出一个数字,即:“10 倍百分比,再加上 0.5”。所以如果百分比是 x,它将返回 10x+0.5。

谁能解释一下这个平均值是如何计算出来的?或者至少有一些我可以获得帮助的指示?

附言: 为什么我们不能只使用 (*diffs++/total_change) * 100 来获得所需的百分比?

Top 的源代码位于:- http://downloads.sourceforge.net/unixtop/top-3.8beta1.tar.gz?modtime=1210117842&big_mirror=0

最佳答案

这是对整数值进行舍入的方法,因为除法会丢弃小数部分。

当您添加除数的一半时,这相当于浮点除法,如果小数部分为 0.5 或更大则向上舍入。

关于linux - top命令的CPU使用率计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/552976/

相关文章:

linux - 是否可以对 pr 实用程序的页脚做些什么?

linux - Gnu 排序 : stray characters in field specification

linux - 从 Pen 运行 Mono (linux)

linux - 无法为 docker 容器执行脚本?

c++ - 累积 double vs 整数

linux-kernel - 重新启动在欠压期间最终无响应的 CPU

Java进程处于运行状态并消耗CPU

linux - curl http通过代理服务器连接到ftp URL

linux - 如何使用 awk 提取 "second"值?

busybox - Yocto busybox 覆盖 coreutils