mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	pinned cadvisor to a latest commit
Signed-off-by: Tarun Pothulapati <tarunpothulapati@outlook.com>
This commit is contained in:
		
							
								
								
									
										46
									
								
								vendor/github.com/google/cadvisor/container/libcontainer/handler.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								vendor/github.com/google/cadvisor/container/libcontainer/handler.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -27,18 +27,15 @@ import (
 | 
			
		||||
 | 
			
		||||
	"github.com/google/cadvisor/container"
 | 
			
		||||
	info "github.com/google/cadvisor/info/v1"
 | 
			
		||||
	"golang.org/x/sys/unix"
 | 
			
		||||
 | 
			
		||||
	"bytes"
 | 
			
		||||
 | 
			
		||||
	"github.com/opencontainers/runc/libcontainer"
 | 
			
		||||
	"github.com/opencontainers/runc/libcontainer/cgroups"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
*/
 | 
			
		||||
import "C"
 | 
			
		||||
 | 
			
		||||
type Handler struct {
 | 
			
		||||
	cgroupManager   cgroups.Manager
 | 
			
		||||
	rootFs          string
 | 
			
		||||
@@ -133,6 +130,9 @@ func (h *Handler) GetStats() (*info.ContainerStats, error) {
 | 
			
		||||
				klog.V(4).Infof("Unable to get Process Stats: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// if include processes metrics, just set threads metrics if exist, and has no relationship with cpu path
 | 
			
		||||
		setThreadsStats(cgroupStats, stats)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// For backwards compatibility.
 | 
			
		||||
@@ -144,7 +144,7 @@ func (h *Handler) GetStats() (*info.ContainerStats, error) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func processStatsFromProcs(rootFs string, cgroupPath string) (info.ProcessStats, error) {
 | 
			
		||||
	var fdCount uint64
 | 
			
		||||
	var fdCount, socketCount uint64
 | 
			
		||||
	filePath := path.Join(cgroupPath, "cgroup.procs")
 | 
			
		||||
	out, err := ioutil.ReadFile(filePath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -168,11 +168,23 @@ func processStatsFromProcs(rootFs string, cgroupPath string) (info.ProcessStats,
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		fdCount += uint64(len(fds))
 | 
			
		||||
		for _, fd := range fds {
 | 
			
		||||
			fdPath := path.Join(dirPath, fd.Name())
 | 
			
		||||
			linkName, err := os.Readlink(fdPath)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				klog.V(4).Infof("error while reading %q link: %v", fdPath, err)
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			if strings.HasPrefix(linkName, "socket") {
 | 
			
		||||
				socketCount++
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	processStats := info.ProcessStats{
 | 
			
		||||
		ProcessCount: uint64(len(pids)),
 | 
			
		||||
		FdCount:      fdCount,
 | 
			
		||||
		SocketCount:  socketCount,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return processStats, nil
 | 
			
		||||
@@ -514,19 +526,12 @@ func setCpuStats(s *cgroups.Stats, ret *info.ContainerStats, withPerCPU bool) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Copied from
 | 
			
		||||
// https://github.com/moby/moby/blob/8b1adf55c2af329a4334f21d9444d6a169000c81/daemon/stats/collector_unix.go#L73
 | 
			
		||||
// Apache 2.0, Copyright Docker, Inc.
 | 
			
		||||
func getNumberOnlineCPUs() (uint32, error) {
 | 
			
		||||
	i, err := C.sysconf(C._SC_NPROCESSORS_ONLN)
 | 
			
		||||
	// According to POSIX - errno is undefined after successful
 | 
			
		||||
	// sysconf, and can be non-zero in several cases, so look for
 | 
			
		||||
	// error in returned value not in errno.
 | 
			
		||||
	// (https://sourceware.org/bugzilla/show_bug.cgi?id=21536)
 | 
			
		||||
	if i == -1 {
 | 
			
		||||
	var availableCPUs unix.CPUSet
 | 
			
		||||
	if err := unix.SchedGetaffinity(0, &availableCPUs); err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
	}
 | 
			
		||||
	return uint32(i), nil
 | 
			
		||||
	return uint32(availableCPUs.Count()), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func setDiskIoStats(s *cgroups.Stats, ret *info.ContainerStats) {
 | 
			
		||||
@@ -598,6 +603,15 @@ func setNetworkStats(libcontainerStats *libcontainer.Stats, ret *info.ContainerS
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// read from pids path not cpu
 | 
			
		||||
func setThreadsStats(s *cgroups.Stats, ret *info.ContainerStats) {
 | 
			
		||||
	if s != nil {
 | 
			
		||||
		ret.Processes.ThreadsCurrent = s.PidsStats.Current
 | 
			
		||||
		ret.Processes.ThreadsMax = s.PidsStats.Limit
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newContainerStats(libcontainerStats *libcontainer.Stats, includedMetrics container.MetricSet) *info.ContainerStats {
 | 
			
		||||
	ret := &info.ContainerStats{
 | 
			
		||||
		Timestamp: time.Now(),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user