相关疑难解决方法(0)

使用golang获取CPU使用率

我的Go程序需要知道所有系统和用户进程的当前cpu使用百分比.

我怎么能得到它?

linux go

35
推荐指数
5
解决办法
3万
查看次数

使用/ proc/stat准确计算Linux中的CPU利用率

有关如何使用/ proc/stat中的统计信息获取CPU利用率的帖子和参考.但是,他们中的大多数只使用7个以上CPU统计数据中的4个(用户,漂亮,系统和空闲),忽略了Linux 2.6(iowait,irq,softirq)中剩余的jiffie CPU数量.

例如,请参阅确定CPU利用率.

我的问题是:iowait/irq/softirq数字是否也计入前四个数字之一(用户/好/系统/空闲)?换句话说,总的jiffie数量是否等于前四个统计数据的总和?或者,总的jiffie数量是否等于所有7个统计数据的总和?如果后者为真,则CPU利用率公式应考虑所有数字,如下所示:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  long double a[7],b[7],loadavg;
  FILE *fp;

  for(;;)
  {
    fp = fopen("/proc/stat","r");
    fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);
    fclose(fp);
    sleep(1);
    fp = fopen("/proc/stat","r");
    fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&b[0],&b[1],&b[2],&b[3],&b[4],&b[5],&b[6]);
    fclose(fp);

    loadavg = ((b[0]+b[1]+b[2]+b[4]+b[5]+b[6]) - (a[0]+a[1]+a[2]+a[4]+a[5]+a[6]))
         / ((b[0]+b[1]+b[2]+b[3]+b[4]+b[5]+b[6]) - (a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]));
    printf("The current CPU utilization is : %Lf\n",loadavg);

  }

  return(0);
}
Run Code Online (Sandbox Code Playgroud)

linux cpu-usage

15
推荐指数
1
解决办法
3万
查看次数

如何从/ proc/meminfo计算系统内存使用量(如htop)

运行该htop命令会以如下格式为您提供内存使用情况的图片:/proc/meminfo.

问题是我应该如何解释从中获取的值htop,以便以编程方式计算所使用的内存?

我正在寻找类似的东西:在Linux中以百分比给出的CPU使用率的精确计算?意思是伪代码是好的,我不需要可以编译的东西,只需要逻辑.htop的源代码是一个值得寻找的地方,但我没有发现为此编写的代码行...

1.92G/5.83G
Run Code Online (Sandbox Code Playgroud)

linux memory htop

10
推荐指数
1
解决办法
8202
查看次数

标签 统计

linux ×3

cpu-usage ×1

go ×1

htop ×1

memory ×1