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

OSB is not compatible with Shenandoah GC | Java 17 #242

Closed
ayushav12 opened this issue Mar 24, 2023 · 4 comments
Closed

OSB is not compatible with Shenandoah GC | Java 17 #242

ayushav12 opened this issue Mar 24, 2023 · 4 comments
Labels
enhancement New feature or request

Comments

@ayushav12
Copy link
Contributor

ayushav12 commented Mar 24, 2023

Describe the bug
I created an OpenSearch-2.3 domain with updated JVM settings to use single-generation Shenandoah Garbage Collector. Then, to test my domain for performance, I setup OSB and ran nyc_taxis workload. The test run failed giving error :

in jvm_stats
old_gen_collection_time = gc["old"]["collection_time_in_millis"]

KeyError: 'old'

Since, Shenandoah is single-generation GC, there's no concept on old-generation, new-generation and permanent-generation as in generic garbage collector algorithms.

More Context (please complete the following information):

  • Workload(Share link for custom workloads) : nyc_taxis
  • Service(E.g OpenSearch) : OpenSearch
  • Version (E.g. 1.0) : 2.3
@ayushav12 ayushav12 added bug Something isn't working untriaged labels Mar 24, 2023
@IanHoang
Copy link
Collaborator

After taking a quick glance in the codebase, this is correct, OSB so far only supports multi-generational garbage collectors (like G1GC and CMS) and does not support experimental types of Garbage Collectors like Shenandoah. We'd have to look at incorporating support for single-generation GCs.

Although it's unlikely that you won't be needing it, if you still want to run node-stats on OS 2.3 without GC metrics, this can be done by running with additional parameters --telemetry-params=node-stats-include-gc=false in the OSB command.

@IanHoang IanHoang added enhancement New feature or request and removed untriaged labels Mar 24, 2023
@IanHoang
Copy link
Collaborator

IanHoang commented Mar 27, 2023

Update: It seems like passing in false for node-stats-include-gc doesn't tell OSB to not collect GC data. It only tells OSB to not include GC data into the final node-metrics document that is produced and ingested into the metrics data store. This is why it still fails and encounters the same issue about unable to find old GC even when parameter is passed in.

if self.include_mem_stats:
collected_node_stats.update(self.jvm_mem_stats(node_name, node_stats))
if self.include_gc_stats:
collected_node_stats.update(self.jvm_gc_stats(node_name, node_stats))
if self.include_network:
collected_node_stats.update(self.network_stats(node_name, node_stats))
if self.include_process:
collected_node_stats.update(self.process_stats(node_name, node_stats))
if self.include_indexing_pressure:
collected_node_stats.update(self.indexing_pressure(node_name, node_stats))
self.metrics_store.put_doc(dict(collected_node_stats),
level=MetaInfoScope.node,
node_name=node_name,
meta_data=metrics_store_meta_data)

@IanHoang
Copy link
Collaborator

IanHoang commented May 2, 2023

This issue is similar to #206 and should be regarded as an enhancement rather than a bug because OSB currently supports GCs with concepts of old / young generations like G1GC and CMS GCs. We've currently implemented a short-term fix but will work on a long-term fix eventually.

@IanHoang IanHoang changed the title [BUG] OSB is not compatible with Shenandoah GC | Java 17 OSB is not compatible with Shenandoah GC | Java 17 May 25, 2023
@IanHoang IanHoang removed their assignment Oct 18, 2023
@IanHoang
Copy link
Collaborator

No plans for adding support for Shenandoah GC for now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Development

No branches or pull requests

2 participants