登录
首页 >  Golang >  Go问答

如何获取 CPU 使用率

来源:Golang技术栈

时间:2023-03-22 16:42:18 254浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《如何获取 CPU 使用率》,这篇文章主要讲到golang等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

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

我怎样才能得到它?

正确答案

我有一个类似的问题,从来没有找到一个轻量级的实现。这是我的解决方案的精简版本,可以回答您的具体问题。我/proc/stat就像 tylerl 推荐的那样对文件进行采样。您会注意到我在样本之间等待 3 秒以匹配 top 的输出,但我也有 1 或 2 秒的良好结果。我在 go 例程中循环运行类似的代码,然后在需要时从其他 go 例程访问 cpu 使用情况。

您还可以解析 的输出top -n1 | grep -i cpu以获取 cpu 使用情况,但它在我的 linux 机器上仅采样半秒,并且在重负载期间它会消失。当我将常规顶部与以下程序同步时,它似乎非常匹配:

package main

import (
    "fmt"
    "io/ioutil"
    "strconv"
    "strings"
    "time"
)

func getCPUSample() (idle, total uint64) {
    contents, err := ioutil.ReadFile("/proc/stat")
    if err != nil {
        return
    }
    lines := strings.Split(string(contents), "\n")
    for _, line := range(lines) {
        fields := strings.Fields(line)
        if fields[0] == "cpu" {
            numFields := len(fields)
            for i := 1; i 

似乎允许我链接到我在 bitbucket 上编写的完整实现;如果不是,请随时删除此内容。到目前为止,它只适用于 linux:systemstat.go

今天关于《如何获取 CPU 使用率》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表