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) {
|
||||
// First try to create a netlink 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.
|
||||
// First try to create a scheddebug based load reader.
|
||||
schedReader, schedErr := scheddebug.New()
|
||||
if schedErr != nil {
|
||||
return nil, fmt.Errorf("failed to create any cpu load reader - netlink based (%v), scheddebug based (%v)", err, schedErr)
|
||||
}
|
||||
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)
|
||||
}
|
||||
glog.Info("Using a netlink-based load reader")
|
||||
return reader, nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user