mirror of
https://github.com/wassname/ray.git
synced 2026-06-28 15:56:55 +08:00
Allow setting redis shard ports through ray start (also object store memory). (#1581)
* Allow passing in --object-store-memory to ray start. * Allow setting ports for the redis shards. * Reorder arguments and infer number of shards from ports. * Move code block into only the head node case. * Add test.
This commit is contained in:
committed by
Philipp Moritz
parent
a3b44309dd
commit
330159d8bd
@@ -53,8 +53,14 @@ def cli():
|
||||
@click.option("--redis-max-clients", required=False, type=int,
|
||||
help=("If provided, attempt to configure Redis with this "
|
||||
"maximum number of clients."))
|
||||
@click.option("--redis-shard-ports", required=False, type=str,
|
||||
help="the port to use for the Redis shards other than the "
|
||||
"primary Redis shard")
|
||||
@click.option("--object-manager-port", required=False, type=int,
|
||||
help="the port to use for starting the object manager")
|
||||
@click.option("--object-store-memory", required=False, type=int,
|
||||
help="the maximum amount of memory (in bytes) to allow the "
|
||||
"object store to use")
|
||||
@click.option("--num-workers", required=False, type=int,
|
||||
help=("The initial number of workers to start on this node, "
|
||||
"note that the local scheduler may start additional "
|
||||
@@ -81,15 +87,10 @@ def cli():
|
||||
@click.option("--autoscaling-config", required=False, type=str,
|
||||
help="the file that contains the autoscaling config")
|
||||
def start(node_ip_address, redis_address, redis_port, num_redis_shards,
|
||||
redis_max_clients, object_manager_port, num_workers, num_cpus,
|
||||
num_gpus, resources, head, no_ui, block, plasma_directory,
|
||||
huge_pages, autoscaling_config):
|
||||
# Note that we redirect stdout and stderr to /dev/null because otherwise
|
||||
# attempts to print may cause exceptions if a process is started inside of
|
||||
# an SSH connection and the SSH connection dies. TODO(rkn): This is a
|
||||
# temporary fix. We should actually redirect stdout and stderr to Redis in
|
||||
# some way.
|
||||
|
||||
redis_max_clients, redis_shard_ports, object_manager_port,
|
||||
object_store_memory, num_workers, num_cpus, num_gpus, resources,
|
||||
head, no_ui, block, plasma_directory, huge_pages,
|
||||
autoscaling_config):
|
||||
# Convert hostnames to numerical IP address.
|
||||
if node_ip_address is not None:
|
||||
node_ip_address = services.address_to_ip(node_ip_address)
|
||||
@@ -113,6 +114,20 @@ def start(node_ip_address, redis_address, redis_port, num_redis_shards,
|
||||
|
||||
if head:
|
||||
# Start Ray on the head node.
|
||||
if redis_shard_ports is not None:
|
||||
redis_shard_ports = redis_shard_ports.split(",")
|
||||
# Infer the number of Redis shards from the ports if the number is
|
||||
# not provided.
|
||||
if num_redis_shards is None:
|
||||
num_redis_shards = len(redis_shard_ports)
|
||||
# Check that the arguments match.
|
||||
if len(redis_shard_ports) != num_redis_shards:
|
||||
raise Exception("If --redis-shard-ports is provided, it must "
|
||||
"have the form '6380,6381,6382', and the "
|
||||
"number of ports provided must equal "
|
||||
"--num-redis-shards (which is 1 if not "
|
||||
"provided)")
|
||||
|
||||
if redis_address is not None:
|
||||
raise Exception("If --head is passed in, a Redis server will be "
|
||||
"started, so a Redis address should not be "
|
||||
@@ -134,6 +149,8 @@ def start(node_ip_address, redis_address, redis_port, num_redis_shards,
|
||||
address_info=address_info,
|
||||
node_ip_address=node_ip_address,
|
||||
redis_port=redis_port,
|
||||
redis_shard_ports=redis_shard_ports,
|
||||
object_store_memory=object_store_memory,
|
||||
num_workers=num_workers,
|
||||
cleanup=False,
|
||||
redirect_output=True,
|
||||
@@ -162,6 +179,9 @@ def start(node_ip_address, redis_address, redis_port, num_redis_shards,
|
||||
if redis_port is not None:
|
||||
raise Exception("If --head is not passed in, --redis-port is not "
|
||||
"allowed")
|
||||
if redis_shard_ports is not None:
|
||||
raise Exception("If --head is not passed in, --redis-shard-ports "
|
||||
"is not allowed")
|
||||
if redis_address is None:
|
||||
raise Exception("If --head is not passed in, --redis-address must "
|
||||
"be provided.")
|
||||
@@ -200,6 +220,7 @@ def start(node_ip_address, redis_address, redis_port, num_redis_shards,
|
||||
redis_address=redis_address,
|
||||
object_manager_ports=[object_manager_port],
|
||||
num_workers=num_workers,
|
||||
object_store_memory=object_store_memory,
|
||||
cleanup=False,
|
||||
redirect_output=True,
|
||||
resources=resources,
|
||||
|
||||
Reference in New Issue
Block a user