-
Notifications
You must be signed in to change notification settings - Fork 140
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FEATURE] Introduce node level circuit breaker settings for k-NN #2263
Comments
I can look into this. |
Initial Thoughts The implementation centers around modifying I understood the approach abovebeing to set a fixed attribute (e.g., Users would need to update their node-level configuration with this categorization to utilize the updated circuit breaker value. Only the specified key would be considered among user-provided node attributes, requiring users to classify nodes independently. Since the listeners for these settings are defined at runtime, we could leverage Initial local changes look promising but require additional testing. Test Output
We could further potentially improve the experience by enabling users to set custom circuit breaker policies based on their existing attributes. Similar to routing or load balancing policies, a circuit breaker policy would evaluate each node's circuit breaker value using user-provided in-memory static evaluation conditionals. This represents a more complex effort that may be outside the current scope but could be explored if there exists a need for it. |
Is your feature request related to a problem?
The existing k-NN plugin uses a cluster-level circuit breaker to prevent excessive memory consumption. While effective, this approach may not be optimal for all cluster configurations, especially in heterogeneous environments where nodes have varying capacities. It lacks fine-grained control over memory usage on individual nodes.
What solution would you like?
Implement node-level circuit breakers for the k-NN plugin, allowing memory limits to be set and enforced on a per-node basis.
The enhancement will refactor the circuit breaker system in OpenSearch to support differentiated limits based on node attributes.
The approach involves defining circuit breaker limits at the cluster level, but with distinct values for different node types. Nodes would be categorized using attributes such as "node.attr.type" set to values like "big" or "small" in their opensearch.yml configuration.
For example -
The k-NN plugin would then apply the appropriate limit based on each node's attributes. This method leverages existing OpenSearch configuration mechanisms, allows for centralized management, and provides the necessary flexibility for mixed-capability clusters. It maintains backwards compatibility by falling back to a default or existing cluster-wide setting for nodes without specified attributes.
Implementation would require modifying the k-NN plugin to read node attributes, select the corresponding circuit breaker limit, and apply it in the circuit breaker logic. This solution offers a balance of granular control and ease of management, tailoring resource allocation to node capabilities while keeping configuration centralized and straightforward.
What alternatives have you considered?
The text was updated successfully, but these errors were encountered: