相关疑难解决方法(0)

准确计算Linux中以百分比给出的CPU使用率?

这是一个多次被问过的问题,但是我找不到很好的支持答案.

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

计算CPU使用率的更准确方法是从中读取值/proc/stat,但大多数答案仅使用前4个字段/proc/stat来计算它(此处为一个示例).

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

我还使用/ proc/stat问题在Linux中找到了这个准确计算CPU利用率的问题,该问题指出了同样的问题 - 大多数其他问题只考虑了许多领域中的4个问题 - 但这里给出的答案仍然是"我在认为"(不确定),除此之外,它只关注前7个领域(满分为10个/proc/stat/)

这个 perl脚本使用所有字段来计算CPU使用率,经过一些进一步的调查后我再也认为这是不正确的.

采取快速查找到内核代码后在这里,它看起来像,例如,guest_nice并且guest fields总是与一起增加niceuser(所以他们不应该被包含在CPU使用率计算,因为它们包含在niceuser领域已经)

/*
 * 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 …
Run Code Online (Sandbox Code Playgroud)

linux cpu calculator cpu-usage linux-kernel

51
推荐指数
3
解决办法
6万
查看次数

golang CPU 使用率

我知道[1]。通过几行代码,我只想从CPU使用率最高的前n个进程中提取当前的CPU使用率。或多或少都是前5排的顶部。使用github.com/shirou/gopsutil/process这很简单:

// file: gotop.go
package main

import (
  "log"
  "time"
  "sort"

  "github.com/shirou/gopsutil/process"
)


type ProcInfo struct{
  Name  string
  Usage float64
} 

type ByUsage []ProcInfo

func (a ByUsage) Len() int      { return len(a) }
func (a ByUsage) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a ByUsage) Less(i, j int) bool {
  return a[i].Usage > a[j].Usage
}


func main() {

  for {
    processes, _ := process.Processes()

    var procinfos []ProcInfo
    for _, p …
Run Code Online (Sandbox Code Playgroud)

ps go htop psutil

6
推荐指数
1
解决办法
8040
查看次数

标签 统计

calculator ×1

cpu ×1

cpu-usage ×1

go ×1

htop ×1

linux ×1

linux-kernel ×1

ps ×1

psutil ×1