@@ -20,14 +20,13 @@ namespace ray {
20
20
21
21
namespace gcs {
22
22
23
- GcsActorWorkerAssignment::GcsActorWorkerAssignment (const NodeID &node_id,
24
- const ResourceSet &acquired_resources,
25
- bool is_shared)
23
+ GcsActorWorkerAssignment::GcsActorWorkerAssignment (
24
+ const NodeID &node_id, const ResourceRequest &acquired_resources, bool is_shared)
26
25
: node_id_(node_id), acquired_resources_(acquired_resources), is_shared_(is_shared) {}
27
26
28
27
const NodeID &GcsActorWorkerAssignment::GetNodeID () const { return node_id_; }
29
28
30
- const ResourceSet &GcsActorWorkerAssignment::GetResources () const {
29
+ const ResourceRequest &GcsActorWorkerAssignment::GetResources () const {
31
30
return acquired_resources_;
32
31
}
33
32
@@ -67,7 +66,9 @@ std::unique_ptr<GcsActorWorkerAssignment>
67
66
GcsBasedActorScheduler::SelectOrAllocateActorWorkerAssignment (
68
67
std::shared_ptr<GcsActor> actor, bool need_sole_actor_worker_assignment) {
69
68
const auto &task_spec = actor->GetCreationTaskSpecification ();
70
- auto required_resources = task_spec.GetRequiredPlacementResources ();
69
+ auto required_resources = ResourceMapToResourceRequest (
70
+ task_spec.GetRequiredPlacementResources ().GetResourceMap (),
71
+ /* requires_object_store_memory=*/ false );
71
72
72
73
// If the task needs a sole actor worker assignment then allocate a new one.
73
74
return AllocateNewActorWorkerAssignment (required_resources, /* is_shared=*/ false ,
@@ -78,7 +79,7 @@ GcsBasedActorScheduler::SelectOrAllocateActorWorkerAssignment(
78
79
79
80
std::unique_ptr<GcsActorWorkerAssignment>
80
81
GcsBasedActorScheduler::AllocateNewActorWorkerAssignment (
81
- const ResourceSet &required_resources, bool is_shared,
82
+ const ResourceRequest &required_resources, bool is_shared,
82
83
const TaskSpecification &task_spec) {
83
84
// Allocate resources from cluster.
84
85
auto selected_node_id = AllocateResources (required_resources);
@@ -94,7 +95,8 @@ GcsBasedActorScheduler::AllocateNewActorWorkerAssignment(
94
95
return gcs_actor_worker_assignment;
95
96
}
96
97
97
- NodeID GcsBasedActorScheduler::AllocateResources (const ResourceSet &required_resources) {
98
+ NodeID GcsBasedActorScheduler::AllocateResources (
99
+ const ResourceRequest &required_resources) {
98
100
auto selected_nodes =
99
101
gcs_resource_scheduler_->Schedule ({required_resources}, SchedulingType::SPREAD)
100
102
.second ;
@@ -118,7 +120,7 @@ NodeID GcsBasedActorScheduler::AllocateResources(const ResourceSet &required_res
118
120
}
119
121
120
122
NodeID GcsBasedActorScheduler::GetHighestScoreNodeResource (
121
- const ResourceSet &required_resources) const {
123
+ const ResourceRequest &required_resources) const {
122
124
const auto &cluster_map = gcs_resource_manager_->GetClusterResources ();
123
125
124
126
// / Get the highest score node
@@ -127,7 +129,8 @@ NodeID GcsBasedActorScheduler::GetHighestScoreNodeResource(
127
129
double highest_score = std::numeric_limits<double >::lowest ();
128
130
auto highest_score_node = NodeID::Nil ();
129
131
for (const auto &pair : cluster_map) {
130
- double least_resource_val = scorer.Score (required_resources, *pair.second );
132
+ double least_resource_val =
133
+ scorer.Score (required_resources, pair.second ->GetLocalView ());
131
134
if (least_resource_val > highest_score) {
132
135
highest_score = least_resource_val;
133
136
highest_score_node = pair.first ;
@@ -138,20 +141,20 @@ NodeID GcsBasedActorScheduler::GetHighestScoreNodeResource(
138
141
}
139
142
140
143
void GcsBasedActorScheduler::WarnResourceAllocationFailure (
141
- const TaskSpecification &task_spec, const ResourceSet &required_resources) const {
144
+ const TaskSpecification &task_spec, const ResourceRequest &required_resources) const {
142
145
auto scheduling_node_id = GetHighestScoreNodeResource (required_resources);
143
- const SchedulingResources *scheduling_resource = nullptr ;
146
+ const NodeResources *scheduling_resource = nullptr ;
144
147
auto iter = gcs_resource_manager_->GetClusterResources ().find (scheduling_node_id);
145
148
if (iter != gcs_resource_manager_->GetClusterResources ().end ()) {
146
- scheduling_resource = iter->second . get ();
149
+ scheduling_resource = iter->second -> GetMutableLocalView ();
147
150
}
148
151
std::string scheduling_resource_str =
149
152
scheduling_resource ? scheduling_resource->DebugString () : " None" ;
150
153
// Return nullptr if the cluster resources are not enough.
151
154
RAY_LOG (WARNING) << " No enough resources for creating actor "
152
155
<< task_spec.ActorCreationId ()
153
156
<< " \n Actor class: " << task_spec.FunctionDescriptor ()->ToString ()
154
- << " \n Required resources: " << required_resources.ToString ()
157
+ << " \n Required resources: " << required_resources.DebugString ()
155
158
<< " \n The node with the most resources is:"
156
159
<< " \n Node id: " << scheduling_node_id
157
160
<< " \n Node resources: " << scheduling_resource_str;
0 commit comments