以下の内容はhttps://devlights.hatenablog.com/entry/2025/05/14/073000より取得しました。


Goメモ-574 (procfsを利用してCPU使用量を取得)(procfs.FS, CPUInfo)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。

Linux上でCPUやメモリやプロセスの情報を取得したりして処理する必要があったので、ちょっとライブラリを探してみたら

github.com

という便利なライブラリが見つかりました。/procファイルシステムの情報を扱いやすくしてくれます。

とても便利だったので、自分用に使い方のメモ残しておこうと思います。

サンプル(CPU使用量)

main.go

package main

import (
    "log"

    "github.com/prometheus/procfs"
)

func main() {
    log.SetFlags(0)

    if err := run(); err != nil {
        log.Fatal(err)
    }
}

func run() error {
    var (
        fs  procfs.FS
        err error
    )
    fs, err = procfs.NewDefaultFS() // デフォルトは /proc を見ている
    if err != nil {
        return err
    }

    var (
        cpuInfos []procfs.CPUInfo
    )
    cpuInfos, err = fs.CPUInfo()
    if err != nil {
        return err
    }

    log.Printf("CPU-COUNT: %d", len(cpuInfos))
    for i, cpu := range cpuInfos {
        log.Printf("\t[CPU-%02d] CoreId=%s ModelName=%q, Processor=%02d", i+1, cpu.CoreID, cpu.ModelName, cpu.Processor)
    }

    return nil
}

実行結果

$ task
task: [clean] rm -f ./app
task: [build] go build -o app .
task: [run] ./app
CPU-COUNT: 16
        [CPU-01] CoreId=0 ModelName="AMD EPYC 7B13", Processor=00
        [CPU-02] CoreId=1 ModelName="AMD EPYC 7B13", Processor=01
        [CPU-03] CoreId=2 ModelName="AMD EPYC 7B13", Processor=02
        [CPU-04] CoreId=3 ModelName="AMD EPYC 7B13", Processor=03
        [CPU-05] CoreId=4 ModelName="AMD EPYC 7B13", Processor=04
        [CPU-06] CoreId=5 ModelName="AMD EPYC 7B13", Processor=05
        [CPU-07] CoreId=6 ModelName="AMD EPYC 7B13", Processor=06
        [CPU-08] CoreId=7 ModelName="AMD EPYC 7B13", Processor=07
        [CPU-09] CoreId=0 ModelName="AMD EPYC 7B13", Processor=08
        [CPU-10] CoreId=1 ModelName="AMD EPYC 7B13", Processor=09
        [CPU-11] CoreId=2 ModelName="AMD EPYC 7B13", Processor=10
        [CPU-12] CoreId=3 ModelName="AMD EPYC 7B13", Processor=11
        [CPU-13] CoreId=4 ModelName="AMD EPYC 7B13", Processor=12
        [CPU-14] CoreId=5 ModelName="AMD EPYC 7B13", Processor=13
        [CPU-15] CoreId=6 ModelName="AMD EPYC 7B13", Processor=14
        [CPU-16] CoreId=7 ModelName="AMD EPYC 7B13", Processor=15

参考情報

try-golang/examples/procfs/cpuinfo at main · devlights/try-golang · GitHub

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。




以上の内容はhttps://devlights.hatenablog.com/entry/2025/05/14/073000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14