mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-30 21:30:16 +00:00 
			
		
		
		
	vendor: update docker cadvisor winterm
This vendor change was purely for the changes in docker to allow for setting the Masked and Read-only paths. See: moby/moby#36644 But because of the docker dep update it also needed cadvisor to be updated and winterm due to changes in pkg/tlsconfig in docker See: google/cadvisor#1967 Signed-off-by: Jess Frazelle <acidburn@microsoft.com>
This commit is contained in:
		
							
								
								
									
										49
									
								
								vendor/github.com/google/cadvisor/accelerators/nvidia.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										49
									
								
								vendor/github.com/google/cadvisor/accelerators/nvidia.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -31,10 +31,7 @@ import ( | ||||
| ) | ||||
|  | ||||
| type NvidiaManager struct { | ||||
| 	sync.Mutex | ||||
|  | ||||
| 	// true if there are NVIDIA devices present on the node | ||||
| 	devicesPresent bool | ||||
| 	sync.RWMutex | ||||
|  | ||||
| 	// true if the NVML library (libnvidia-ml.so.1) was loaded successfully | ||||
| 	nvmlInitialized bool | ||||
| @@ -54,9 +51,20 @@ func (nm *NvidiaManager) Setup() { | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	nm.devicesPresent = true | ||||
|  | ||||
| 	initializeNVML(nm) | ||||
| 	nm.initializeNVML() | ||||
| 	if nm.nvmlInitialized { | ||||
| 		return | ||||
| 	} | ||||
| 	go func() { | ||||
| 		glog.V(2).Info("Starting goroutine to initialize NVML") | ||||
| 		// TODO: use globalHousekeepingInterval | ||||
| 		for range time.Tick(time.Minute) { | ||||
| 			nm.initializeNVML() | ||||
| 			if nm.nvmlInitialized { | ||||
| 				return | ||||
| 			} | ||||
| 		} | ||||
| 	}() | ||||
| } | ||||
|  | ||||
| // detectDevices returns true if a device with given pci id is present on the node. | ||||
| @@ -83,18 +91,20 @@ func detectDevices(vendorId string) bool { | ||||
| } | ||||
|  | ||||
| // initializeNVML initializes the NVML library and sets up the nvmlDevices map. | ||||
| // This is defined as a variable to help in testing. | ||||
| var initializeNVML = func(nm *NvidiaManager) { | ||||
| func (nm *NvidiaManager) initializeNVML() { | ||||
| 	if err := gonvml.Initialize(); err != nil { | ||||
| 		// This is under a logging level because otherwise we may cause | ||||
| 		// log spam if the drivers/nvml is not installed on the system. | ||||
| 		glog.V(4).Infof("Could not initialize NVML: %v", err) | ||||
| 		return | ||||
| 	} | ||||
| 	nm.nvmlInitialized = true | ||||
| 	numDevices, err := gonvml.DeviceCount() | ||||
| 	if err != nil { | ||||
| 		glog.Warningf("GPU metrics would not be available. Failed to get the number of nvidia devices: %v", err) | ||||
| 		nm.Lock() | ||||
| 		// Even though we won't have GPU metrics, the library was initialized and should be shutdown when exiting. | ||||
| 		nm.nvmlInitialized = true | ||||
| 		nm.Unlock() | ||||
| 		return | ||||
| 	} | ||||
| 	glog.V(1).Infof("NVML initialized. Number of nvidia devices: %v", numDevices) | ||||
| @@ -112,6 +122,10 @@ var initializeNVML = func(nm *NvidiaManager) { | ||||
| 		} | ||||
| 		nm.nvidiaDevices[int(minorNumber)] = device | ||||
| 	} | ||||
| 	nm.Lock() | ||||
| 	// Doing this at the end to avoid race in accessing nvidiaDevices in GetCollector. | ||||
| 	nm.nvmlInitialized = true | ||||
| 	nm.Unlock() | ||||
| } | ||||
|  | ||||
| // Destroy shuts down NVML. | ||||
| @@ -125,21 +139,12 @@ func (nm *NvidiaManager) Destroy() { | ||||
| // present in the devices.list file in the given devicesCgroupPath. | ||||
| func (nm *NvidiaManager) GetCollector(devicesCgroupPath string) (AcceleratorCollector, error) { | ||||
| 	nc := &NvidiaCollector{} | ||||
|  | ||||
| 	if !nm.devicesPresent { | ||||
| 		return nc, nil | ||||
| 	} | ||||
| 	// Makes sure that we don't call initializeNVML() concurrently and | ||||
| 	// that we only call initializeNVML() when it's not initialized. | ||||
| 	nm.Lock() | ||||
| 	if !nm.nvmlInitialized { | ||||
| 		initializeNVML(nm) | ||||
| 	} | ||||
| 	nm.RLock() | ||||
| 	if !nm.nvmlInitialized || len(nm.nvidiaDevices) == 0 { | ||||
| 		nm.Unlock() | ||||
| 		nm.RUnlock() | ||||
| 		return nc, nil | ||||
| 	} | ||||
| 	nm.Unlock() | ||||
| 	nm.RUnlock() | ||||
| 	nvidiaMinorNumbers, err := parseDevicesCgroup(devicesCgroupPath) | ||||
| 	if err != nil { | ||||
| 		return nc, err | ||||
|   | ||||
		Reference in New Issue
	
	Block a user