mirror of
https://github.com/wassname/ray.git
synced 2026-08-15 12:45:23 +08:00
[autoscaler] Add an initial_workers option (#3530)
## What do these changes do?
This option goes along with `min_workers`, and `max_workers`. When the
cluster is first brought up (or when it is refreshed with a subsequent
`ray up`) this number of nodes will be started.
It's a workaround for issues of scaling (see related issues) where it
can take a long time (or forever in the case where the head node has
`--num-cpus 0`) to scale up a cluster in response to increasing demand.
## Related issue number
Workaround for https://github.com/ray-project/ray/issues/3339 and https://github.com/ray-project/ray/issues/2106
This commit is contained in:
committed by
Richard Liaw
parent
067976ad3d
commit
681e8cd3fd
@@ -98,6 +98,7 @@ SMALL_CLUSTER = {
|
||||
"cluster_name": "default",
|
||||
"min_workers": 2,
|
||||
"max_workers": 2,
|
||||
"initial_workers": 0,
|
||||
"target_utilization_fraction": 0.8,
|
||||
"idle_timeout_minutes": 5,
|
||||
"provider": {
|
||||
@@ -314,6 +315,27 @@ class AutoscalingTest(unittest.TestCase):
|
||||
autoscaler.update()
|
||||
self.waitForNodes(10)
|
||||
|
||||
def testInitialWorkers(self):
|
||||
config = SMALL_CLUSTER.copy()
|
||||
config["min_workers"] = 0
|
||||
config["max_workers"] = 20
|
||||
config["initial_workers"] = 10
|
||||
config_path = self.write_config(config)
|
||||
self.provider = MockProvider()
|
||||
autoscaler = StandardAutoscaler(
|
||||
config_path,
|
||||
LoadMetrics(),
|
||||
max_launch_batch=5,
|
||||
max_concurrent_launches=5,
|
||||
max_failures=0,
|
||||
update_interval_s=0)
|
||||
self.waitForNodes(0)
|
||||
autoscaler.update()
|
||||
self.waitForNodes(5) # expected due to batch sizes and concurrency
|
||||
autoscaler.update()
|
||||
self.waitForNodes(10)
|
||||
autoscaler.update()
|
||||
|
||||
def testDelayedLaunch(self):
|
||||
config_path = self.write_config(SMALL_CLUSTER)
|
||||
self.provider = MockProvider()
|
||||
|
||||
Reference in New Issue
Block a user