Merge pull request #1 from linux-on-ibm-z/SystemZ-Changes
System z changes
This commit is contained in:
commit
65019576b3
@ -20,7 +20,11 @@ import (
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
|
||||
// s390/s390x changes
|
||||
"syscall"
|
||||
"runtime"
|
||||
|
||||
"github.com/golang/glog"
|
||||
info "github.com/google/cadvisor/info/v1"
|
||||
"github.com/google/cadvisor/utils"
|
||||
@ -39,6 +43,11 @@ var swapCapacityRegexp = regexp.MustCompile("SwapTotal: *([0-9]+) kB")
|
||||
|
||||
// GetClockSpeed returns the CPU clock speed, given a []byte formatted as the /proc/cpuinfo file.
|
||||
func GetClockSpeed(procInfo []byte) (uint64, error) {
|
||||
// s390/s390x changes
|
||||
if (true == isSystemZ()) {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
// First look through sys to find a max supported cpu frequency.
|
||||
const maxFreqFile = "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"
|
||||
if utils.FileExists(maxFreqFile) {
|
||||
@ -119,6 +128,12 @@ func parseCapacity(b []byte, r *regexp.Regexp) (int64, error) {
|
||||
|
||||
func GetTopology(sysFs sysfs.SysFs, cpuinfo string) ([]info.Node, int, error) {
|
||||
nodes := []info.Node{}
|
||||
|
||||
// s390/s390x changes
|
||||
if true == isSystemZ() {
|
||||
return nodes, getNumCores(), nil
|
||||
}
|
||||
|
||||
numCores := 0
|
||||
lastThread := -1
|
||||
lastCore := -1
|
||||
@ -241,3 +256,42 @@ func addNode(nodes *[]info.Node, id int) (int, error) {
|
||||
}
|
||||
return idx, nil
|
||||
}
|
||||
|
||||
// s390/s390x changes
|
||||
func getMachineArch() (string, error) {
|
||||
uname := syscall.Utsname{}
|
||||
err := syscall.Uname(&uname)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
var arch string
|
||||
for _, val := range uname.Machine {
|
||||
arch += string(int(val))
|
||||
}
|
||||
|
||||
return arch, nil
|
||||
}
|
||||
|
||||
// s390/s390x changes
|
||||
func isSystemZ() bool {
|
||||
arch, err := getMachineArch()
|
||||
if err == nil {
|
||||
if (true == strings.Contains(arch, "390")) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// s390/s390x changes
|
||||
func getNumCores() int {
|
||||
maxProcs := runtime.GOMAXPROCS(0)
|
||||
numCPU := runtime.NumCPU()
|
||||
|
||||
if maxProcs < numCPU {
|
||||
return maxProcs
|
||||
}
|
||||
|
||||
return numCPU
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ const (
|
||||
netDir = "/sys/class/net"
|
||||
dmiDir = "/sys/class/dmi"
|
||||
ppcDevTree = "/proc/device-tree"
|
||||
s390xDevTree = "/etc" // s390/s390x changes
|
||||
)
|
||||
|
||||
type CacheInfo struct {
|
||||
@ -242,7 +243,11 @@ func (self *realSysFs) GetSystemUUID() (string, error) {
|
||||
//If running on a KVM guest on Power then UUID is /proc/device-tree/vm,uuid
|
||||
id, err = ioutil.ReadFile(path.Join(ppcDevTree, "vm,uuid"))
|
||||
if err != nil {
|
||||
return "", err
|
||||
// s390/s390x changes
|
||||
id, err = ioutil.ReadFile(path.Join(s390xDevTree, "machine-id"))
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user