Skip to content

[Feature] Allow SimpleStorage placement to target eligible Ray nodes #150

Description

@nataliekung

Problem

Since #144, SimpleStorage hard round-robins storage units across every alive Ray node. This preserves even distribution on a homogeneous cluster, but it also places storage units across unrelated node groups in a shared heterogeneous cluster.

A public two-node reproduction is:

# Node A
ray start --head --resources='{"storage_pool": 1}'

# Node B
ray start --address='<head-address>' --resources='{"compute_pool": 1}'

With both nodes alive, initializing SimpleStorage schedules units across both nodes even when only nodes advertising storage_pool should host storage.

Proposed behavior

Add an optional SimpleStorage placement filter based on a Ray custom resource, for example an eligible custom-resource name or equivalent node filter.

  • When the option is unset, keep the current behavior exactly: round-robin across all alive Ray nodes.
  • When set, include only alive nodes whose matching custom resource has a positive capacity.
  • Keep hard NodeAffinitySchedulingStrategy placement and round-robin only within the eligible set.
  • If no alive node matches, fail during initialization with a clear error instead of creating actors that cannot satisfy the intended placement.
  • Dead nodes must never be eligible.

This should only filter the node list used by SimpleStorage; it should not monkeypatch Ray scheduling or change other storage backends.

Suggested tests

  • Unset option preserves all-alive-node round-robin behavior.
  • A custom-resource filter excludes otherwise alive nodes.
  • Dead nodes are excluded even when they advertise the resource.
  • No matching alive node raises a clear initialization error.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions