• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go入门笔记-11Go获取Linux系统CPU占用率

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

EdgeX支持多种平台下测试CPU占用率,下面是Linux核心代码

1、代码

package main

import (
	"bitbucket.org/bertimus9/systemstat"
	"fmt"
	"math"
	"time"
)

var lastSample CpuUsage
var usageAvg float64

type CpuUsage struct {
	Busy, // time used by all processes. this ideally does not include system processes.
	Idle, // time used by the idle process
	Total uint64 // reported sum total of all usage
}

func PollCpu() (cpuSnapshot CpuUsage) {
	linuxSample := systemstat.GetCPUSample()
	return CpuUsage{
		Busy:  linuxSample.Nice + linuxSample.User,
		Idle:  linuxSample.Idle,
		Total: linuxSample.Total,
	}
}

func AvgCpuUsage(init, final CpuUsage) (avg float64) {
	// SimpleAverage only uses idle and total, so only copy those
	linuxInit := systemstat.CPUSample{
		Idle:  init.Idle,
		Total: init.Total,
	}

	linuxFinal := systemstat.CPUSample{
		Idle:  final.Idle,
		Total: final.Total,
	}

	avg = systemstat.GetSimpleCPUAverage(linuxInit, linuxFinal).BusyPct

	if avg < .000001 || math.IsNaN(avg) {
		return 0.0
	}

	return avg
}
func cpuUsageAverage() {
	nextUsage := PollCpu()
	usageAvg = AvgCpuUsage(lastSample, nextUsage)
	lastSample = nextUsage
	//打印输出读到的信息
	fmt.Println(usageAvg)

}
func main() {

	for {

		cpuUsageAverage()
		fmt.Println(time.Second)
		time.Sleep(time.Duration(2) * time.Second) //
	}

	return
}

2、运行结果

 

 

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
探究 Go 源码中 panic &amp; recover 有哪些坑?发布时间:2022-07-10
下一篇:
go字符串转换发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap