From 43dac0bc4302fed79eaeb661723ca584a9c0496a Mon Sep 17 00:00:00 2001 From: HuabingZhao Date: Mon, 4 Sep 2017 15:00:54 +0800 Subject: restructure the source directory Issue-ID: OOM-61 Change-Id: Ib6f633d517ad197bfdbca59b374cdad2f1ed897e Signed-off-by: HuabingZhao --- .../k8s.io/kubernetes/pkg/kubelet/qos/doc.go | 25 ---- .../k8s.io/kubernetes/pkg/kubelet/qos/policy.go | 66 ---------- .../k8s.io/kubernetes/pkg/kubelet/qos/qos.go | 140 --------------------- .../k8s.io/kubernetes/pkg/kubelet/qos/types.go | 29 ----- 4 files changed, 260 deletions(-) delete mode 100644 kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/doc.go delete mode 100644 kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/policy.go delete mode 100644 kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/qos.go delete mode 100644 kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/types.go (limited to 'kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet') diff --git a/kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/doc.go b/kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/doc.go deleted file mode 100644 index ebc1cc5..0000000 --- a/kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/doc.go +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright 2015 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// package qos contains helper functions for quality of service. -// For each resource (memory, CPU) Kubelet supports three classes of containers. -// Memory guaranteed containers will receive the highest priority and will get all the resources -// they need. -// Burstable containers will be guaranteed their request and can “burst” and use more resources -// when available. -// Best-Effort containers, which don’t specify a request, can use resources only if not being used -// by other pods. -package qos diff --git a/kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/policy.go b/kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/policy.go deleted file mode 100644 index ad696f3..0000000 --- a/kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/policy.go +++ /dev/null @@ -1,66 +0,0 @@ -/* -Copyright 2015 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package qos - -import ( - "k8s.io/kubernetes/pkg/api" -) - -const ( - PodInfraOOMAdj int = -999 - KubeletOOMScoreAdj int = -999 - KubeProxyOOMScoreAdj int = -999 - guaranteedOOMScoreAdj int = -998 - besteffortOOMScoreAdj int = 1000 -) - -// GetContainerOOMAdjust returns the amount by which the OOM score of all processes in the -// container should be adjusted. -// The OOM score of a process is the percentage of memory it consumes -// multiplied by 10 (barring exceptional cases) + a configurable quantity which is between -1000 -// and 1000. Containers with higher OOM scores are killed if the system runs out of memory. -// See https://lwn.net/Articles/391222/ for more information. -func GetContainerOOMScoreAdjust(pod *api.Pod, container *api.Container, memoryCapacity int64) int { - switch GetPodQOS(pod) { - case Guaranteed: - // Guaranteed containers should be the last to get killed. - return guaranteedOOMScoreAdj - case BestEffort: - return besteffortOOMScoreAdj - } - - // Burstable containers are a middle tier, between Guaranteed and Best-Effort. Ideally, - // we want to protect Burstable containers that consume less memory than requested. - // The formula below is a heuristic. A container requesting for 10% of a system's - // memory will have an OOM score adjust of 900. If a process in container Y - // uses over 10% of memory, its OOM score will be 1000. The idea is that containers - // which use more than their request will have an OOM score of 1000 and will be prime - // targets for OOM kills. - // Note that this is a heuristic, it won't work if a container has many small processes. - memoryRequest := container.Resources.Requests.Memory().Value() - oomScoreAdjust := 1000 - (1000*memoryRequest)/memoryCapacity - // A guaranteed pod using 100% of memory can have an OOM score of 1. Ensure - // that burstable pods have a higher OOM score adjustment. - if oomScoreAdjust < 2 { - return 2 - } - // Give burstable pods a higher chance of survival over besteffort pods. - if int(oomScoreAdjust) == besteffortOOMScoreAdj { - return int(oomScoreAdjust - 1) - } - return int(oomScoreAdjust) -} diff --git a/kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/qos.go b/kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/qos.go deleted file mode 100644 index 2c0d19d..0000000 --- a/kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/qos.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright 2015 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package qos - -import ( - "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/api/resource" -) - -// isResourceGuaranteed returns true if the container's resource requirements are Guaranteed. -func isResourceGuaranteed(container *api.Container, resource api.ResourceName) bool { - // A container resource is guaranteed if its request == limit. - // If request == limit, the user is very confident of resource consumption. - req, hasReq := container.Resources.Requests[resource] - limit, hasLimit := container.Resources.Limits[resource] - if !hasReq || !hasLimit { - return false - } - return req.Cmp(limit) == 0 && req.Value() != 0 -} - -// isResourceBestEffort returns true if the container's resource requirements are best-effort. -func isResourceBestEffort(container *api.Container, resource api.ResourceName) bool { - // A container resource is best-effort if its request is unspecified or 0. - // If a request is specified, then the user expects some kind of resource guarantee. - req, hasReq := container.Resources.Requests[resource] - return !hasReq || req.Value() == 0 -} - -// GetPodQOS returns the QoS class of a pod. -// A pod is besteffort if none of its containers have specified any requests or limits. -// A pod is guaranteed only when requests and limits are specified for all the containers and they are equal. -// A pod is burstable if limits and requests do not match across all containers. -func GetPodQOS(pod *api.Pod) QOSClass { - requests := api.ResourceList{} - limits := api.ResourceList{} - zeroQuantity := resource.MustParse("0") - isGuaranteed := true - for _, container := range pod.Spec.Containers { - // process requests - for name, quantity := range container.Resources.Requests { - if quantity.Cmp(zeroQuantity) == 1 { - delta := quantity.Copy() - if _, exists := requests[name]; !exists { - requests[name] = *delta - } else { - delta.Add(requests[name]) - requests[name] = *delta - } - } - } - // process limits - for name, quantity := range container.Resources.Limits { - if quantity.Cmp(zeroQuantity) == 1 { - delta := quantity.Copy() - if _, exists := limits[name]; !exists { - limits[name] = *delta - } else { - delta.Add(limits[name]) - limits[name] = *delta - } - } - } - if len(container.Resources.Limits) != len(supportedComputeResources) { - isGuaranteed = false - } - } - if len(requests) == 0 && len(limits) == 0 { - return BestEffort - } - // Check is requests match limits for all resources. - if isGuaranteed { - for name, req := range requests { - if lim, exists := limits[name]; !exists || lim.Cmp(req) != 0 { - isGuaranteed = false - break - } - } - } - if isGuaranteed && - len(requests) == len(limits) && - len(limits) == len(supportedComputeResources) { - return Guaranteed - } - return Burstable -} - -// QOSList is a set of (resource name, QoS class) pairs. -type QOSList map[api.ResourceName]QOSClass - -// GetQOS returns a mapping of resource name to QoS class of a container -func GetQOS(container *api.Container) QOSList { - resourceToQOS := QOSList{} - for resource := range allResources(container) { - switch { - case isResourceGuaranteed(container, resource): - resourceToQOS[resource] = Guaranteed - case isResourceBestEffort(container, resource): - resourceToQOS[resource] = BestEffort - default: - resourceToQOS[resource] = Burstable - } - } - return resourceToQOS -} - -// supportedComputeResources is the list of supported compute resources -var supportedComputeResources = []api.ResourceName{ - api.ResourceCPU, - api.ResourceMemory, -} - -// allResources returns a set of all possible resources whose mapped key value is true if present on the container -func allResources(container *api.Container) map[api.ResourceName]bool { - resources := map[api.ResourceName]bool{} - for _, resource := range supportedComputeResources { - resources[resource] = false - } - for resource := range container.Resources.Requests { - resources[resource] = true - } - for resource := range container.Resources.Limits { - resources[resource] = true - } - return resources -} diff --git a/kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/types.go b/kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/types.go deleted file mode 100644 index e52dece..0000000 --- a/kube2msb/src/vendor/k8s.io/kubernetes/pkg/kubelet/qos/types.go +++ /dev/null @@ -1,29 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package qos - -// QOSClass defines the supported qos classes of Pods/Containers. -type QOSClass string - -const ( - // Guaranteed is the Guaranteed qos class. - Guaranteed QOSClass = "Guaranteed" - // Burstable is the Burstable qos class. - Burstable QOSClass = "Burstable" - // BestEffort is the BestEffort qos class. - BestEffort QOSClass = "BestEffort" -) -- cgit 1.2.3-korg