-
Notifications
You must be signed in to change notification settings - Fork 7.4k
[core] Split giant ray core C++ targets into small ones #50586
Description
Description
As of now, ray core uses bazel as build system, which encourages small targets.
Ray core is not following the best practice, which bundles all related files into several giant targets, for example
Lines 400 to 435 in bdeeaa6
| ray_cc_library( | |
| name = "plasma_store_server_lib", | |
| srcs = [ | |
| "src/ray/object_manager/plasma/create_request_queue.cc", | |
| "src/ray/object_manager/plasma/dlmalloc.cc", | |
| "src/ray/object_manager/plasma/eviction_policy.cc", | |
| "src/ray/object_manager/plasma/get_request_queue.cc", | |
| "src/ray/object_manager/plasma/object_lifecycle_manager.cc", | |
| "src/ray/object_manager/plasma/object_store.cc", | |
| "src/ray/object_manager/plasma/plasma_allocator.cc", | |
| "src/ray/object_manager/plasma/stats_collector.cc", | |
| "src/ray/object_manager/plasma/store.cc", | |
| "src/ray/object_manager/plasma/store_runner.cc", | |
| ], | |
| hdrs = [ | |
| "src/ray/object_manager/common.h", | |
| "src/ray/object_manager/plasma/allocator.h", | |
| "src/ray/object_manager/plasma/create_request_queue.h", | |
| "src/ray/object_manager/plasma/eviction_policy.h", | |
| "src/ray/object_manager/plasma/get_request_queue.h", | |
| "src/ray/object_manager/plasma/object_lifecycle_manager.h", | |
| "src/ray/object_manager/plasma/object_store.h", | |
| "src/ray/object_manager/plasma/plasma_allocator.h", | |
| "src/ray/object_manager/plasma/stats_collector.h", | |
| "src/ray/object_manager/plasma/store.h", | |
| "src/ray/object_manager/plasma/store_runner.h", | |
| "src/ray/thirdparty/dlmalloc.c", | |
| ], | |
| copts = PLASMA_COPTS, | |
| linkopts = PLASMA_LINKOPTS, | |
| deps = [ | |
| ":plasma_client", | |
| ":stats_lib", | |
| "//src/ray/common:network", | |
| ], | |
| ) |
I've finished a POC to split GCS into smaller targets, which improves compilation speed by ~12%. Other benefits see #50243 (comment)
The task could be broken down into smaller pieces:
- (assigned) plasma:
Lines 349 to 398 in bdeeaa6
ray_cc_library( name = "plasma_client", srcs = [ "src/ray/object_manager/common.cc", "src/ray/object_manager/plasma/client.cc", "src/ray/object_manager/plasma/connection.cc", "src/ray/object_manager/plasma/malloc.cc", "src/ray/object_manager/plasma/plasma.cc", "src/ray/object_manager/plasma/protocol.cc", "src/ray/object_manager/plasma/shared_memory.cc", ] + select({ "@platforms//os:windows": [ ], "//conditions:default": [ "src/ray/object_manager/plasma/fling.cc", ], }), hdrs = [ "src/ray/object_manager/common.h", "src/ray/object_manager/plasma/client.h", "src/ray/object_manager/plasma/common.h", "src/ray/object_manager/plasma/connection.h", "src/ray/object_manager/plasma/malloc.h", "src/ray/object_manager/plasma/plasma.h", "src/ray/object_manager/plasma/plasma_generated.h", "src/ray/object_manager/plasma/protocol.h", "src/ray/object_manager/plasma/shared_memory.h", ] + select({ "@platforms//os:windows": [ ], "//conditions:default": [ "src/ray/object_manager/plasma/fling.h", ], }), copts = PLASMA_COPTS, defines = select({ "@platforms//os:windows": PROPAGATED_WINDOWS_DEFINES, "//conditions:default": [], }), linkopts = PLASMA_LINKOPTS, deps = [ ":plasma_fbs", ":ray_common", "//src/ray/protobuf:common_cc_proto", "//src/ray/util", "//src/ray/util:compat", "//src/ray/util:counter_map", "@msgpack", ], ) - (assigned) plasma store:
Lines 400 to 435 in bdeeaa6
ray_cc_library( name = "plasma_store_server_lib", srcs = [ "src/ray/object_manager/plasma/create_request_queue.cc", "src/ray/object_manager/plasma/dlmalloc.cc", "src/ray/object_manager/plasma/eviction_policy.cc", "src/ray/object_manager/plasma/get_request_queue.cc", "src/ray/object_manager/plasma/object_lifecycle_manager.cc", "src/ray/object_manager/plasma/object_store.cc", "src/ray/object_manager/plasma/plasma_allocator.cc", "src/ray/object_manager/plasma/stats_collector.cc", "src/ray/object_manager/plasma/store.cc", "src/ray/object_manager/plasma/store_runner.cc", ], hdrs = [ "src/ray/object_manager/common.h", "src/ray/object_manager/plasma/allocator.h", "src/ray/object_manager/plasma/create_request_queue.h", "src/ray/object_manager/plasma/eviction_policy.h", "src/ray/object_manager/plasma/get_request_queue.h", "src/ray/object_manager/plasma/object_lifecycle_manager.h", "src/ray/object_manager/plasma/object_store.h", "src/ray/object_manager/plasma/plasma_allocator.h", "src/ray/object_manager/plasma/stats_collector.h", "src/ray/object_manager/plasma/store.h", "src/ray/object_manager/plasma/store_runner.h", "src/ray/thirdparty/dlmalloc.c", ], copts = PLASMA_COPTS, linkopts = PLASMA_LINKOPTS, deps = [ ":plasma_client", ":stats_lib", "//src/ray/common:network", ], ) - (assigned) GCS server:
Lines 661 to 723 in bdeeaa6
ray_cc_library( name = "gcs_server_lib", srcs = [ "src/ray/gcs/gcs_server/gcs_actor_manager.cc", "src/ray/gcs/gcs_server/gcs_actor_scheduler.cc", "src/ray/gcs/gcs_server/gcs_autoscaler_state_manager.cc", "src/ray/gcs/gcs_server/gcs_health_check_manager.cc", "src/ray/gcs/gcs_server/gcs_job_manager.cc", "src/ray/gcs/gcs_server/gcs_node_manager.cc", "src/ray/gcs/gcs_server/gcs_placement_group_manager.cc", "src/ray/gcs/gcs_server/gcs_placement_group_scheduler.cc", "src/ray/gcs/gcs_server/gcs_resource_manager.cc", "src/ray/gcs/gcs_server/gcs_server.cc", "src/ray/gcs/gcs_server/gcs_task_manager.cc", ], hdrs = [ "src/ray/gcs/gcs_server/gcs_actor_manager.h", "src/ray/gcs/gcs_server/gcs_actor_scheduler.h", "src/ray/gcs/gcs_server/gcs_autoscaler_state_manager.h", "src/ray/gcs/gcs_server/gcs_health_check_manager.h", "src/ray/gcs/gcs_server/gcs_job_manager.h", "src/ray/gcs/gcs_server/gcs_node_manager.h", "src/ray/gcs/gcs_server/gcs_placement_group_manager.h", "src/ray/gcs/gcs_server/gcs_placement_group_scheduler.h", "src/ray/gcs/gcs_server/gcs_resource_manager.h", "src/ray/gcs/gcs_server/gcs_server.h", "src/ray/gcs/gcs_server/gcs_server_io_context_policy.h", "src/ray/gcs/gcs_server/gcs_task_manager.h", ], deps = [ ":gcs_runtime_env_handler", ":gcs_redis_failure_detector", ":gcs_state_util", ":gcs_pubsub_handler", ":gcs_store_client_kv", ":gcs_usage_stats_client", ":gcs_worker_manager", ":gcs_function_manager", ":gcs_kv_manager", ":gcs_init_data", ":gcs_table_storage", ":autoscaler_rpc", ":gcs", ":gcs_pub_sub_lib", ":gcs_service_cc_grpc", ":gcs_service_rpc", ":gcs_table_storage_lib", ":node_manager_rpc", ":observable_store_client", ":pubsub_lib", ":raylet_client_lib", ":scheduler", ":worker_rpc", "//src/ray/protobuf:agent_manager_cc_proto", "//src/ray/util:counter_map", "//src/ray/util:thread_checker", "//src/ray/util:throttler", "//src/ray/util:type_traits", "@boost//:bimap", "@com_github_grpc_grpc//src/proto/grpc/health/v1:health_proto", "@com_google_absl//absl/container:btree", ], ) - (assigned) (easy) pubsub:
Lines 740 to 758 in bdeeaa6
# Ray native pubsub module. ray_cc_library( name = "pubsub_lib", srcs = [ "src/ray/pubsub/publisher.cc", "src/ray/pubsub/subscriber.cc", ], hdrs = [ "src/ray/pubsub/publisher.h", "src/ray/pubsub/subscriber.h", ], deps = [ ":pubsub_rpc", "@boost//:any", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/container:flat_hash_set", "@com_google_absl//absl/synchronization", ], ) - (assigned) (easy) stats:
Lines 760 to 787 in bdeeaa6
ray_cc_library( name = "stats_metric", srcs = [ "src/ray/stats/metric.cc", "src/ray/stats/metric_defs.cc", "src/ray/stats/tag_defs.cc", ], hdrs = [ "src/ray/stats/metric.h", "src/ray/stats/metric_defs.h", "src/ray/stats/tag_defs.h", ], deps = [ "//src/ray/util", "//src/ray/util:logging", "//src/ray/util:size_literals", "@com_github_jupp0r_prometheus_cpp//pull", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/memory", "@com_google_absl//absl/strings", "@com_google_googletest//:gtest", "@io_opencensus_cpp//opencensus/exporters/stats/prometheus:prometheus_exporter", "@io_opencensus_cpp//opencensus/exporters/stats/stdout:stdout_exporter", "@io_opencensus_cpp//opencensus/stats", "@io_opencensus_cpp//opencensus/tags", ], ) - (assigned) scheduler:
Lines 815 to 887 in bdeeaa6
ray_cc_library( name = "scheduler", srcs = [ "src/ray/raylet/scheduling/cluster_resource_manager.cc", "src/ray/raylet/scheduling/cluster_resource_scheduler.cc", "src/ray/raylet/scheduling/cluster_task_manager.cc", "src/ray/raylet/scheduling/local_resource_manager.cc", "src/ray/raylet/scheduling/policy/affinity_with_bundle_scheduling_policy.cc", "src/ray/raylet/scheduling/policy/bundle_scheduling_policy.cc", "src/ray/raylet/scheduling/policy/composite_scheduling_policy.cc", "src/ray/raylet/scheduling/policy/hybrid_scheduling_policy.cc", "src/ray/raylet/scheduling/policy/node_affinity_scheduling_policy.cc", "src/ray/raylet/scheduling/policy/node_label_scheduling_policy.cc", "src/ray/raylet/scheduling/policy/random_scheduling_policy.cc", "src/ray/raylet/scheduling/policy/scorer.cc", "src/ray/raylet/scheduling/policy/spread_scheduling_policy.cc", "src/ray/raylet/scheduling/scheduler_resource_reporter.cc", "src/ray/raylet/scheduling/scheduler_stats.cc", "src/ray/raylet/scheduling/scheduling_policy.cc", ], hdrs = [ "src/ray/core_worker/common.h", "src/ray/raylet/scheduling/cluster_resource_manager.h", "src/ray/raylet/scheduling/cluster_resource_scheduler.h", "src/ray/raylet/scheduling/cluster_task_manager.h", "src/ray/raylet/scheduling/cluster_task_manager_interface.h", "src/ray/raylet/scheduling/internal.h", "src/ray/raylet/scheduling/local_resource_manager.h", "src/ray/raylet/scheduling/local_task_manager_interface.h", "src/ray/raylet/scheduling/policy/affinity_with_bundle_scheduling_policy.h", "src/ray/raylet/scheduling/policy/bundle_scheduling_policy.h", "src/ray/raylet/scheduling/policy/composite_scheduling_policy.h", "src/ray/raylet/scheduling/policy/hybrid_scheduling_policy.h", "src/ray/raylet/scheduling/policy/node_affinity_scheduling_policy.h", "src/ray/raylet/scheduling/policy/node_label_scheduling_policy.h", "src/ray/raylet/scheduling/policy/random_scheduling_policy.h", "src/ray/raylet/scheduling/policy/scheduling_context.h", "src/ray/raylet/scheduling/policy/scheduling_options.h", "src/ray/raylet/scheduling/policy/scheduling_policy.h", "src/ray/raylet/scheduling/policy/scorer.h", "src/ray/raylet/scheduling/policy/spread_scheduling_policy.h", "src/ray/raylet/scheduling/scheduler_resource_reporter.h", "src/ray/raylet/scheduling/scheduler_stats.h", "src/ray/raylet/scheduling/scheduling_policy.h", ], linkopts = select({ "@platforms//os:windows": [ ], "//conditions:default": [ "-lpthread", ], }), deps = [ ":gcs_client_lib", ":ray_common", ":stats_lib", "//src/ray/protobuf:common_cc_proto", "//src/ray/util", "@boost//:asio", "@boost//:system", "@com_github_jupp0r_prometheus_cpp//pull", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/container:flat_hash_set", "@com_google_absl//absl/memory", "@com_google_absl//absl/random", "@com_google_absl//absl/random:bit_gen_ref", "@com_google_absl//absl/strings", "@com_google_googletest//:gtest", "@io_opencensus_cpp//opencensus/exporters/stats/prometheus:prometheus_exporter", "@io_opencensus_cpp//opencensus/stats", "@io_opencensus_cpp//opencensus/tags", ], ) - (assigned) raylet:
Lines 889 to 961 in bdeeaa6
ray_cc_library( name = "raylet_lib", srcs = [ "src/ray/raylet/agent_manager.cc", "src/ray/raylet/dependency_manager.cc", "src/ray/raylet/local_object_manager.cc", "src/ray/raylet/local_task_manager.cc", "src/ray/raylet/node_manager.cc", "src/ray/raylet/placement_group_resource_manager.cc", "src/ray/raylet/raylet.cc", "src/ray/raylet/runtime_env_agent_client.cc", "src/ray/raylet/wait_manager.cc", "src/ray/raylet/worker.cc", "src/ray/raylet/worker_killing_policy.cc", "src/ray/raylet/worker_killing_policy_group_by_owner.cc", "src/ray/raylet/worker_killing_policy_retriable_fifo.cc", "src/ray/raylet/worker_pool.cc", ], hdrs = [ "src/ray/raylet/agent_manager.h", "src/ray/raylet/dependency_manager.h", "src/ray/raylet/local_object_manager.h", "src/ray/raylet/local_task_manager.h", "src/ray/raylet/node_manager.h", "src/ray/raylet/placement_group_resource_manager.h", "src/ray/raylet/raylet.h", "src/ray/raylet/runtime_env_agent_client.h", "src/ray/raylet/test/util.h", "src/ray/raylet/wait_manager.h", "src/ray/raylet/worker.h", "src/ray/raylet/worker_killing_policy.h", "src/ray/raylet/worker_killing_policy_group_by_owner.h", "src/ray/raylet/worker_killing_policy_retriable_fifo.h", "src/ray/raylet/worker_pool.h", ], linkopts = select({ "@platforms//os:windows": [ ], "//conditions:default": [ "-lpthread", ], }), deps = [ ":gcs", ":gcs_client_lib", ":node_manager_fbs", ":node_manager_rpc", ":object_manager", ":plasma_client", ":pubsub_lib", ":scheduler", ":stats_lib", ":worker_rpc", "//src/ray/protobuf:agent_manager_cc_proto", "//src/ray/protobuf:common_cc_proto", "//src/ray/protobuf:runtime_env_agent_cc_proto", "//src/ray/util:cmd_line_utils", "//src/ray/util:container_util", "//src/ray/util:throttler", "@boost//:asio", "@boost//:beast", "@boost//:system", "@com_github_jupp0r_prometheus_cpp//pull", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/container:flat_hash_set", "@com_google_absl//absl/memory", "@com_google_absl//absl/strings", "@com_google_googletest//:gtest", "@io_opencensus_cpp//opencensus/exporters/stats/prometheus:prometheus_exporter", "@io_opencensus_cpp//opencensus/stats", "@io_opencensus_cpp//opencensus/tags", ], ) - (assigned) (easy) raylet client:
Lines 963 to 989 in bdeeaa6
ray_cc_library( name = "raylet_client_lib", srcs = [ "src/ray/raylet_client/raylet_client.cc", "src/ray/raylet_client/raylet_connection.cc", ], hdrs = [ "src/ray/raylet_client/raylet_client.h", "src/ray/raylet_client/raylet_connection.h", ], linkopts = select({ "@platforms//os:windows": [ ], "//conditions:default": [ "-lpthread", ], }), deps = [ ":node_manager_fbs", ":node_manager_rpc", ":ray_common", "//src/ray/common:network", "//src/ray/protobuf:gcs_cc_proto", "//src/ray/util", "@boost//:asio", ], ) - (assigned) core worker:
Lines 991 to 1081 in bdeeaa6
ray_cc_library( name = "core_worker_lib", srcs = [ "src/ray/core_worker/actor_handle.cc", "src/ray/core_worker/actor_manager.cc", "src/ray/core_worker/common.cc", "src/ray/core_worker/context.cc", "src/ray/core_worker/core_worker.cc", "src/ray/core_worker/core_worker_process.cc", "src/ray/core_worker/experimental_mutable_object_manager.cc", "src/ray/core_worker/experimental_mutable_object_provider.cc", "src/ray/core_worker/future_resolver.cc", "src/ray/core_worker/generator_waiter.cc", "src/ray/core_worker/lease_policy.cc", "src/ray/core_worker/object_recovery_manager.cc", "src/ray/core_worker/profile_event.cc", "src/ray/core_worker/reference_count.cc", "src/ray/core_worker/store_provider/memory_store/memory_store.cc", "src/ray/core_worker/store_provider/plasma_store_provider.cc", "src/ray/core_worker/task_event_buffer.cc", "src/ray/core_worker/task_manager.cc", "src/ray/core_worker/transport/actor_scheduling_queue.cc", "src/ray/core_worker/transport/actor_task_submitter.cc", "src/ray/core_worker/transport/concurrency_group_manager.cc", "src/ray/core_worker/transport/dependency_resolver.cc", "src/ray/core_worker/transport/normal_scheduling_queue.cc", "src/ray/core_worker/transport/normal_task_submitter.cc", "src/ray/core_worker/transport/out_of_order_actor_scheduling_queue.cc", "src/ray/core_worker/transport/out_of_order_actor_submit_queue.cc", "src/ray/core_worker/transport/scheduling_util.cc", "src/ray/core_worker/transport/sequential_actor_submit_queue.cc", "src/ray/core_worker/transport/task_receiver.cc", "src/ray/core_worker/transport/thread_pool.cc", ], hdrs = [ "src/ray/core_worker/actor_creator.h", "src/ray/core_worker/actor_handle.h", "src/ray/core_worker/actor_manager.h", "src/ray/core_worker/common.h", "src/ray/core_worker/context.h", "src/ray/core_worker/core_worker.h", "src/ray/core_worker/core_worker_options.h", "src/ray/core_worker/core_worker_process.h", "src/ray/core_worker/experimental_mutable_object_manager.h", "src/ray/core_worker/experimental_mutable_object_provider.h", "src/ray/core_worker/fiber.h", "src/ray/core_worker/future_resolver.h", "src/ray/core_worker/generator_waiter.h", "src/ray/core_worker/lease_policy.h", "src/ray/core_worker/object_recovery_manager.h", "src/ray/core_worker/profile_event.h", "src/ray/core_worker/reference_count.h", "src/ray/core_worker/store_provider/memory_store/memory_store.h", "src/ray/core_worker/store_provider/plasma_store_provider.h", "src/ray/core_worker/task_event_buffer.h", "src/ray/core_worker/task_manager.h", "src/ray/core_worker/transport/actor_scheduling_queue.h", "src/ray/core_worker/transport/actor_submit_queue.h", "src/ray/core_worker/transport/actor_task_submitter.h", "src/ray/core_worker/transport/concurrency_group_manager.h", "src/ray/core_worker/transport/dependency_resolver.h", "src/ray/core_worker/transport/normal_scheduling_queue.h", "src/ray/core_worker/transport/normal_task_submitter.h", "src/ray/core_worker/transport/out_of_order_actor_scheduling_queue.h", "src/ray/core_worker/transport/out_of_order_actor_submit_queue.h", "src/ray/core_worker/transport/scheduling_queue.h", "src/ray/core_worker/transport/scheduling_util.h", "src/ray/core_worker/transport/sequential_actor_submit_queue.h", "src/ray/core_worker/transport/task_receiver.h", "src/ray/core_worker/transport/thread_pool.h", ], deps = [ ":gcs", ":gcs_client_lib", ":plasma_client", ":ray_common", ":raylet_client_lib", ":stats_lib", ":worker_rpc", "//src/ray/protobuf:worker_cc_proto", "//src/ray/util", "//src/ray/util:container_util", "//src/ray/util:mutex_protected", "//src/ray/util:shared_lru", "@boost//:circular_buffer", "@boost//:fiber", "@com_google_absl//absl/cleanup", "@com_google_absl//absl/container:btree", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/container:flat_hash_set", "@com_google_absl//absl/container:node_hash_map", "@nlohmann_json", ], ) - (assigned) object manager:
Lines 2373 to 2408 in bdeeaa6
ray_cc_library( name = "object_manager", srcs = [ "src/ray/object_manager/chunk_object_reader.cc", "src/ray/object_manager/common.cc", "src/ray/object_manager/memory_object_reader.cc", "src/ray/object_manager/object_buffer_pool.cc", "src/ray/object_manager/object_manager.cc", "src/ray/object_manager/ownership_based_object_directory.cc", "src/ray/object_manager/pull_manager.cc", "src/ray/object_manager/push_manager.cc", "src/ray/object_manager/spilled_object_reader.cc", ], hdrs = [ "src/ray/object_manager/chunk_object_reader.h", "src/ray/object_manager/common.h", "src/ray/object_manager/memory_object_reader.h", "src/ray/object_manager/object_buffer_pool.h", "src/ray/object_manager/object_directory.h", "src/ray/object_manager/object_manager.h", "src/ray/object_manager/object_reader.h", "src/ray/object_manager/ownership_based_object_directory.h", "src/ray/object_manager/pull_manager.h", "src/ray/object_manager/push_manager.h", "src/ray/object_manager/spilled_object_reader.h", ], deps = [ ":core_worker_lib", ":gcs", ":object_manager_rpc", ":plasma_store_server_lib", ":ray_common", "//src/ray/util", "@boost//:asio", ], ) - (assigned) (easy) GCS:
Lines 2659 to 2688 in bdeeaa6
ray_cc_library( name = "gcs", srcs = [ "//:src/ray/gcs/pb_utils.cc", "//:src/ray/gcs/redis_async_context.cc", "//:src/ray/gcs/redis_client.cc", "//:src/ray/gcs/redis_context.cc", ], hdrs = [ "//:src/ray/gcs/pb_util.h", "//:src/ray/gcs/redis_async_context.h", "//:src/ray/gcs/redis_client.h", "//:src/ray/gcs/redis_context.h", ], deps = [ ":gcs_callback", ":hiredis", ":node_manager_fbs", ":node_manager_rpc", ":ray_common", ":stats_lib", "//src/ray/protobuf:agent_manager_cc_proto", "//src/ray/protobuf:gcs_cc_proto", "//src/ray/protobuf:gcs_service_cc_proto", "//src/ray/util", "//src/ray/util:exponential_backoff", "@boost//:asio", ], )
Several targets are large, and don't need to finish all cleanup in one PR.
Use case
No response
Metadata
Metadata
Assignees
Labels
Type
Projects
Status