Skip to content
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

Elasticsearch should auto-determine appropriate machine memory settings #65025

Closed
mark-vieira opened this issue Nov 12, 2020 · 3 comments
Closed
Assignees
Labels
:Core/Infra/Core Core issues without another label :Delivery/Cloud Cloud-specific packaging and deployment Team:Core/Infra Meta label for core/infra team Team:Delivery Meta label for Delivery team

Comments

@mark-vieira
Copy link
Contributor

Background

Currently we expect our on-prem users to appropriately set the size of the heap and the allocation of memory to ML. We also have cloud explicitly set heap based on a number of factors. Both of these cases create a bad experience. Our users should not need to accrue knowledge of the internal memory needs of a node including what features will consume heap vs. native memory. This creates a heavy burden for our users to get started in production and to upgrade as well as being an unrealistic ask of the uses we are wanting to adopt.

Since Elasticsearch itself has knowledge of the typical demands of various node roles on heap vs. native memory it should itself set the heap size and other relevant memory settings dependent on the node role and the memory available.

Additionally to make autoscaling successful we need to be able to have the cluster ask Cloud for nodes with specified total memory. In order to calculate the total memory required we need for ML nodes we need to start from the memory required by the native process to satisfy the existing jobs and work back to the total memory required for the container.

Proposal

Quite simply, the function of how determine appropriate memory settings for heap and ML is a combination of the role(s) of the node and available system/container memory. The latter information we have (or can easily get) already, but our JVM ergonomics code currently runs before settings parsing, thus we do not know what roles are applied to the given node. Existing settings parsing logic is complex and rather heavy weight as it requires loading all installed plugins (since they might register their own settings). This is overkill for our purposes so the determined way forward should be to simply implement the minimum required logic to parse elasticsearch.yml and pull out the node roles.

@mark-vieira mark-vieira added the :Core/Infra/Core Core issues without another label label Nov 12, 2020
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-core-infra (:Core/Infra/Core)

@elasticmachine elasticmachine added the Team:Core/Infra Meta label for core/infra team label Nov 12, 2020
@mark-vieira mark-vieira added the :Delivery/Cloud Cloud-specific packaging and deployment label Nov 12, 2020
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-delivery (:Delivery/Cloud)

@elasticmachine elasticmachine added the Team:Delivery Meta label for Delivery team label Nov 12, 2020
@mark-vieira mark-vieira self-assigned this Nov 12, 2020
@rjernst rjernst added the needs:triage Requires assignment of a team area label label Dec 3, 2020
@rjernst
Copy link
Member

rjernst commented Dec 17, 2020

closed by #65905

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
:Core/Infra/Core Core issues without another label :Delivery/Cloud Cloud-specific packaging and deployment Team:Core/Infra Meta label for core/infra team Team:Delivery Meta label for Delivery team
Projects
None yet
Development

No branches or pull requests

3 participants