From 5b6a2b9018b821b82afc37cfe87e9e55fd095b60 Mon Sep 17 00:00:00 2001 From: Thomas Gruber Date: Mon, 12 Sep 2022 12:54:40 +0200 Subject: [PATCH] Merge latest fixed from `develop` to `main` (#85) * InfiniBandCollector: Scale raw readings from octets to bytes * Fix clock frequency coming from LikwidCollector and update docs --- collectors/infinibandMetric.go | 15 +++++++++------ collectors/likwidMetric.go | 7 ++++--- collectors/likwidMetric.md | 3 +++ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/collectors/infinibandMetric.go b/collectors/infinibandMetric.go index 92ea911..d6613c5 100644 --- a/collectors/infinibandMetric.go +++ b/collectors/infinibandMetric.go @@ -19,8 +19,9 @@ import ( const IB_BASEPATH = "/sys/class/infiniband/" type InfinibandCollectorMetric struct { - path string - unit string + path string + unit string + scale int64 } type InfinibandCollectorInfo struct { @@ -113,10 +114,10 @@ func (m *InfinibandCollector) Init(config json.RawMessage) error { // Check access to counter files countersDir := filepath.Join(path, "counters") portCounterFiles := map[string]InfinibandCollectorMetric{ - "ib_recv": {path: filepath.Join(countersDir, "port_rcv_data"), unit: "bytes"}, - "ib_xmit": {path: filepath.Join(countersDir, "port_xmit_data"), unit: "bytes"}, - "ib_recv_pkts": {path: filepath.Join(countersDir, "port_rcv_packets"), unit: "packets"}, - "ib_xmit_pkts": {path: filepath.Join(countersDir, "port_xmit_packets"), unit: "packets"}, + "ib_recv": {path: filepath.Join(countersDir, "port_rcv_data"), unit: "bytes", scale: 4}, + "ib_xmit": {path: filepath.Join(countersDir, "port_xmit_data"), unit: "bytes", scale: 4}, + "ib_recv_pkts": {path: filepath.Join(countersDir, "port_rcv_packets"), unit: "packets", scale: 1}, + "ib_xmit_pkts": {path: filepath.Join(countersDir, "port_xmit_packets"), unit: "packets", scale: 1}, } for _, counter := range portCounterFiles { err := unix.Access(counter.path, unix.R_OK) @@ -191,6 +192,8 @@ func (m *InfinibandCollector) Read(interval time.Duration, output chan lp.CCMetr fmt.Sprintf("Read(): Failed to convert Infininiband metrice %s='%s' to int64: %v", counterName, data, err)) continue } + // Scale raw value + v *= counterDef.scale // Send absolut values if m.config.SendAbsoluteValues { diff --git a/collectors/likwidMetric.go b/collectors/likwidMetric.go index c036415..f22d486 100644 --- a/collectors/likwidMetric.go +++ b/collectors/likwidMetric.go @@ -159,7 +159,8 @@ func getBaseFreq() float64 { data := strings.Replace(string(buffer), "\n", "", -1) x, err := strconv.ParseInt(data, 0, 64) if err == nil { - freq = float64(x) * 1e6 + freq = float64(x) + break } } } @@ -168,11 +169,11 @@ func getBaseFreq() float64 { C.power_init(0) info := C.get_powerInfo() if float64(info.baseFrequency) != 0 { - freq = float64(info.baseFrequency) * 1e6 + freq = float64(info.baseFrequency) } C.power_finalize() } - return freq + return freq * 1e3 } func (m *LikwidCollector) Init(config json.RawMessage) error { diff --git a/collectors/likwidMetric.md b/collectors/likwidMetric.md index 1bb211f..54640dc 100644 --- a/collectors/likwidMetric.md +++ b/collectors/likwidMetric.md @@ -7,6 +7,9 @@ The `likwid` collector is probably the most complicated collector. The LIKWID li "likwid": { "force_overwrite" : false, "invalid_to_zero" : false, + "liblikwid_path" : "/path/to/liblikwid.so", + "accessdaemon_path" : "/folder/that/contains/likwid-accessD", + "access_mode" : "direct or accessdaemon or perf_event", "eventsets": [ { "events" : {