From 25c3ddf22e1727bfb56f9239f4ce7f943b579e3e Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Tue, 17 Mar 2020 15:53:20 -0400 Subject: [PATCH] Just use runtime.NumCPU on windows docker folks added NumCPU implementation for windows that supported hot-plugging of CPUs. The implementation used the GetProcessAffinityMask to be able to check which CPUs are active as well. https://github.com/moby/moby/commit/3707a76921b412cb42e6134beaa0bddbb5e08f25 The golang "runtime" package has also bene using GetProcessAffinityMask since 1.6 beta1: https://github.com/golang/go/commit/6410e67a1eb38df3cc72cef818ed392bea907251 So we don't seem to need the sysinfo.NumCPU from docker/docker. (Note that this is PR is an effort to get away from dependencies from docker/docker) Signed-off-by: Davanum Srinivas --- pkg/kubelet/dockershim/BUILD | 1 - pkg/kubelet/dockershim/helpers_windows.go | 4 ++-- pkg/kubelet/kuberuntime/BUILD | 1 - pkg/kubelet/kuberuntime/kuberuntime_container_windows.go | 5 ++--- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/pkg/kubelet/dockershim/BUILD b/pkg/kubelet/dockershim/BUILD index 6fd54ad24d2..c3d42a1ff47 100644 --- a/pkg/kubelet/dockershim/BUILD +++ b/pkg/kubelet/dockershim/BUILD @@ -78,7 +78,6 @@ go_library( "//pkg/kubelet/apis:go_default_library", "//pkg/kubelet/winstats:go_default_library", "//vendor/github.com/Microsoft/hcsshim:go_default_library", - "//vendor/github.com/docker/docker/pkg/sysinfo:go_default_library", "//vendor/golang.org/x/sys/windows/registry:go_default_library", ], "//conditions:default": [], diff --git a/pkg/kubelet/dockershim/helpers_windows.go b/pkg/kubelet/dockershim/helpers_windows.go index 42d32839b5b..effdf92be3d 100644 --- a/pkg/kubelet/dockershim/helpers_windows.go +++ b/pkg/kubelet/dockershim/helpers_windows.go @@ -20,12 +20,12 @@ package dockershim import ( "os" + "runtime" "github.com/blang/semver" dockertypes "github.com/docker/docker/api/types" dockercontainer "github.com/docker/docker/api/types/container" dockerfilters "github.com/docker/docker/api/types/filters" - "github.com/docker/docker/pkg/sysinfo" "k8s.io/klog" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1alpha2" @@ -75,7 +75,7 @@ func (ds *dockerService) updateCreateConfig( Memory: rOpts.MemoryLimitInBytes, CPUShares: rOpts.CpuShares, CPUCount: rOpts.CpuCount, - NanoCPUs: rOpts.CpuMaximum * int64(sysinfo.NumCPU()) * (1e9 / 10000), + NanoCPUs: rOpts.CpuMaximum * int64(runtime.NumCPU()) * (1e9 / 10000), } } diff --git a/pkg/kubelet/kuberuntime/BUILD b/pkg/kubelet/kuberuntime/BUILD index 3b3d3feeff7..702e7d52d92 100644 --- a/pkg/kubelet/kuberuntime/BUILD +++ b/pkg/kubelet/kuberuntime/BUILD @@ -83,7 +83,6 @@ go_library( ], "@io_bazel_rules_go//go/platform:windows": [ "//pkg/kubelet/apis:go_default_library", - "//vendor/github.com/docker/docker/pkg/sysinfo:go_default_library", ], "//conditions:default": [], }), diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go b/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go index 7adb387d4f2..81c4f0336a1 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go @@ -20,8 +20,7 @@ package kuberuntime import ( "fmt" - - "github.com/docker/docker/pkg/sysinfo" + "runtime" "k8s.io/api/core/v1" utilfeature "k8s.io/apiserver/pkg/util/feature" @@ -85,7 +84,7 @@ func (m *kubeGenericRuntimeManager) generateWindowsContainerConfig(container *v1 // https://github.com/opencontainers/runtime-spec/blob/ad53dcdc39f1f7f7472b10aa0a45648fe4865496/config-windows.md#cpu // If both CpuWeight and CpuMaximum are set - ContainerD catches this invalid case and returns an error instead. - cpuMaximum := 10000 * cpuLimit.MilliValue() / int64(sysinfo.NumCPU()) / 1000 + cpuMaximum := 10000 * cpuLimit.MilliValue() / int64(runtime.NumCPU()) / 1000 // TODO: This should be reviewed or removed once Hyper-V support is implemented with CRI-ContainerD // in a future release. cpuCount may or may not be required if cpuMaximum is set.