]> Sergey Matveev's repositories - godwmstat.git/blobdiff - main.go
TurboBoost awareness
[godwmstat.git] / main.go
diff --git a/main.go b/main.go
index 50ede58eb7c76ac1d14c65f982f5ebc2d59f6e9c..45192b23d7862222f747bfe460a4b06315119ab5 100644 (file)
--- a/main.go
+++ b/main.go
@@ -17,6 +17,7 @@ import (
 var (
        MyPID string = strconv.Itoa(os.Getpid())
        CPU   string = "?"
+       Freq  string = "?"
        Mem   string = "?"
        ARC   string = "?"
        Swap  string = "?"
@@ -68,10 +69,10 @@ func top() {
        for cols := range bg("top", "-b", "-d", "infinity", "-p", MyPID, "-s", "5", "infinity") {
                switch cols[0] {
                case "CPU:":
-                       CPU = strings.ReplaceAll(
-                               fmt.Sprintf("%s sys:%s int:%s", cols[1], cols[5], cols[7]),
-                               "%", "",
-                       )
+                       CPU = strings.ReplaceAll(fmt.Sprintf(
+                               "%s sys:%s int:%s n:%s",
+                               cols[1], cols[5], cols[7], cols[3],
+                       ), "%", "")
                case "Mem:":
                        Mem = strings.ReplaceAll(strings.Join(cols[1:], " "), ",", "")
                case "ARC:":
@@ -123,6 +124,20 @@ func netstat() {
        }
 }
 
+func freq() {
+       for cols := range bg("sysctl", "-n", "dev.cpu.0.freq") {
+               if strings.HasSuffix(cols[0], "01") {
+                       Freq = "TB"
+               } else {
+                       raw, err := strconv.Atoi(cols[0])
+                       if err != nil {
+                               continue
+                       }
+                       Freq = fmt.Sprintf("%.1fG", float64(raw)/1000)
+               }
+       }
+}
+
 func flagfiles() {
        ents, err := os.ReadDir("/tmp/stargrave-flags")
        if err != nil {
@@ -146,6 +161,7 @@ func main() {
                }
        }()
        go top()
+       go freq()
        go iostat()
        go netstat()
        var now time.Time
@@ -154,8 +170,8 @@ func main() {
        for {
                now = time.Now()
                status = fmt.Sprintf(
-                       "[%s]  [%s]  [%s]  [%s%s %s ARC]  [%s] %s",
-                       IOs, Net, CPU, Swap, Mem, ARC, Flags,
+                       "[%s]  [%s]  [%s %s]  [%s%s %s ARC]  [%s] %s",
+                       IOs, Net, CPU, Freq, Swap, Mem, ARC, Flags,
                        now.Format("2006-01-02 15:04:05"),
                )
                if *xsetroot {