mirror of
https://github.com/wassname/ray.git
synced 2026-07-07 08:15:51 +08:00
Remove ref counting dependencies on ray.get() (#6412)
* Remove ref counting dependencies on Get() * comment * don't send IDs when disabled * pass through internal config * fix * allow reinit * remove flag
This commit is contained in:
@@ -138,6 +138,20 @@ else:
|
||||
if PY3:
|
||||
from ray.async_compat import sync_to_async
|
||||
|
||||
|
||||
def set_internal_config(dict options):
|
||||
cdef:
|
||||
unordered_map[c_string, c_string] c_options
|
||||
|
||||
if options is None:
|
||||
return
|
||||
|
||||
for key, value in options.items():
|
||||
c_options[str(key).encode("ascii")] = str(value).encode("ascii")
|
||||
|
||||
RayConfig.instance().initialize(c_options)
|
||||
|
||||
|
||||
cdef int check_status(const CRayStatus& status) nogil except -1:
|
||||
if status.ok():
|
||||
return 0
|
||||
|
||||
@@ -86,4 +86,4 @@ cdef extern from "ray/common/ray_config.h" nogil:
|
||||
|
||||
uint32_t maximum_gcs_deletion_batch_size() const
|
||||
|
||||
void initialize(const unordered_map[c_string, int] &config_map)
|
||||
void initialize(const unordered_map[c_string, c_string] &config_map)
|
||||
|
||||
@@ -1199,10 +1199,12 @@ def start_raylet(redis_address,
|
||||
"--object-store-name={} "
|
||||
"--raylet-name={} "
|
||||
"--redis-address={} "
|
||||
"--config-list={} "
|
||||
"--temp-dir={}".format(
|
||||
sys.executable, worker_path, node_ip_address,
|
||||
node_manager_port, plasma_store_name,
|
||||
raylet_name, redis_address, temp_dir))
|
||||
raylet_name, redis_address, config_str,
|
||||
temp_dir))
|
||||
if redis_password:
|
||||
start_worker_command += " --redis-password {}".format(redis_password)
|
||||
|
||||
|
||||
@@ -795,7 +795,9 @@ def init(address=None,
|
||||
log_to_driver=log_to_driver,
|
||||
worker=global_worker,
|
||||
driver_object_store_memory=driver_object_store_memory,
|
||||
job_id=job_id)
|
||||
job_id=job_id,
|
||||
internal_config=json.loads(_internal_config)
|
||||
if _internal_config else {})
|
||||
|
||||
for hook in _post_init_hooks:
|
||||
hook()
|
||||
@@ -1064,7 +1066,8 @@ def connect(node,
|
||||
log_to_driver=False,
|
||||
worker=global_worker,
|
||||
driver_object_store_memory=None,
|
||||
job_id=None):
|
||||
job_id=None,
|
||||
internal_config=None):
|
||||
"""Connect this worker to the raylet, to Plasma, and to Redis.
|
||||
|
||||
Args:
|
||||
@@ -1077,6 +1080,8 @@ def connect(node,
|
||||
driver_object_store_memory: Limit the amount of memory the driver can
|
||||
use in the object store when creating objects.
|
||||
job_id: The ID of job. If it's None, then we will generate one.
|
||||
internal_config: Dictionary of (str,str) containing internal config
|
||||
options to override the defaults.
|
||||
"""
|
||||
# Do some basic checking to make sure we didn't call ray.init twice.
|
||||
error_message = "Perhaps you called ray.init twice by accident?"
|
||||
@@ -1087,6 +1092,8 @@ def connect(node,
|
||||
if not faulthandler.is_enabled():
|
||||
faulthandler.enable(all_threads=False)
|
||||
|
||||
ray._raylet.set_internal_config(internal_config)
|
||||
|
||||
if mode is not LOCAL_MODE:
|
||||
# Create a Redis client to primary.
|
||||
# The Redis client can safely be shared between threads. However,
|
||||
|
||||
@@ -3,6 +3,7 @@ from __future__ import division
|
||||
from __future__ import print_function
|
||||
|
||||
import argparse
|
||||
import json
|
||||
|
||||
import ray
|
||||
import ray.actor
|
||||
@@ -55,6 +56,12 @@ parser.add_argument(
|
||||
type=str,
|
||||
default=ray_constants.LOGGER_FORMAT,
|
||||
help=ray_constants.LOGGER_FORMAT_HELP)
|
||||
parser.add_argument(
|
||||
"--config-list",
|
||||
required=False,
|
||||
type=str,
|
||||
default=None,
|
||||
help="Override internal config options for the worker process.")
|
||||
parser.add_argument(
|
||||
"--temp-dir",
|
||||
required=False,
|
||||
@@ -77,6 +84,15 @@ if __name__ == "__main__":
|
||||
|
||||
ray.utils.setup_logger(args.logging_level, args.logging_format)
|
||||
|
||||
internal_config = {}
|
||||
if args.config_list is not None:
|
||||
config_list = args.config_list.split(",")
|
||||
if len(config_list) > 1:
|
||||
i = 0
|
||||
while i < len(config_list):
|
||||
internal_config[config_list[i]] = config_list[i + 1]
|
||||
i += 2
|
||||
|
||||
ray_params = RayParams(
|
||||
node_ip_address=args.node_ip_address,
|
||||
node_manager_port=args.node_manager_port,
|
||||
@@ -86,7 +102,9 @@ if __name__ == "__main__":
|
||||
raylet_socket_name=args.raylet_name,
|
||||
temp_dir=args.temp_dir,
|
||||
load_code_from_local=args.load_code_from_local,
|
||||
use_pickle=args.use_pickle)
|
||||
use_pickle=args.use_pickle,
|
||||
_internal_config=json.dumps(internal_config),
|
||||
)
|
||||
|
||||
node = ray.node.Node(
|
||||
ray_params,
|
||||
@@ -95,5 +113,6 @@ if __name__ == "__main__":
|
||||
spawn_reaper=False,
|
||||
connect_only=True)
|
||||
ray.worker._global_node = node
|
||||
ray.worker.connect(node, mode=ray.WORKER_MODE)
|
||||
ray.worker.connect(
|
||||
node, mode=ray.WORKER_MODE, internal_config=internal_config)
|
||||
ray.worker.global_worker.main_loop()
|
||||
|
||||
Reference in New Issue
Block a user