Linux kernel 获取cpu使用率并计算已使用百分比

Linux kernel 获取cpu使用率并计算已使用百分比,linux-kernel,cpu-usage,Linux Kernel,Cpu Usage,我需要计算cpu使用率,并从linux中的proc文件中进行聚合 /proc/stat为我提供了数据,但我如何才能知道当时cpu的使用百分比 stat提供了在任何时候运行的内核进程数,但没有告诉我cpu的使用率是多少? 我在Golang中编写代码,并且必须使用脚本来完成这项工作 提前谢谢 /proc/stat不仅提供每个核心上的进程计数man-proc将告诉您该文件的确切格式。从中复制,以下是您应该感兴趣的部分: /proc/stat cpu 3357 0 4313

我需要计算cpu使用率,并从linux中的proc文件中进行聚合

/proc/stat为我提供了数据,但我如何才能知道当时cpu的使用百分比 stat提供了在任何时候运行的内核进程数,但没有告诉我cpu的使用率是多少? 我在Golang中编写代码,并且必须使用脚本来完成这项工作


提前谢谢

/proc/stat
不仅提供每个核心上的进程计数
man-proc
将告诉您该文件的确切格式。从中复制,以下是您应该感兴趣的部分:

   /proc/stat
          cpu  3357 0 4313 1362393
                 The  amount  of  time,  measured  in  units  of   USER_HZ
                 (1/100ths   of   a  second  on  most  architectures,  use
                 sysconf(_SC_CLK_TCK) to obtain the right value), that the
                 system  spent  in  user mode, user mode with low priority
                 (nice), system mode, and  the  idle  task,  respectively.
                 The  last  value should be USER_HZ times the second entry
                 in the uptime pseudo-file.
然后很容易在两个度量值之间减去
idle
字段,这将为您提供此CPU不做任何事情所花费的时间。您可以提取的另一个值是做某事的时间,这是以下两个度量之间的差异:

time in user mode + time spent in user mode with low priority + time spent in system mode

然后,您将拥有两个值;一个,A,表示什么都不做的时间,另一个,B,表示实际做某事的时间
B/(A+B)
将提供CPU繁忙的时间百分比。

/proc/stat
不仅提供每个核心上的进程计数
man-proc
将告诉您该文件的确切格式。从中复制,以下是您应该感兴趣的部分:

   /proc/stat
          cpu  3357 0 4313 1362393
                 The  amount  of  time,  measured  in  units  of   USER_HZ
                 (1/100ths   of   a  second  on  most  architectures,  use
                 sysconf(_SC_CLK_TCK) to obtain the right value), that the
                 system  spent  in  user mode, user mode with low priority
                 (nice), system mode, and  the  idle  task,  respectively.
                 The  last  value should be USER_HZ times the second entry
                 in the uptime pseudo-file.
然后很容易在两个度量值之间减去
idle
字段,这将为您提供此CPU不做任何事情所花费的时间。您可以提取的另一个值是做某事的时间,这是以下两个度量之间的差异:

time in user mode + time spent in user mode with low priority + time spent in system mode
然后,您将拥有两个值;一个,A,表示什么都不做的时间,另一个,B,表示实际做某事的时间
B/(A+B)
将显示CPU繁忙的时间百分比