27 lines
502 B
Go
27 lines
502 B
Go
package performancemetrics
|
|
|
|
import (
|
|
"os"
|
|
"syscall"
|
|
)
|
|
|
|
func getCpuTime() (float64, error) {
|
|
_, err := os.FindProcess(os.Getpid())
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
// Use syscall to get CPU times
|
|
var ru syscall.Rusage
|
|
err = syscall.Getrusage(syscall.RUSAGE_SELF, &ru)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
// Total CPU time in seconds
|
|
userSec := float64(ru.Utime.Sec) + float64(ru.Utime.Usec)/1e6
|
|
sysSec := float64(ru.Stime.Sec) + float64(ru.Stime.Usec)/1e6
|
|
|
|
return userSec + sysSec, nil
|
|
}
|