8245724: Move g1 periodic gc logging to G1InitLogger

Reviewed-by: kbarrett, tschatzl
This commit is contained in:
Stefan Johansson 2020-05-27 11:48:33 +02:00
parent 2ff952bf32
commit 6e1403480a
8 changed files with 26 additions and 16 deletions

@ -40,6 +40,16 @@ void G1InitLogger::print_workers() {
}
}
void G1InitLogger::print_gc_specific() {
// Print a message about periodic GC configuration.
if (G1PeriodicGCInterval != 0) {
log_info(gc, init)("Periodic GC: Enabled");
log_info(gc, init)("Periodic GC Interval: " UINTX_FORMAT "ms", G1PeriodicGCInterval);
} else {
log_info(gc, init)("Periodic GC: Disabled");
}
}
void G1InitLogger::print() {
G1InitLogger init_log;
init_log.print_all();

@ -31,7 +31,7 @@ class G1InitLogger : public GCInitLogger {
protected:
virtual void print_heap();
virtual void print_workers();
virtual void print_gc_specific();
public:
static void print();
};

@ -101,13 +101,6 @@ void G1YoungRemSetSamplingThread::check_for_periodic_gc(){
void G1YoungRemSetSamplingThread::run_service() {
double vtime_start = os::elapsedVTime();
// Print a message about periodic GC configuration.
if (G1PeriodicGCInterval != 0) {
log_info(gc)("Periodic GC enabled with interval " UINTX_FORMAT "ms", G1PeriodicGCInterval);
} else {
log_info(gc)("Periodic GC disabled");
}
while (!should_terminate()) {
sample_young_list_rs_length();

@ -39,6 +39,7 @@ void GCInitLogger::print_all() {
print_compressed_oops();
print_heap();
print_workers();
print_gc_specific();
}
void GCInitLogger::print() {
@ -106,6 +107,10 @@ void GCInitLogger::print_workers() {
}
}
void GCInitLogger::print_gc_specific() {
// To allow additional gc specific logging.
}
const char* GCInitLogger::large_pages_support() {
if (UseLargePages) {
#ifdef LINUX

@ -38,6 +38,7 @@ class GCInitLogger : public StackObj {
virtual void print_compressed_oops();
virtual void print_heap();
virtual void print_workers();
virtual void print_gc_specific();
public:
void print_all();
static void print();

@ -31,8 +31,8 @@ package gc.g1;
* @library /test/lib /
* @modules java.base/jdk.internal.misc
* @modules java.management/sun.management
* @run main/othervm -XX:MaxNewSize=32M -XX:InitialHeapSize=48M -Xmx128M -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=25 -XX:+UseG1GC -XX:G1PeriodicGCInterval=3000 -XX:+G1PeriodicGCInvokesConcurrent -Xlog:gc,gc+periodic=debug,gc+ergo+heap=debug gc.g1.TestPeriodicCollection
* @run main/othervm -XX:MaxNewSize=32M -XX:InitialHeapSize=48M -Xmx128M -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=25 -XX:+UseG1GC -XX:G1PeriodicGCInterval=3000 -XX:-G1PeriodicGCInvokesConcurrent -Xlog:gc,gc+periodic=debug,gc+ergo+heap=debug gc.g1.TestPeriodicCollection
* @run main/othervm -XX:MaxNewSize=32M -XX:InitialHeapSize=48M -Xmx128M -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=25 -XX:+UseG1GC -XX:G1PeriodicGCInterval=3000 -XX:+G1PeriodicGCInvokesConcurrent -Xlog:gc*,gc+periodic=debug,gc+ergo+heap=debug gc.g1.TestPeriodicCollection
* @run main/othervm -XX:MaxNewSize=32M -XX:InitialHeapSize=48M -Xmx128M -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=25 -XX:+UseG1GC -XX:G1PeriodicGCInterval=3000 -XX:-G1PeriodicGCInvokesConcurrent -Xlog:gc*,gc+periodic=debug,gc+ergo+heap=debug gc.g1.TestPeriodicCollection
*/
import com.sun.management.HotSpotDiagnosticMXBean;

@ -35,14 +35,14 @@ package gc.g1;
* -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
* -XX:+UseG1GC -XX:G1PeriodicGCInterval=100
* -XX:+G1PeriodicGCInvokesConcurrent
* -Xlog:gc,gc+periodic=debug
* -Xlog:gc*,gc+periodic=debug
* gc.g1.TestPeriodicCollectionJNI
* @run main/othervm/native
* -Xbootclasspath/a:.
* -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
* -XX:+UseG1GC -XX:G1PeriodicGCInterval=100
* -XX:-G1PeriodicGCInvokesConcurrent
* -Xlog:gc,gc+periodic=debug
* -Xlog:gc*,gc+periodic=debug
* gc.g1.TestPeriodicCollectionJNI
*/

@ -42,23 +42,24 @@ public class TestPeriodicLogMessages {
public static void main(String[] args) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC",
"-XX:G1PeriodicGCInterval=0",
"-Xlog:gc,gc+periodic=debug",
"-Xlog:gc+init,gc+periodic=debug",
"-Xmx10M",
GCTest.class.getName());
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldContain("Periodic GC disabled");
output.shouldContain("Periodic GC: Disabled");
output.shouldNotContain("Checking for periodic GC");
output.shouldHaveExitValue(0);
pb = ProcessTools.createJavaProcessBuilder("-XX:+UseG1GC",
"-XX:G1PeriodicGCInterval=100",
"-Xlog:gc,gc+periodic=debug",
"-Xlog:gc+init,gc+periodic=debug",
"-Xmx10M",
GCTest.class.getName());
output = new OutputAnalyzer(pb.start());
output.shouldContain("Periodic GC enabled with interval 100ms");
output.shouldContain("Periodic GC: Enabled");
output.shouldContain("Periodic GC Interval: 100ms");
output.shouldContain("Checking for periodic GC");
output.shouldHaveExitValue(0);
}