MCPcopy Create free account
hub / github.com/CovenantSQL/CovenantSQL / parseMemInfoNuma

Function parseMemInfoNuma

metric/meminfo_numa_linux.go:33–66  ·  view source on GitHub ↗
(r io.Reader)

Source from the content-addressed store, hash-verified

31}
32
33func parseMemInfoNuma(r io.Reader) ([]meminfoMetric, error) {
34 var (
35 memInfo []meminfoMetric
36 scanner = bufio.NewScanner(r)
37 re = regexp.MustCompile(`\((.*)\)`)
38 )
39
40 for scanner.Scan() {
41 line := strings.TrimSpace(scanner.Text())
42 if line == "" {
43 continue
44 }
45 parts := strings.Fields(line)
46
47 fv, err := strconv.ParseFloat(parts[3], 64)
48 if err != nil {
49 return nil, fmt.Errorf("invalid value in meminfo: %s", err)
50 }
51 switch l := len(parts); {
52 case l == 4: // no unit
53 case l == 5 && parts[4] == "kB": // has unit
54 fv *= 1024
55 default:
56 return nil, fmt.Errorf("invalid line in meminfo: %s", line)
57 }
58 metric := strings.TrimRight(parts[2], ":")
59
60 // Active(anon) -> Active_anon
61 metric = re.ReplaceAllString(metric, "_${1}")
62 memInfo = append(memInfo, meminfoMetric{metric, prometheus.GaugeValue, parts[1], fv})
63 }
64
65 return memInfo, scanner.Err()
66}
67
68func parseMemInfoNumaStat(r io.Reader, nodeNumber string) ([]meminfoMetric, error) {
69 var (

Callers 1

TestMemInfoNumaFunction · 0.85

Calls 2

ErrorfMethod · 0.80
ScanMethod · 0.45

Tested by 1

TestMemInfoNumaFunction · 0.68