Mercurial > hg > release > thermostat-1.6
changeset 2016:145331068b53
Better Shenandoah GC support in vm-gc plugin.
Reviewed-by: neugens
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-August/020747.html
PR3155
author | Severin Gehwolf <sgehwolf@redhat.com> |
---|---|
date | Tue, 30 Aug 2016 15:28:28 +0200 |
parents | 2722ffe3454e |
children | 82fffb91b91a |
files | vm-gc/client-core/src/main/java/com/redhat/thermostat/vm/gc/client/core/internal/VmGcController.java vm-gc/client-core/src/main/java/com/redhat/thermostat/vm/gc/client/locale/LocaleResources.java vm-gc/client-core/src/main/resources/com/redhat/thermostat/vm/gc/client/locale/strings.properties vm-gc/common/src/main/java/com/redhat/thermostat/vm/gc/common/GcCommonNameMapper.java vm-gc/common/src/test/java/com/redhat/thermostat/vm/gc/common/GcCommonNameMapperTest.java |
diffstat | 5 files changed, 37 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/vm-gc/client-core/src/main/java/com/redhat/thermostat/vm/gc/client/core/internal/VmGcController.java Tue Aug 30 10:05:18 2016 -0400 +++ b/vm-gc/client-core/src/main/java/com/redhat/thermostat/vm/gc/client/core/internal/VmGcController.java Tue Aug 30 15:28:28 2016 +0200 @@ -192,10 +192,13 @@ timer.stop(); } - // FIXME - private LocalizedString chartName(String collectorName, String generationName) { - return translator.localize(LocaleResources.VM_GC_COLLECTOR_OVER_GENERATION, + private LocalizedString chartName(String collectorName, String generationName, boolean isGenerational) { + if (isGenerational) { + return translator.localize(LocaleResources.VM_GC_COLLECTOR_OVER_GENERATION, collectorName, generationName); + } else { + return translator.localize(LocaleResources.VM_GC_COLLECTOR_NON_GENERATIONAL, collectorName); + } } private synchronized void doUpdateCollectorData() { @@ -231,15 +234,26 @@ } lastValueSeen.put(collector, stat); } + final boolean isGenerational = isGenerationalCollector(commonName); for (Map.Entry<String, List<IntervalTimeData<Double>>> entry : dataToAdd.entrySet()) { String name = entry.getKey(); if (!addedCollectors.contains(name)) { - view.addChart(name, chartName(name, getCollectorGeneration(name)), "ms"); + view.addChart(name, chartName(name, getCollectorGeneration(name), isGenerational), "ms"); addedCollectors.add(name); } view.addData(entry.getKey(), entry.getValue()); } } + + private boolean isGenerationalCollector(CollectorCommonName commonName) { + switch (commonName) { + case SHENANDOAH: + return false; + default: + // Default to generational + return true; + } + } private CollectorCommonName getCommonName() { Set<String> distinctCollectors = gcDao.getDistinctCollectorNames(ref);
--- a/vm-gc/client-core/src/main/java/com/redhat/thermostat/vm/gc/client/locale/LocaleResources.java Tue Aug 30 10:05:18 2016 -0400 +++ b/vm-gc/client-core/src/main/java/com/redhat/thermostat/vm/gc/client/locale/LocaleResources.java Tue Aug 30 15:28:28 2016 +0200 @@ -53,6 +53,7 @@ VM_GC_TITLE, VM_GC_COLLECTOR_OVER_GENERATION, + VM_GC_COLLECTOR_NON_GENERATIONAL, VM_GC_COLLECTOR_CHART_REAL_TIME_LABEL, VM_GC_COLLECTOR_CHART_GC_TIME_LABEL, VM_GC_CONFIGURED_COLLECTOR,
--- a/vm-gc/client-core/src/main/resources/com/redhat/thermostat/vm/gc/client/locale/strings.properties Tue Aug 30 10:05:18 2016 -0400 +++ b/vm-gc/client-core/src/main/resources/com/redhat/thermostat/vm/gc/client/locale/strings.properties Tue Aug 30 15:28:28 2016 +0200 @@ -12,6 +12,8 @@ VM_GC_TITLE = Garbage Collection in the VM VM_GC_COLLECTOR_OVER_GENERATION = Collector {0} running on {1} +# Use the name of the collector verbatim +VM_GC_COLLECTOR_NON_GENERATIONAL = {0} VM_GC_COLLECTOR_CHART_REAL_TIME_LABEL = Time VM_GC_COLLECTOR_CHART_GC_TIME_LABEL = GC Time ({0}) VM_GC_CONFIGURED_COLLECTOR = Configured Garbage Collector:
--- a/vm-gc/common/src/main/java/com/redhat/thermostat/vm/gc/common/GcCommonNameMapper.java Tue Aug 30 10:05:18 2016 -0400 +++ b/vm-gc/common/src/main/java/com/redhat/thermostat/vm/gc/common/GcCommonNameMapper.java Tue Aug 30 15:28:28 2016 +0200 @@ -56,6 +56,8 @@ CONCURRENT_COLLECTOR("Concurrent Collector (Concurrent Mark and Sweep)"), /** Mark Sweep Compact Collector: {@code -XX:+UseParNewGC} */ MARK_SWEEP_COMPACT("Mark Sweep Compact Collector"), + /** Shenandoah Collector: {@code -XX:+UseShenandoahGC} */ + SHENANDOAH("Shenandoah Collector"), UNKNOWN_COLLECTOR("Unknown Collector"); private String humanReadableName; @@ -98,6 +100,13 @@ concurrentColls.add("CMS"); concurrentColls.add("PCopy"); commonNameMap.put(concurrentColls, CollectorCommonName.CONCURRENT_COLLECTOR); + // Shenandoah collector has 3 exposed sub collectors even though + // it's non-generational + Set<String> shenandoahColls = new HashSet<>(3); + shenandoahColls.add("Shenandoah concurrent phases"); + shenandoahColls.add("Shenandoah pauses"); + shenandoahColls.add("Shenandoah full GC pauses"); + commonNameMap.put(shenandoahColls, CollectorCommonName.SHENANDOAH); } /**
--- a/vm-gc/common/src/test/java/com/redhat/thermostat/vm/gc/common/GcCommonNameMapperTest.java Tue Aug 30 10:05:18 2016 -0400 +++ b/vm-gc/common/src/test/java/com/redhat/thermostat/vm/gc/common/GcCommonNameMapperTest.java Tue Aug 30 15:28:28 2016 +0200 @@ -71,6 +71,12 @@ actual = mapper.mapToCommonName(distinctSet); assertEquals("'MSC' + 'Copy' should map to serial collector", CollectorCommonName.SERIAL_COLLECTOR, actual); + distinctSet = getDistinctColNames("Shenandoah concurrent phases", + "Shenandoah pauses", + "Shenandoah full GC pauses"); + actual = mapper.mapToCommonName(distinctSet); + assertEquals("Should map to shenandoah GC", + CollectorCommonName.SHENANDOAH, actual); } @Test @@ -80,6 +86,7 @@ assertEquals("Garbage-First Collector (G1)", CollectorCommonName.G1.getHumanReadableString()); assertEquals("Concurrent Collector (Concurrent Mark and Sweep)", CollectorCommonName.CONCURRENT_COLLECTOR.getHumanReadableString()); assertEquals("Mark Sweep Compact Collector", CollectorCommonName.MARK_SWEEP_COMPACT.getHumanReadableString()); + assertEquals("Shenandoah Collector", CollectorCommonName.SHENANDOAH.getHumanReadableString()); assertEquals("Unknown Collector", CollectorCommonName.UNKNOWN_COLLECTOR.getHumanReadableString()); }