linux 查看cpu百分比,在Linux中以百分比给出的CPU使用率的准确计算?

这是一个已经被问了很多次的问题,但是我找不到很好的支持的答案。

许多人建议使用顶级命令,但如果您运行顶部一次(因为您有一个脚本,例如每1秒收集Cpu使用),它将始终给出相同的Cpu使用结果(example 1,example 2)。

更准确的计算CPU使用率的方法是通过读取/ proc / stat中的值,但是大多数答案只使用/ proc / stat中的前4个字段来计算(一个例子here)。

/ proc / stat /每个CPU内核有10个字段,从Linux内核2.6.33开始!

我也发现这个Accurately Calculating CPU Utilization in Linux using /proc/stat这个问题指出了同样的问题,大多数其他问题只考虑到许多领域中的4个 – 但是这里给出的答案仍然以“我认为”(不确定)开始,除了,只关注前7个字段(/ proc / stat / 10中的10个)

This perl脚本使用所有的字段来计算CPU使用率,再次我认为在进一步的调查之后是不正确的。

在快速查看内核代码here后,它看起来像,例如,guest_nice和客户字段总是与nice和user一起增加(因此它们不应该包含在cpu使用计算中,因为它们包含在nice和用户字段)

/*

* Account guest cpu time to a process.

* @p: the process that the cpu time gets accounted to

* @cputime: the cpu time spent in virtual machine since the last update

* @cputime_scaled: cputime scaled by cpu frequency

*/

static void account_guest_time(struct task_struct *p, cputime_t cputime,

cputime_t cputime_scaled)

{

u64 *cpustat = kcpustat_this_cpu->cpustat;

/* Add guest time to process. */

p->utime += cputime;

p->utimescaled += cputime_scaled;

account_group_user_time(p, cputime);

p->gtime += cputime;

/* Add guest time to cpustat. */

if (task_nice(p) > 0) {

cpustat[CPUTIME_NICE] += (__force u64) cputime;

cpustat[CPUTIME_GUEST_NICE] += (__force u64) cputime;

} else {

cpustat[CPUTIME_USER] += (__force u64) cputime;

cpustat[CPUTIME_GUEST] += (__force u64) cputime;

}

}

所以总结一下,什么是计算CPU使用率的准确方法,哪些领域应该在计算中考虑,哪些领域归因于空闲时间以及哪些字段为非空闲时间?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值