diff options
author | Kraust <secretdragoon@gmail.com> | 2019-07-14 09:46:07 -0400 |
---|---|---|
committer | Kraust <secretdragoon@gmail.com> | 2019-07-14 09:46:07 -0400 |
commit | aa496ba38d7c51e2e0063ef2bc72c8e32fe4a711 (patch) | |
tree | bfff610a815c43be6f8b7cbb60eda88a816b4002 | |
parent | e1f3488c4cb3a15dc95d5d2c32b8727fea9ddff2 (diff) |
FreeBSD Fixes
- Added NVIDIA GPU Temperature Support
- Fixed a bug where CPU temp would not be displayed if a syctl option was not found
- Fixed a bug where Swap was not being displayed on mirroed ZFS partitions.
-rw-r--r-- | src/widgets/mem_freebsd.go | 5 | ||||
-rw-r--r-- | src/widgets/temp_freebsd.go | 44 |
2 files changed, 45 insertions, 4 deletions
diff --git a/src/widgets/mem_freebsd.go b/src/widgets/mem_freebsd.go index b3773c9..f11c9ab 100644 --- a/src/widgets/mem_freebsd.go +++ b/src/widgets/mem_freebsd.go @@ -42,7 +42,10 @@ func gatherSwapInfo() (MemoryInfo, error) { } } - ss := strings.Split(strings.TrimSuffix(string(output), "\n"), " ") + s := strings.TrimSuffix(string(output), "\n") + s = strings.ReplaceAll(s, "\n", " ") + ss := strings.Split(s, " ") + ss = ss[((len(ss)/3)-1)*3:] return convert(ss) } diff --git a/src/widgets/temp_freebsd.go b/src/widgets/temp_freebsd.go index 2990123..714e674 100644 --- a/src/widgets/temp_freebsd.go +++ b/src/widgets/temp_freebsd.go @@ -35,22 +35,60 @@ func refineOutput(output []byte) (float64, error) { return value, nil } +func collectNvidiaGPUSensors() []sensorMeasurement { + var measurements []sensorMeasurement + + _, err := exec.Command("sysctl", "-n", "hw.nvidia.gpus.0.model").Output() + if err == nil { + output, err := exec.Command("nvidia-settings", "-q", "gpucoretemp", "-t").Output() + if err != nil { + log.Printf("Failed to get nvidia gpu temperature from nvidia-settings") + } else { + s := strings.TrimSuffix(string(output), "\n") + s = strings.ReplaceAll(s, "\n", " ") + ss := strings.Split(s, " ") + for i := 1; i < len(ss); i++ { + value, err := refineOutput([]byte(ss[i])) + if err != nil { + log.Printf("Failed to parse nvidia-settings output") + } + label := fmt.Sprintf("Nvidia GPU %d", i-1) + measurements = append(measurements, sensorMeasurement{label, value}) + } + } + } + + return measurements +} + +func collectGPUSensors() []sensorMeasurement { + var measurements []sensorMeasurement + + m := collectNvidiaGPUSensors() + measurements = append(measurements, m...) + + return measurements +} + func collectSensors() ([]sensorMeasurement, error) { var measurements []sensorMeasurement for k, v := range sensorOIDS { output, err := exec.Command("sysctl", "-n", k).Output() if err != nil { - return nil, fmt.Errorf("failed to execute 'sysctl' command: %v", err) + continue } value, err := refineOutput(output) if err != nil { - return nil, fmt.Errorf("failed to execute 'sysctl' command: %v", err) + continue } measurements = append(measurements, sensorMeasurement{v, value}) - } + + m := collectGPUSensors() + measurements = append(measurements, m...) + return measurements, nil } |