@@ -69,8 +69,8 @@ func (rayJobObject *RayJobYamlObject) GenerateRayJobApplyConfig() *rayv1ac.RayJo
69
69
return rayJobApplyConfig
70
70
}
71
71
72
- // generateResources returns a corev1.ResourceList with the given CPU, memory, ephemeral storage, and GPU values for both requests and limits
73
- func generateResources (cpu , memory , ephemeralStorage , gpu string ) corev1.ResourceList {
72
+ // generateRequestResources returns a corev1.ResourceList with the given CPU, memory, ephemeral storage, and GPU values for only resource requests
73
+ func generateRequestResources (cpu , memory , ephemeralStorage , gpu string ) corev1.ResourceList {
74
74
resources := corev1.ResourceList {
75
75
corev1 .ResourceCPU : resource .MustParse (cpu ),
76
76
corev1 .ResourceMemory : resource .MustParse (memory ),
@@ -87,6 +87,23 @@ func generateResources(cpu, memory, ephemeralStorage, gpu string) corev1.Resourc
87
87
return resources
88
88
}
89
89
90
+ // generateLimitResources returns a corev1.ResourceList with the given memory, ephemeral storage, and GPU values for only resource limits
91
+ func generateLimitResources (memory , ephemeralStorage , gpu string ) corev1.ResourceList {
92
+ resources := corev1.ResourceList {
93
+ corev1 .ResourceMemory : resource .MustParse (memory ),
94
+ }
95
+ if ephemeralStorage != "" {
96
+ resources [corev1 .ResourceEphemeralStorage ] = resource .MustParse (ephemeralStorage )
97
+ }
98
+
99
+ gpuResource := resource .MustParse (gpu )
100
+ if ! gpuResource .IsZero () {
101
+ resources [corev1 .ResourceName (util .ResourceNvidiaGPU )] = gpuResource
102
+ }
103
+
104
+ return resources
105
+ }
106
+
90
107
func (rayClusterSpecObject * RayClusterSpecObject ) generateRayClusterSpec () * rayv1ac.RayClusterSpecApplyConfiguration {
91
108
// TODO: Look for better workaround/fixes for RayStartParams. Currently using `WithRayStartParams()` requires
92
109
// a non-empty map with valid key value pairs and will not populate the field with empty/nil values. This
@@ -100,8 +117,10 @@ func (rayClusterSpecObject *RayClusterSpecObject) generateRayClusterSpec() *rayv
100
117
maps .Copy (headRayStartParams , rayClusterSpecObject .HeadRayStartParams )
101
118
maps .Copy (workerRayStartParams , rayClusterSpecObject .WorkerRayStartParams )
102
119
103
- headResources := generateResources (rayClusterSpecObject .HeadCPU , rayClusterSpecObject .HeadMemory , rayClusterSpecObject .HeadEphemeralStorage , rayClusterSpecObject .HeadGPU )
104
- workerResources := generateResources (rayClusterSpecObject .WorkerCPU , rayClusterSpecObject .WorkerMemory , rayClusterSpecObject .WorkerEphemeralStorage , rayClusterSpecObject .WorkerGPU )
120
+ headRequestResources := generateRequestResources (rayClusterSpecObject .HeadCPU , rayClusterSpecObject .HeadMemory , rayClusterSpecObject .HeadEphemeralStorage , rayClusterSpecObject .HeadGPU )
121
+ headLimitResources := generateLimitResources (rayClusterSpecObject .HeadMemory , rayClusterSpecObject .HeadEphemeralStorage , rayClusterSpecObject .HeadGPU )
122
+ workerRequestResources := generateRequestResources (rayClusterSpecObject .WorkerCPU , rayClusterSpecObject .WorkerMemory , rayClusterSpecObject .WorkerEphemeralStorage , rayClusterSpecObject .WorkerGPU )
123
+ workerLimitResources := generateLimitResources (rayClusterSpecObject .WorkerMemory , rayClusterSpecObject .WorkerEphemeralStorage , rayClusterSpecObject .WorkerGPU )
105
124
106
125
rayClusterSpec := rayv1ac .RayClusterSpec ().
107
126
WithRayVersion (rayClusterSpecObject .RayVersion ).
@@ -114,8 +133,8 @@ func (rayClusterSpecObject *RayClusterSpecObject) generateRayClusterSpec() *rayv
114
133
WithName ("ray-head" ).
115
134
WithImage (rayClusterSpecObject .Image ).
116
135
WithResources (corev1ac .ResourceRequirements ().
117
- WithRequests (headResources ).
118
- WithLimits (headResources )).
136
+ WithRequests (headRequestResources ).
137
+ WithLimits (headLimitResources )).
119
138
WithPorts (corev1ac .ContainerPort ().WithContainerPort (6379 ).WithName ("gcs-server" ),
120
139
corev1ac .ContainerPort ().WithContainerPort (8265 ).WithName ("dashboard" ),
121
140
corev1ac .ContainerPort ().WithContainerPort (10001 ).WithName ("client" )))))).
@@ -130,8 +149,8 @@ func (rayClusterSpecObject *RayClusterSpecObject) generateRayClusterSpec() *rayv
130
149
WithName ("ray-worker" ).
131
150
WithImage (rayClusterSpecObject .Image ).
132
151
WithResources (corev1ac .ResourceRequirements ().
133
- WithRequests (workerResources ).
134
- WithLimits (workerResources ))))))
152
+ WithRequests (workerRequestResources ).
153
+ WithLimits (workerLimitResources ))))))
135
154
136
155
return rayClusterSpec
137
156
}
0 commit comments