mirror of
https://github.com/octoleo/syncthing.git
synced 2025-02-02 11:58:28 +00:00
Include system RAM size in usage report
This commit is contained in:
parent
66d4e9e5d7
commit
46e963443d
25
cmd/syncthing/memsize_darwin.go
Normal file
25
cmd/syncthing/memsize_darwin.go
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"os/exec"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func memorySize() (uint64, error) {
|
||||||
|
cmd := exec.Command("sysctl", "hw.memsize")
|
||||||
|
out, err := cmd.Output()
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
fs := strings.Fields(string(out))
|
||||||
|
if len(fs) != 2 {
|
||||||
|
return 0, errors.New("sysctl parse error")
|
||||||
|
}
|
||||||
|
bytes, err := strconv.ParseUint(fs[1], 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return bytes, nil
|
||||||
|
}
|
33
cmd/syncthing/memsize_linux.go
Normal file
33
cmd/syncthing/memsize_linux.go
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"errors"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func memorySize() (uint64, error) {
|
||||||
|
f, err := os.Open("/proc/meminfo")
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
s := bufio.NewScanner(f)
|
||||||
|
if !s.Scan() {
|
||||||
|
return 0, errors.New("/proc/meminfo parse error 1")
|
||||||
|
}
|
||||||
|
|
||||||
|
l := s.Text()
|
||||||
|
fs := strings.Fields(l)
|
||||||
|
if len(fs) != 3 || fs[2] != "kB" {
|
||||||
|
return 0, errors.New("/proc/meminfo parse error 2")
|
||||||
|
}
|
||||||
|
|
||||||
|
kb, err := strconv.ParseUint(fs[1], 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return kb * 1024, nil
|
||||||
|
}
|
9
cmd/syncthing/memsize_unimpl.go
Normal file
9
cmd/syncthing/memsize_unimpl.go
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
// +build freebsd solaris
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
|
func memorySize() (uint64, error) {
|
||||||
|
return 0, errors.New("not implemented")
|
||||||
|
}
|
25
cmd/syncthing/memsize_windows.go
Normal file
25
cmd/syncthing/memsize_windows.go
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/binary"
|
||||||
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
kernel32, _ = syscall.LoadLibrary("kernel32.dll")
|
||||||
|
globalMemoryStatusEx, _ = syscall.GetProcAddress(kernel32, "GlobalMemoryStatusEx")
|
||||||
|
)
|
||||||
|
|
||||||
|
func memorySize() (uint64, error) {
|
||||||
|
var memoryStatusEx [64]byte
|
||||||
|
binary.LittleEndian.PutUint32(memoryStatusEx[:], 64)
|
||||||
|
p := uintptr(unsafe.Pointer(&memoryStatusEx[0]))
|
||||||
|
|
||||||
|
ret, _, callErr := syscall.Syscall(uintptr(globalMemoryStatusEx), 1, p, 0, 0)
|
||||||
|
if ret == 0 {
|
||||||
|
return 0, callErr
|
||||||
|
}
|
||||||
|
|
||||||
|
return binary.LittleEndian.Uint64(memoryStatusEx[8:]), nil
|
||||||
|
}
|
@ -61,6 +61,11 @@ func reportData(m *model.Model) map[string]interface{} {
|
|||||||
}
|
}
|
||||||
res["sha256Perf"] = perf
|
res["sha256Perf"] = perf
|
||||||
|
|
||||||
|
bytes, err := memorySize()
|
||||||
|
if err == nil {
|
||||||
|
res["memorySize"] = bytes / 1024 / 1024
|
||||||
|
}
|
||||||
|
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user