github.com/wrgl/wrgl@v0.14.0/pkg/mem/mem_linux.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright © 2022 Wrangle Ltd
     3  
     4  package mem
     5  
     6  import (
     7  	"os/exec"
     8  	"strconv"
     9  	"strings"
    10  )
    11  
    12  func GetTotalMem() (uint64, error) {
    13  	out, err := exec.Command("awk", "/MemTotal/ {print $2}", "/proc/meminfo").Output()
    14  	if err != nil {
    15  		return 0, err
    16  	}
    17  	u, err := strconv.ParseUint(strings.Trim(string(out), " \n"), 10, 64)
    18  	if err != nil {
    19  		return 0, err
    20  	}
    21  	return u * 1024, nil
    22  }
    23  
    24  func GetAvailMem() (uint64, error) {
    25  	out, err := exec.Command("awk", "/MemFree/ {print $2}", "/proc/meminfo").Output()
    26  	if err != nil {
    27  		return 0, err
    28  	}
    29  	u, err := strconv.ParseUint(strings.Trim(string(out), " \n"), 10, 64)
    30  	if err != nil {
    31  		return 0, err
    32  	}
    33  	return u * 1024, nil
    34  }