関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。
たまにCPU使用率やメモリ使用量を取得して評価する必要があったりします。
シェルスクリプトなどでちょこっと作成して流したりするのが一番多いのですが、Goで作成したいときもあったりします。
そういう場合、gopsutilというとても便利なライブラリが以下で公開されています。
Pythonの psutil をGoに移植してくださっているライブラリ。
とても使いやすいです。
サンプル(メモリ使用量)
v4.24.5から追加されたEx構造体を利用して追加情報を取得するサンプルです。
main.go
//go:build linux package main import ( "log" "github.com/shirou/gopsutil/v4/mem" ) func main() { log.SetFlags(log.Ltime) if err := run(); err != nil { log.Fatal(err) } } func run() error { var ( vmem *mem.VirtualMemoryStat exVmem *mem.ExVirtualMemory err error ) // マルチプラットフォームで利用出来る方法 vmem, err = mem.VirtualMemory() if err != nil { return err } // 各OSごとに特化している情報を取得する方法 exVmem, err = mem.NewExLinux().VirtualMemory() if err != nil { return err } log.Printf("[NORMAL] %s", vmem) log.Printf("[EX ] %s", exVmem) return nil }
実行結果
$ task task: [clean] rm -f ./app task: [build] go build -o app . task: [run] ./app 07:40:14 [NORMAL] {"total":67421265920,"available":52788764672,"used":13726756864,"usedPercent":20.359684257913145,"free":31725797376,"active":6271885312,"inactive":21599387648,"wired":0,"laundry":0,"buffers":1032192,"cached":21967679488,"writeBack":0,"dirty":3129344,"writeBackTmp":0,"shared":158375936,"slab":5851881472,"sreclaimable":3740106752,"sunreclaim":2111774720,"pageTables":174186496,"swapCached":22228992,"commitLimit":436363812864,"committedAS":31354429440,"highTotal":0,"highFree":0,"lowTotal":0,"lowFree":0,"swapTotal":402653179904,"swapFree":402577944576,"mapped":1446465536,"vmallocTotal":35184372087808,"vmallocUsed":204656640,"vmallocChunk":0,"hugePagesTotal":0,"hugePagesFree":0,"hugePagesRsvd":0,"hugePagesSurp":0,"hugePageSize":2097152,"anonHugePages":12582912} 07:40:14 [EX ] {"activefile":5806538752,"inactivefile":12259991552,"activeanon":465346560,"inactiveanon":9339396096,"unevictable":87674880}
参考情報
try-golang/examples/psutil/mem/exmem at main · devlights/try-golang · GitHub
Goのおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。





