Skip to content

Commit

Permalink
Implement basic Solaris loadavg support.
Browse files Browse the repository at this point in the history
  • Loading branch information
Jonathan Perkin committed Sep 6, 2019
1 parent d80c43f commit 85cb8ad
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 1 deletion.
9 changes: 9 additions & 0 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@
branch = "master"
name = "github.com/shirou/w32"

[[constraint]]
branch = "master"
name = "github.com/siebenmann/go-kstat"

[[constraint]]
name = "github.com/stretchr/testify"
version = "1.2.2"
Expand Down
2 changes: 1 addition & 1 deletion load/load_fallback.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// +build !darwin,!linux,!freebsd,!openbsd,!windows
// +build !darwin,!linux,!freebsd,!openbsd,!windows,!solaris

package load

Expand Down
49 changes: 49 additions & 0 deletions load/load_solaris.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// +build solaris

package load

import (
"context"
"fmt"

"github.com/siebenmann/go-kstat"
)

func Avg() (*AvgStat, error) {
return AvgWithContext(context.Background())
}

func AvgWithContext(ctx context.Context) (*AvgStat, error) {
tok, err := kstat.Open()
if err != nil {
return nil, fmt.Errorf("Open failure: %s", err)
}

ks, err := tok.Lookup("unix", -1, "system_misc")
if err != nil {
return nil, fmt.Errorf("lookup failure on unix:-1:system_misc: %s", err)
}

load1, err := ks.GetNamed("avenrun_1min")
if err != nil {
return nil, err
}

load5, err := ks.GetNamed("avenrun_5min")
if err != nil {
return nil, err
}

load15, err := ks.GetNamed("avenrun_15min")
if err != nil {
return nil, err
}

ret := &AvgStat{
Load1: float64(load1.UintVal) / 256,
Load5: float64(load5.UintVal) / 256,
Load15: float64(load15.UintVal) / 256,
}

return ret, nil
}

0 comments on commit 85cb8ad

Please sign in to comment.