code: func GetResourceRequest(pod *v1.Pod) *schedulernodeinfo.Resource {
  	result := &schedulernodeinfo.Resource{}
  	for _, container := range pod.Spec.Containers {
  		result.Add(container.Resources.Requests)
  	}
  
  	// take max_resource(sum_pod, any_init_container)
  	for _, container := range pod.Spec.InitContainers {
  		result.SetMaxResource(container.Resources.Requests)
  	}
  
  	return result
  }
docs: // GetResourceRequest returns a *schedulernodeinfo.Resource that covers the largest
  // width in each resource dimension. Because init-containers run sequentially, we collect
  // the max in each dimension iteratively. In contrast, we sum the resource vectors for
  // regular containers since they run simultaneously.
  //
  // Example:
  //
  // Pod:
  //   InitContainers
  //     IC1:
  //       CPU: 2
  //       Memory: 1G
  //     IC2:
  //       CPU: 2
  //       Memory: 3G
  //   Containers
  //     C1:
  //       CPU: 2
  //       Memory: 1G
  //     C2:
  //       CPU: 1
  //       Memory: 1G
  //
  // Result: CPU: 3, Memory: 3G