Go에서 CPU 사용량 측정
2023. 6. 21. 10:03ㆍProgramming/JAVA, C++, Go, Rust
- 목차
반응형
host machine의 CPU usage를 측정
import "github.com/shirou/gopsutil/cpu"
period := 100 * time.Millisecond
cpuInfo, err := cpu.Percent(period, false)
if err != nil {
return
}
c.usage = cpuInfo[0]
container의 CPU usage를 측정
dat, err := ioutil.ReadFile(path)
...
used, err := strconv.Atoi(strings.Replace(string(dat), "\n", "", 1))
...
time.Sleep(period)
// process가 사용한 system time을 획득
var r syscall.Rusage
syscall.Getrusage(syscall.RUSAGE_SELF, &r)
tend := time.Unix(r.Stime.Sec, int64(r.Utime.Usec*1000))
c.usage = float64(end - start) / float64(tend.Sub(tstart).Nanoseconds()) * 100
Sleep 한 시간동안 해당 (container의) process가 사용한 CPU usage를 process의 system time으로 나눔
반응형
'Programming > JAVA, C++, Go, Rust' 카테고리의 다른 글
Go gotcha examples (0) | 2023.06.22 |
---|---|
Go에서 time의 ticker 사용 (0) | 2023.06.21 |
Go 언어에서 reflect로 필드명과 값 획득 방법 (0) | 2023.06.20 |
고 언어 (Go lang)에서 값의 스왑 (swap) 방법 (0) | 2023.06.05 |
Kotlin build on Mac (0) | 2023.02.27 |