Prefer scheddebug over netlink for cpu load.
This commit is contained in:
parent
fbe23b0863
commit
db3d840a9d
@ -37,18 +37,18 @@ type CpuLoadReader interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func New() (CpuLoadReader, error) {
|
func New() (CpuLoadReader, error) {
|
||||||
// First try to create a netlink based load reader.
|
// First try to create a scheddebug based load reader.
|
||||||
reader, err := netlink.New()
|
|
||||||
if err == nil {
|
|
||||||
glog.Info("Using a netlink-based load reader")
|
|
||||||
return reader, nil
|
|
||||||
}
|
|
||||||
glog.V(1).Infof("failed to create a netlink-based cpu load read: %v", err)
|
|
||||||
// Netlink based load reader doesn't work inside namespaces. Fall back to using scheddebug.
|
|
||||||
schedReader, schedErr := scheddebug.New()
|
schedReader, schedErr := scheddebug.New()
|
||||||
if schedErr != nil {
|
if schedErr == nil {
|
||||||
|
glog.Info("Using a sched debug based load reader")
|
||||||
|
return schedReader, nil
|
||||||
|
}
|
||||||
|
glog.V(1).Infof("failed to create a scheddebug-based cpu load reader: %v", schedErr)
|
||||||
|
// netlink gives us more data than scheddebug, but it doesn't work inside network namespaces. It also needs to be hierarchical.
|
||||||
|
reader, err := netlink.New()
|
||||||
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to create any cpu load reader - netlink based (%v), scheddebug based (%v)", err, schedErr)
|
return nil, fmt.Errorf("failed to create any cpu load reader - netlink based (%v), scheddebug based (%v)", err, schedErr)
|
||||||
}
|
}
|
||||||
glog.Info("Using a sched debug based load reader")
|
glog.Info("Using a netlink-based load reader")
|
||||||
return schedReader, nil
|
return reader, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user