Handle the case when the `cpufreq` sysfs does not exist

* on virtualized host, this may happen.
* but we may have a value from parsing `/proc/cpuinfo`
* in this case, we do not return the error if we fail to extra
  a value from `cpufreq/cpuinfo_max_freq`
This commit is contained in:
K.C. Wong 2016-08-29 16:21:17 -07:00
parent 10a1ae2123
commit 3dc4e52844
1 changed files with 12 additions and 2 deletions

View File

@ -80,12 +80,22 @@ func finishCPUInfo(c *InfoStat) error {
// of the value from /proc/cpuinfo because we want to report the maximum // of the value from /proc/cpuinfo because we want to report the maximum
// clock-speed of the CPU for c.Mhz, matching the behaviour of Windows // clock-speed of the CPU for c.Mhz, matching the behaviour of Windows
lines, err = common.ReadLines(sysCPUPath(c.CPU, "cpufreq/cpuinfo_max_freq")) lines, err = common.ReadLines(sysCPUPath(c.CPU, "cpufreq/cpuinfo_max_freq"))
// if we encounter errors below but has a value from parsing /proc/cpuinfo
// then we ignore the error
if err != nil { if err != nil {
if c.Mhz == 0 {
return err return err
} else {
return nil
}
} }
value, err = strconv.ParseFloat(lines[0], 64) value, err = strconv.ParseFloat(lines[0], 64)
if err != nil { if err != nil {
if c.Mhz == 0 {
return err return err
} else {
return nil
}
} }
c.Mhz = value/1000.0 // value is in kHz c.Mhz = value/1000.0 // value is in kHz
return nil return nil