Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
1fa2d3d6
Commit
1fa2d3d6
authored
Jun 21, 2018
by
David Ashpole
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update cadvisor godeps to v0.29.2
parent
5208e803
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
140 additions
and
130 deletions
+140
-130
Godeps.json
Godeps/Godeps.json
+89
-86
nvidia.go
vendor/github.com/google/cadvisor/accelerators/nvidia.go
+22
-27
handler.go
vendor/github.com/google/cadvisor/container/crio/handler.go
+4
-8
handler.go
...or/github.com/google/cadvisor/container/docker/handler.go
+4
-8
fs.go
vendor/github.com/google/cadvisor/fs/fs.go
+15
-0
manager.go
vendor/github.com/google/cadvisor/manager/manager.go
+1
-1
raw.go
vendor/github.com/google/cadvisor/manager/watcher/raw/raw.go
+5
-0
No files found.
Godeps/Godeps.json
View file @
1fa2d3d6
This diff is collapsed.
Click to expand it.
vendor/github.com/google/cadvisor/accelerators/nvidia.go
View file @
1fa2d3d6
...
@@ -31,7 +31,10 @@ import (
...
@@ -31,7 +31,10 @@ import (
)
)
type
NvidiaManager
struct
{
type
NvidiaManager
struct
{
sync
.
RWMutex
sync
.
Mutex
// true if there are NVIDIA devices present on the node
devicesPresent
bool
// true if the NVML library (libnvidia-ml.so.1) was loaded successfully
// true if the NVML library (libnvidia-ml.so.1) was loaded successfully
nvmlInitialized
bool
nvmlInitialized
bool
...
@@ -51,20 +54,9 @@ func (nm *NvidiaManager) Setup() {
...
@@ -51,20 +54,9 @@ func (nm *NvidiaManager) Setup() {
return
return
}
}
nm
.
initializeNVML
()
nm
.
devicesPresent
=
true
if
nm
.
nvmlInitialized
{
return
initializeNVML
(
nm
)
}
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.
// detectDevices returns true if a device with given pci id is present on the node.
...
@@ -91,20 +83,18 @@ func detectDevices(vendorId string) bool {
...
@@ -91,20 +83,18 @@ func detectDevices(vendorId string) bool {
}
}
// initializeNVML initializes the NVML library and sets up the nvmlDevices map.
// initializeNVML initializes the NVML library and sets up the nvmlDevices map.
func
(
nm
*
NvidiaManager
)
initializeNVML
()
{
// This is defined as a variable to help in testing.
var
initializeNVML
=
func
(
nm
*
NvidiaManager
)
{
if
err
:=
gonvml
.
Initialize
();
err
!=
nil
{
if
err
:=
gonvml
.
Initialize
();
err
!=
nil
{
// This is under a logging level because otherwise we may cause
// This is under a logging level because otherwise we may cause
// log spam if the drivers/nvml is not installed on the system.
// log spam if the drivers/nvml is not installed on the system.
glog
.
V
(
4
)
.
Infof
(
"Could not initialize NVML: %v"
,
err
)
glog
.
V
(
4
)
.
Infof
(
"Could not initialize NVML: %v"
,
err
)
return
return
}
}
nm
.
nvmlInitialized
=
true
numDevices
,
err
:=
gonvml
.
DeviceCount
()
numDevices
,
err
:=
gonvml
.
DeviceCount
()
if
err
!=
nil
{
if
err
!=
nil
{
glog
.
Warningf
(
"GPU metrics would not be available. Failed to get the number of nvidia devices: %v"
,
err
)
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
return
}
}
glog
.
V
(
1
)
.
Infof
(
"NVML initialized. Number of nvidia devices: %v"
,
numDevices
)
glog
.
V
(
1
)
.
Infof
(
"NVML initialized. Number of nvidia devices: %v"
,
numDevices
)
...
@@ -122,10 +112,6 @@ func (nm *NvidiaManager) initializeNVML() {
...
@@ -122,10 +112,6 @@ func (nm *NvidiaManager) initializeNVML() {
}
}
nm
.
nvidiaDevices
[
int
(
minorNumber
)]
=
device
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.
// Destroy shuts down NVML.
...
@@ -139,12 +125,21 @@ func (nm *NvidiaManager) Destroy() {
...
@@ -139,12 +125,21 @@ func (nm *NvidiaManager) Destroy() {
// present in the devices.list file in the given devicesCgroupPath.
// present in the devices.list file in the given devicesCgroupPath.
func
(
nm
*
NvidiaManager
)
GetCollector
(
devicesCgroupPath
string
)
(
AcceleratorCollector
,
error
)
{
func
(
nm
*
NvidiaManager
)
GetCollector
(
devicesCgroupPath
string
)
(
AcceleratorCollector
,
error
)
{
nc
:=
&
NvidiaCollector
{}
nc
:=
&
NvidiaCollector
{}
nm
.
RLock
()
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
)
}
if
!
nm
.
nvmlInitialized
||
len
(
nm
.
nvidiaDevices
)
==
0
{
if
!
nm
.
nvmlInitialized
||
len
(
nm
.
nvidiaDevices
)
==
0
{
nm
.
R
Unlock
()
nm
.
Unlock
()
return
nc
,
nil
return
nc
,
nil
}
}
nm
.
R
Unlock
()
nm
.
Unlock
()
nvidiaMinorNumbers
,
err
:=
parseDevicesCgroup
(
devicesCgroupPath
)
nvidiaMinorNumbers
,
err
:=
parseDevicesCgroup
(
devicesCgroupPath
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nc
,
err
return
nc
,
err
...
...
vendor/github.com/google/cadvisor/container/crio/handler.go
View file @
1fa2d3d6
...
@@ -81,9 +81,6 @@ type crioContainerHandler struct {
...
@@ -81,9 +81,6 @@ type crioContainerHandler struct {
ipAddress
string
ipAddress
string
ignoreMetrics
container
.
MetricSet
ignoreMetrics
container
.
MetricSet
// container restart count
restartCount
int
}
}
var
_
container
.
ContainerHandler
=
&
crioContainerHandler
{}
var
_
container
.
ContainerHandler
=
&
crioContainerHandler
{}
...
@@ -175,7 +172,10 @@ func newCrioContainerHandler(
...
@@ -175,7 +172,10 @@ func newCrioContainerHandler(
// ignore err and get zero as default, this happens with sandboxes, not sure why...
// ignore err and get zero as default, this happens with sandboxes, not sure why...
// kube isn't sending restart count in labels for sandboxes.
// kube isn't sending restart count in labels for sandboxes.
restartCount
,
_
:=
strconv
.
Atoi
(
cInfo
.
Annotations
[
"io.kubernetes.container.restartCount"
])
restartCount
,
_
:=
strconv
.
Atoi
(
cInfo
.
Annotations
[
"io.kubernetes.container.restartCount"
])
handler
.
restartCount
=
restartCount
// Only adds restartcount label if it's greater than 0
if
restartCount
>
0
{
handler
.
labels
[
"restartcount"
]
=
strconv
.
Itoa
(
restartCount
)
}
handler
.
ipAddress
=
cInfo
.
IP
handler
.
ipAddress
=
cInfo
.
IP
...
@@ -225,10 +225,6 @@ func (self *crioContainerHandler) GetSpec() (info.ContainerSpec, error) {
...
@@ -225,10 +225,6 @@ func (self *crioContainerHandler) GetSpec() (info.ContainerSpec, error) {
spec
,
err
:=
common
.
GetSpec
(
self
.
cgroupPaths
,
self
.
machineInfoFactory
,
self
.
needNet
(),
hasFilesystem
)
spec
,
err
:=
common
.
GetSpec
(
self
.
cgroupPaths
,
self
.
machineInfoFactory
,
self
.
needNet
(),
hasFilesystem
)
spec
.
Labels
=
self
.
labels
spec
.
Labels
=
self
.
labels
// Only adds restartcount label if it's greater than 0
if
self
.
restartCount
>
0
{
spec
.
Labels
[
"restartcount"
]
=
strconv
.
Itoa
(
self
.
restartCount
)
}
spec
.
Envs
=
self
.
envs
spec
.
Envs
=
self
.
envs
spec
.
Image
=
self
.
image
spec
.
Image
=
self
.
image
...
...
vendor/github.com/google/cadvisor/container/docker/handler.go
View file @
1fa2d3d6
...
@@ -115,9 +115,6 @@ type dockerContainerHandler struct {
...
@@ -115,9 +115,6 @@ type dockerContainerHandler struct {
// zfs watcher
// zfs watcher
zfsWatcher
*
zfs
.
ZfsWatcher
zfsWatcher
*
zfs
.
ZfsWatcher
// container restart count
restartCount
int
}
}
var
_
container
.
ContainerHandler
=
&
dockerContainerHandler
{}
var
_
container
.
ContainerHandler
=
&
dockerContainerHandler
{}
...
@@ -250,7 +247,10 @@ func newDockerContainerHandler(
...
@@ -250,7 +247,10 @@ func newDockerContainerHandler(
handler
.
image
=
ctnr
.
Config
.
Image
handler
.
image
=
ctnr
.
Config
.
Image
handler
.
networkMode
=
ctnr
.
HostConfig
.
NetworkMode
handler
.
networkMode
=
ctnr
.
HostConfig
.
NetworkMode
handler
.
deviceID
=
ctnr
.
GraphDriver
.
Data
[
"DeviceId"
]
handler
.
deviceID
=
ctnr
.
GraphDriver
.
Data
[
"DeviceId"
]
handler
.
restartCount
=
ctnr
.
RestartCount
// Only adds restartcount label if it's greater than 0
if
ctnr
.
RestartCount
>
0
{
handler
.
labels
[
"restartcount"
]
=
strconv
.
Itoa
(
ctnr
.
RestartCount
)
}
// Obtain the IP address for the contianer.
// Obtain the IP address for the contianer.
// If the NetworkMode starts with 'container:' then we need to use the IP address of the container specified.
// If the NetworkMode starts with 'container:' then we need to use the IP address of the container specified.
...
@@ -386,10 +386,6 @@ func (self *dockerContainerHandler) GetSpec() (info.ContainerSpec, error) {
...
@@ -386,10 +386,6 @@ func (self *dockerContainerHandler) GetSpec() (info.ContainerSpec, error) {
spec
,
err
:=
common
.
GetSpec
(
self
.
cgroupPaths
,
self
.
machineInfoFactory
,
self
.
needNet
(),
hasFilesystem
)
spec
,
err
:=
common
.
GetSpec
(
self
.
cgroupPaths
,
self
.
machineInfoFactory
,
self
.
needNet
(),
hasFilesystem
)
spec
.
Labels
=
self
.
labels
spec
.
Labels
=
self
.
labels
// Only adds restartcount label if it's greater than 0
if
self
.
restartCount
>
0
{
spec
.
Labels
[
"restartcount"
]
=
strconv
.
Itoa
(
self
.
restartCount
)
}
spec
.
Envs
=
self
.
envs
spec
.
Envs
=
self
.
envs
spec
.
Image
=
self
.
image
spec
.
Image
=
self
.
image
spec
.
CreationTime
=
self
.
creationTime
spec
.
CreationTime
=
self
.
creationTime
...
...
vendor/github.com/google/cadvisor/fs/fs.go
View file @
1fa2d3d6
...
@@ -533,6 +533,21 @@ func (self *RealFsInfo) GetDirFsDevice(dir string) (*DeviceInfo, error) {
...
@@ -533,6 +533,21 @@ func (self *RealFsInfo) GetDirFsDevice(dir string) (*DeviceInfo, error) {
}
}
mount
,
found
:=
self
.
mounts
[
dir
]
mount
,
found
:=
self
.
mounts
[
dir
]
// try the parent dir if not found until we reach the root dir
// this is an issue on btrfs systems where the directory is not
// the subvolume
for
!
found
{
pathdir
,
_
:=
filepath
.
Split
(
dir
)
// break when we reach root
if
pathdir
==
"/"
{
break
}
// trim "/" from the new parent path otherwise the next possible
// filepath.Split in the loop will not split the string any further
dir
=
strings
.
TrimSuffix
(
pathdir
,
"/"
)
mount
,
found
=
self
.
mounts
[
dir
]
}
if
found
&&
mount
.
Fstype
==
"btrfs"
&&
mount
.
Major
==
0
&&
strings
.
HasPrefix
(
mount
.
Source
,
"/dev/"
)
{
if
found
&&
mount
.
Fstype
==
"btrfs"
&&
mount
.
Major
==
0
&&
strings
.
HasPrefix
(
mount
.
Source
,
"/dev/"
)
{
major
,
minor
,
err
:=
getBtrfsMajorMinorIds
(
mount
)
major
,
minor
,
err
:=
getBtrfsMajorMinorIds
(
mount
)
if
err
!=
nil
{
if
err
!=
nil
{
...
...
vendor/github.com/google/cadvisor/manager/manager.go
View file @
1fa2d3d6
...
@@ -242,7 +242,7 @@ func retryDockerStatus() info.DockerStatus {
...
@@ -242,7 +242,7 @@ func retryDockerStatus() info.DockerStatus {
for
{
for
{
ctx
,
_
:=
context
.
WithTimeout
(
context
.
Background
(),
startupTimeout
)
ctx
,
_
:=
context
.
WithTimeout
(
context
.
Background
(),
startupTimeout
)
dockerStatus
,
err
:=
docker
.
StatusWithContext
(
ctx
)
dockerStatus
,
err
:=
docker
.
StatusWithContext
(
ctx
)
if
err
!
=
nil
{
if
err
=
=
nil
{
return
dockerStatus
return
dockerStatus
}
}
...
...
vendor/github.com/google/cadvisor/manager/watcher/raw/raw.go
View file @
1fa2d3d6
...
@@ -110,6 +110,11 @@ func (self *rawContainerWatcher) Stop() error {
...
@@ -110,6 +110,11 @@ func (self *rawContainerWatcher) Stop() error {
// Watches the specified directory and all subdirectories. Returns whether the path was
// Watches the specified directory and all subdirectories. Returns whether the path was
// already being watched and an error (if any).
// already being watched and an error (if any).
func
(
self
*
rawContainerWatcher
)
watchDirectory
(
dir
string
,
containerName
string
)
(
bool
,
error
)
{
func
(
self
*
rawContainerWatcher
)
watchDirectory
(
dir
string
,
containerName
string
)
(
bool
,
error
)
{
// Don't watch .mount cgroups because they never have containers as sub-cgroups. A single container
// can have many .mount cgroups associated with it which can quickly exhaust the inotify watches on a node.
if
strings
.
HasSuffix
(
containerName
,
".mount"
)
{
return
false
,
nil
}
alreadyWatching
,
err
:=
self
.
watcher
.
AddWatch
(
containerName
,
dir
)
alreadyWatching
,
err
:=
self
.
watcher
.
AddWatch
(
containerName
,
dir
)
if
err
!=
nil
{
if
err
!=
nil
{
return
alreadyWatching
,
err
return
alreadyWatching
,
err
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment