mirror of
https://github.com/wassname/ray.git
synced 2026-08-01 12:51:09 +08:00
[autoscaler] Refactor multi node type autoscaler config (#10190)
This commit is contained in:
@@ -11,6 +11,8 @@ from ray.tests.test_autoscaler import SMALL_CLUSTER, MockProvider, \
|
||||
from ray.autoscaler.autoscaler import StandardAutoscaler
|
||||
from ray.autoscaler.load_metrics import LoadMetrics
|
||||
from ray.autoscaler.node_provider import NODE_PROVIDERS
|
||||
from ray.autoscaler.commands import get_or_create_head_node
|
||||
from ray.autoscaler.tags import TAG_RAY_INSTANCE_TYPE
|
||||
from ray.autoscaler.resource_demand_scheduler import _utilization_score, \
|
||||
get_bin_pack_residual, get_instances_for
|
||||
|
||||
@@ -18,24 +20,30 @@ from time import sleep
|
||||
|
||||
TYPES_A = {
|
||||
"m4.large": {
|
||||
"node_config": {
|
||||
"FooProperty": 42,
|
||||
},
|
||||
"resources": {
|
||||
"CPU": 2
|
||||
},
|
||||
"max_workers": 10,
|
||||
},
|
||||
"m4.4xlarge": {
|
||||
"node_config": {},
|
||||
"resources": {
|
||||
"CPU": 16
|
||||
},
|
||||
"max_workers": 8,
|
||||
},
|
||||
"m4.16xlarge": {
|
||||
"node_config": {},
|
||||
"resources": {
|
||||
"CPU": 64
|
||||
},
|
||||
"max_workers": 4,
|
||||
},
|
||||
"p2.xlarge": {
|
||||
"node_config": {},
|
||||
"resources": {
|
||||
"CPU": 16,
|
||||
"GPU": 1
|
||||
@@ -43,6 +51,7 @@ TYPES_A = {
|
||||
"max_workers": 10,
|
||||
},
|
||||
"p2.8xlarge": {
|
||||
"node_config": {},
|
||||
"resources": {
|
||||
"CPU": 32,
|
||||
"GPU": 8
|
||||
@@ -51,9 +60,12 @@ TYPES_A = {
|
||||
},
|
||||
}
|
||||
|
||||
MULTI_WORKER_CLUSTER = dict(SMALL_CLUSTER, **{
|
||||
"available_instance_types": TYPES_A,
|
||||
})
|
||||
MULTI_WORKER_CLUSTER = dict(
|
||||
SMALL_CLUSTER, **{
|
||||
"available_node_types": TYPES_A,
|
||||
"head_node_type": "m4.large",
|
||||
"worker_default_node_type": "m4.large",
|
||||
})
|
||||
|
||||
|
||||
def test_util_score():
|
||||
@@ -182,9 +194,33 @@ class AutoscalingTest(unittest.TestCase):
|
||||
f.write(yaml.dump(config))
|
||||
return path
|
||||
|
||||
def testGetOrCreateMultiNodeType(self):
|
||||
config_path = self.write_config(MULTI_WORKER_CLUSTER)
|
||||
self.provider = MockProvider()
|
||||
runner = MockProcessRunner()
|
||||
get_or_create_head_node(
|
||||
MULTI_WORKER_CLUSTER,
|
||||
config_path,
|
||||
no_restart=False,
|
||||
restart_only=False,
|
||||
yes=True,
|
||||
override_cluster_name=None,
|
||||
_provider=self.provider,
|
||||
_runner=runner)
|
||||
self.waitForNodes(1)
|
||||
runner.assert_has_call("1.2.3.4", "init_cmd")
|
||||
runner.assert_has_call("1.2.3.4", "head_setup_cmd")
|
||||
runner.assert_has_call("1.2.3.4", "start_ray_head")
|
||||
self.assertEqual(self.provider.mock_nodes[0].instance_type, "m4.large")
|
||||
self.assertEqual(
|
||||
self.provider.mock_nodes[0].node_config.get("FooProperty"), 42)
|
||||
self.assertEqual(
|
||||
self.provider.mock_nodes[0].tags.get(TAG_RAY_INSTANCE_TYPE),
|
||||
"m4.large")
|
||||
|
||||
def testScaleUpMinSanity(self):
|
||||
config_path = self.write_config(MULTI_WORKER_CLUSTER)
|
||||
self.provider = MockProvider(default_instance_type="m4.large")
|
||||
self.provider = MockProvider()
|
||||
runner = MockProcessRunner()
|
||||
autoscaler = StandardAutoscaler(
|
||||
config_path,
|
||||
@@ -203,7 +239,7 @@ class AutoscalingTest(unittest.TestCase):
|
||||
config["min_workers"] = 0
|
||||
config["max_workers"] = 50
|
||||
config_path = self.write_config(config)
|
||||
self.provider = MockProvider(default_instance_type="m4.large")
|
||||
self.provider = MockProvider()
|
||||
runner = MockProcessRunner()
|
||||
autoscaler = StandardAutoscaler(
|
||||
config_path,
|
||||
@@ -233,7 +269,7 @@ class AutoscalingTest(unittest.TestCase):
|
||||
config["min_workers"] = 0
|
||||
config["max_workers"] = 50
|
||||
config_path = self.write_config(config)
|
||||
self.provider = MockProvider(default_instance_type="m4.large")
|
||||
self.provider = MockProvider()
|
||||
runner = MockProcessRunner()
|
||||
autoscaler = StandardAutoscaler(
|
||||
config_path,
|
||||
|
||||
Reference in New Issue
Block a user