You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@yunikorn.apache.org by GitBox <gi...@apache.org> on 2021/08/11 05:10:04 UTC

[GitHub] [incubator-yunikorn-k8shim] wilfred-s commented on a change in pull request #281: [YUNIKONR-706] Fix the resource calculation when the pod has init-containers

wilfred-s commented on a change in pull request #281:
URL: https://github.com/apache/incubator-yunikorn-k8shim/pull/281#discussion_r686495224



##########
File path: pkg/common/resource.go
##########
@@ -72,9 +72,32 @@ func GetPodResource(pod *v1.Pod) (resource *si.Resource) {
 		containerResource := getResource(resourceList)
 		podResource = Add(podResource, containerResource)
 	}
+
+	// vcore, mem compare between initcontainer and containers and replace
+	// For each resource, podResourceRequest = max(sum(Containers requirement), InitContainers requirement)
+	if pod.Spec.InitContainers != nil {
+		isNeedMoreResourceAndSet(pod, podResource)
+	}
+
 	return podResource
 }
 
+func isNeedMoreResourceAndSet(pod *v1.Pod, containersResources *si.Resource) {
+	for _, c := range pod.Spec.InitContainers {
+		resourceList := c.Resources.Requests
+		ICResource := getResource(resourceList)
+		for resourceName, ICRequest := range ICResource.Resources {
+			containersRequests, exist := containersResources.Resources[resourceName]

Review comment:
       Does this mean we skip a request that is not defined on the container resources? That does not look right. 
   cont = 1GB, 1cpu
   init cont = 2GB, 1GPU
   the result should be 2GB, 1cpu, 1GPU a merge of all requests.

##########
File path: pkg/common/resource.go
##########
@@ -72,9 +72,32 @@ func GetPodResource(pod *v1.Pod) (resource *si.Resource) {
 		containerResource := getResource(resourceList)
 		podResource = Add(podResource, containerResource)
 	}
+
+	// vcore, mem compare between initcontainer and containers and replace
+	// For each resource, podResourceRequest = max(sum(Containers requirement), InitContainers requirement)
+	if pod.Spec.InitContainers != nil {
+		isNeedMoreResourceAndSet(pod, podResource)
+	}
+
 	return podResource
 }
 
+func isNeedMoreResourceAndSet(pod *v1.Pod, containersResources *si.Resource) {

Review comment:
       Can we rename this function? something like `checkInitContainerRequest()`




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscribe@yunikorn.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org