diff --git a/Gopkg.lock b/Gopkg.lock index ca6cf37..6bae789 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -48,6 +48,22 @@ version = "v1.6.0" [[projects]] + digest = "1:935df8a10a215392af270f19b14ef39efd151d598cf96e4851e73ba678cdf290" + name = "github.com/tklauser/go-sysconf" + packages = ["."] + pruneopts = "UT" + revision = "6c733a705a84e0dfcaf092758e3cef627dc03034" + version = "v0.3.4" + +[[projects]] + digest = "1:e7bf47a37e6d0fb2f4bd0f65f574f8a92922f048cab3f106b0a7a413cbb14714" + name = "github.com/tklauser/numcpus" + packages = ["."] + pruneopts = "UT" + revision = "c03481b99a3f0b56b010e938559fddce19d3cf53" + version = "v0.1.0" + +[[projects]] branch = "master" digest = "1:0afe79d034c63eea8c5977401f5fc135394751c1213ee6c991b0c6bec44f8f60" name = "golang.org/x/sys" @@ -76,6 +92,7 @@ "github.com/StackExchange/wmi", "github.com/stretchr/testify/assert", "github.com/stretchr/testify/require", + "github.com/tklauser/go-sysconf", "golang.org/x/sys/unix", "golang.org/x/sys/windows", "golang.org/x/sys/windows/svc", diff --git a/Gopkg.toml b/Gopkg.toml index bf57845..af7b47f 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -34,6 +34,10 @@ version = "1.2.2" [[constraint]] + name = "github.com/tklauser/go-sysconf" + version = "0.3.4" + +[[constraint]] branch = "master" name = "golang.org/x/sys" diff --git a/cpu/cpu_darwin.go b/cpu/cpu_darwin.go index 3d3455e..421f1e1 100644 --- a/cpu/cpu_darwin.go +++ b/cpu/cpu_darwin.go @@ -4,10 +4,10 @@ package cpu import ( "context" - "os/exec" "strconv" "strings" + "github.com/tklauser/go-sysconf" "golang.org/x/sys/unix" ) @@ -25,17 +25,10 @@ const ( var ClocksPerSec = float64(128) func init() { - getconf, err := exec.LookPath("getconf") - if err != nil { - return - } - out, err := invoke.Command(getconf, "CLK_TCK") + clkTck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) // ignore errors if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = float64(i) - } + ClocksPerSec = float64(clkTck) } } diff --git a/cpu/cpu_dragonfly.go b/cpu/cpu_dragonfly.go index eed5bea..45094df 100644 --- a/cpu/cpu_dragonfly.go +++ b/cpu/cpu_dragonfly.go @@ -3,7 +3,6 @@ package cpu import ( "context" "fmt" - "os/exec" "reflect" "regexp" "runtime" @@ -12,6 +11,7 @@ import ( "unsafe" "github.com/shirou/gopsutil/internal/common" + "github.com/tklauser/go-sysconf" "golang.org/x/sys/unix" ) @@ -25,17 +25,10 @@ var cpuTimesSize int var emptyTimes cpuTimes func init() { - getconf, err := exec.LookPath("getconf") - if err != nil { - return - } - out, err := invoke.Command(getconf, "CLK_TCK") + clkTck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) // ignore errors if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = float64(i) - } + ClocksPerSec = float64(clkTck) } } diff --git a/cpu/cpu_freebsd.go b/cpu/cpu_freebsd.go index 57beffa..24527af 100644 --- a/cpu/cpu_freebsd.go +++ b/cpu/cpu_freebsd.go @@ -3,7 +3,6 @@ package cpu import ( "context" "fmt" - "os/exec" "reflect" "regexp" "runtime" @@ -12,6 +11,7 @@ import ( "unsafe" "github.com/shirou/gopsutil/internal/common" + "github.com/tklauser/go-sysconf" "golang.org/x/sys/unix" ) @@ -26,17 +26,10 @@ var cpuTimesSize int var emptyTimes cpuTimes func init() { - getconf, err := exec.LookPath("getconf") - if err != nil { - return - } - out, err := invoke.Command(getconf, "CLK_TCK") + clkTck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) // ignore errors if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = float64(i) - } + ClocksPerSec = float64(clkTck) } } diff --git a/cpu/cpu_linux.go b/cpu/cpu_linux.go index f5adae7..b7040c7 100644 --- a/cpu/cpu_linux.go +++ b/cpu/cpu_linux.go @@ -6,28 +6,21 @@ import ( "context" "errors" "fmt" - "os/exec" "path/filepath" "strconv" "strings" "github.com/shirou/gopsutil/internal/common" + "github.com/tklauser/go-sysconf" ) var ClocksPerSec = float64(100) func init() { - getconf, err := exec.LookPath("getconf") - if err != nil { - return - } - out, err := invoke.CommandWithContext(context.Background(), getconf, "CLK_TCK") + clkTck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) // ignore errors if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = i - } + ClocksPerSec = float64(clkTck) } } diff --git a/cpu/cpu_openbsd.go b/cpu/cpu_openbsd.go index b54cf9c..c761aa2 100644 --- a/cpu/cpu_openbsd.go +++ b/cpu/cpu_openbsd.go @@ -7,13 +7,13 @@ import ( "context" "encoding/binary" "fmt" - "os/exec" "runtime" "strconv" "strings" "syscall" "github.com/shirou/gopsutil/internal/common" + "github.com/tklauser/go-sysconf" "golang.org/x/sys/unix" ) @@ -39,20 +39,12 @@ const ( var ClocksPerSec = float64(128) func init() { - func() { - getconf, err := exec.LookPath("getconf") - if err != nil { - return - } - out, err := invoke.Command(getconf, "CLK_TCK") - // ignore errors - if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = float64(i) - } - } - }() + clkTck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) + // ignore errors + if err == nil { + ClocksPerSec = float64(clkTck) + } + func() { v, err := unix.Sysctl("kern.osrelease") // can't reuse host.PlatformInformation because of circular import if err != nil { diff --git a/cpu/cpu_solaris.go b/cpu/cpu_solaris.go index 3de0984..d97688d 100644 --- a/cpu/cpu_solaris.go +++ b/cpu/cpu_solaris.go @@ -10,22 +10,17 @@ import ( "sort" "strconv" "strings" + + "github.com/tklauser/go-sysconf" ) var ClocksPerSec = float64(128) func init() { - getconf, err := exec.LookPath("getconf") - if err != nil { - return - } - out, err := invoke.Command(getconf, "CLK_TCK") + clkTck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) // ignore errors if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = float64(i) - } + ClocksPerSec = float64(clkTck) } } diff --git a/v3/cpu/cpu_darwin.go b/v3/cpu/cpu_darwin.go index 73151b4..4c81e1b 100644 --- a/v3/cpu/cpu_darwin.go +++ b/v3/cpu/cpu_darwin.go @@ -4,10 +4,10 @@ package cpu import ( "context" - "os/exec" "strconv" "strings" + "github.com/tklauser/go-sysconf" "golang.org/x/sys/unix" ) @@ -25,17 +25,10 @@ const ( var ClocksPerSec = float64(128) func init() { - getconf, err := exec.LookPath("getconf") - if err != nil { - return - } - out, err := invoke.Command(getconf, "CLK_TCK") + clkTck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) // ignore errors if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = float64(i) - } + ClocksPerSec = float64(clkTck) } } diff --git a/v3/cpu/cpu_dragonfly.go b/v3/cpu/cpu_dragonfly.go index ed64889..a9c81cc 100644 --- a/v3/cpu/cpu_dragonfly.go +++ b/v3/cpu/cpu_dragonfly.go @@ -3,7 +3,6 @@ package cpu import ( "context" "fmt" - "os/exec" "reflect" "regexp" "runtime" @@ -12,6 +11,7 @@ import ( "unsafe" "github.com/shirou/gopsutil/v3/internal/common" + "github.com/tklauser/go-sysconf" "golang.org/x/sys/unix" ) @@ -25,17 +25,10 @@ var cpuTimesSize int var emptyTimes cpuTimes func init() { - getconf, err := exec.LookPath("getconf") - if err != nil { - return - } - out, err := invoke.Command(getconf, "CLK_TCK") + clkTck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) // ignore errors if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = float64(i) - } + ClocksPerSec = float64(clkTck) } } diff --git a/v3/cpu/cpu_freebsd.go b/v3/cpu/cpu_freebsd.go index d0ec834..3b83cf3 100644 --- a/v3/cpu/cpu_freebsd.go +++ b/v3/cpu/cpu_freebsd.go @@ -3,7 +3,6 @@ package cpu import ( "context" "fmt" - "os/exec" "reflect" "regexp" "runtime" @@ -12,6 +11,7 @@ import ( "unsafe" "github.com/shirou/gopsutil/v3/internal/common" + "github.com/tklauser/go-sysconf" "golang.org/x/sys/unix" ) @@ -26,17 +26,10 @@ var cpuTimesSize int var emptyTimes cpuTimes func init() { - getconf, err := exec.LookPath("getconf") - if err != nil { - return - } - out, err := invoke.Command(getconf, "CLK_TCK") + clkTck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) // ignore errors if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = float64(i) - } + ClocksPerSec = float64(clkTck) } } diff --git a/v3/cpu/cpu_linux.go b/v3/cpu/cpu_linux.go index c845aa2..fb0b72f 100644 --- a/v3/cpu/cpu_linux.go +++ b/v3/cpu/cpu_linux.go @@ -6,28 +6,21 @@ import ( "context" "errors" "fmt" - "os/exec" "path/filepath" "strconv" "strings" "github.com/shirou/gopsutil/v3/internal/common" + "github.com/tklauser/go-sysconf" ) var ClocksPerSec = float64(100) func init() { - getconf, err := exec.LookPath("getconf") - if err != nil { - return - } - out, err := invoke.CommandWithContext(context.Background(), getconf, "CLK_TCK") + clkTck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) // ignore errors if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = i - } + ClocksPerSec = float64(clkTck) } } diff --git a/v3/cpu/cpu_openbsd.go b/v3/cpu/cpu_openbsd.go index cfe0467..8eb28db 100644 --- a/v3/cpu/cpu_openbsd.go +++ b/v3/cpu/cpu_openbsd.go @@ -7,13 +7,13 @@ import ( "context" "encoding/binary" "fmt" - "os/exec" "runtime" "strconv" "strings" "syscall" "github.com/shirou/gopsutil/v3/internal/common" + "github.com/tklauser/go-sysconf" "golang.org/x/sys/unix" ) @@ -39,20 +39,12 @@ const ( var ClocksPerSec = float64(128) func init() { - func() { - getconf, err := exec.LookPath("getconf") - if err != nil { - return - } - out, err := invoke.Command(getconf, "CLK_TCK") - // ignore errors - if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = float64(i) - } - } - }() + clkTck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) + // ignore errors + if err == nil { + ClocksPerSec = float64(clkTck) + } + func() { v, err := unix.Sysctl("kern.osrelease") // can't reuse host.PlatformInformation because of circular import if err != nil { diff --git a/v3/cpu/cpu_solaris.go b/v3/cpu/cpu_solaris.go index 3de0984..d97688d 100644 --- a/v3/cpu/cpu_solaris.go +++ b/v3/cpu/cpu_solaris.go @@ -10,22 +10,17 @@ import ( "sort" "strconv" "strings" + + "github.com/tklauser/go-sysconf" ) var ClocksPerSec = float64(128) func init() { - getconf, err := exec.LookPath("getconf") - if err != nil { - return - } - out, err := invoke.Command(getconf, "CLK_TCK") + clkTck, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) // ignore errors if err == nil { - i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) - if err == nil { - ClocksPerSec = float64(i) - } + ClocksPerSec = float64(clkTck) } } diff --git a/v3/go.mod b/v3/go.mod index 301154b..5a189dd 100644 --- a/v3/go.mod +++ b/v3/go.mod @@ -6,5 +6,6 @@ require ( github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d github.com/go-ole/go-ole v1.2.4 // indirect github.com/stretchr/testify v1.6.1 - golang.org/x/sys v0.0.0-20201024232916-9f70ab9862d5 + github.com/tklauser/go-sysconf v0.3.4 + golang.org/x/sys v0.0.0-20210217105451-b926d437f341 ) diff --git a/v3/go.sum b/v3/go.sum index d4f3276..792e78c 100644 --- a/v3/go.sum +++ b/v3/go.sum @@ -9,8 +9,13 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/sys v0.0.0-20201024232916-9f70ab9862d5 h1:iCaAy5bMeEvwANu3YnJfWwI0kWAGkEa2RXPdweI/ysk= -golang.org/x/sys v0.0.0-20201024232916-9f70ab9862d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +github.com/tklauser/go-sysconf v0.3.4 h1:HT8SVixZd3IzLdfs/xlpq0jeSfTX57g1v6wB1EuzV7M= +github.com/tklauser/go-sysconf v0.3.4/go.mod h1:Cl2c8ZRWfHD5IrfHo9VN+FX9kCFjIOyVklgXycLB6ek= +github.com/tklauser/numcpus v0.2.1 h1:ct88eFm+Q7m2ZfXJdan1xYoXKlmwsfP+k88q05KvlZc= +github.com/tklauser/numcpus v0.2.1/go.mod h1:9aU+wOc6WjUIZEwWMP62PL/41d65P+iks1gBkr4QyP8= +golang.org/x/sys v0.0.0-20210217105451-b926d437f341 h1:2/QtM1mL37YmcsT8HaDNHDgTqqFVw+zr8UzMiBVLzYU= +golang.org/x/sys v0.0.0-20210217105451-b926d437f341/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=