関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。
Linux上でCPUやメモリやプロセスの情報を取得したりして処理する必要があったので、ちょっとライブラリを探してみたら
という便利なライブラリが見つかりました。/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のおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。