On Tue, 7 Feb 2023 20:47:28 GMT, Roger Riggs <rri...@openjdk.org> wrote:

> I'm going to backup a bit; so another question... This test is a fairly 
> simple test that should not be taxing on GC or any other resource so I'm 
> surprised the the default configuration is not sufficient. It might be worth 
> looking a bit deeper into the GC vs Xcomp conditions and the interplay with 
> "looongaarch64". I can't help much there, not being familiar with details of 
> GC or the compiler.

Using `-Xcomp` necessarily results in more methods being compiled. And in 
hotspot, the codecache does not trigger the GC after it is full, but triggers 
the GC when it reaches a certain threshold with `SweeperThreshold`. 

<pre><code class="cpp">
// ./src/hotspot/share/code/codeCache.cpp
 818   if (allocated_since_last_ratio > threshold) {        // threshold  = 
SweeperThreshold / 100.0;                  
 819     // In case the GC is concurrent, we make sure only one thread requests 
the GC.
 820     if (Atomic::cmpxchg(&_unloading_threshold_gc_requested, false, true) 
== false) {
 821       log_info(codecache)("Triggering threshold (%.3f%%) GC due to 
allocating %.3f%% since last unloading (%.3f%% used -> %.3f%% used)",
 822                           threshold * 100.0, allocated_since_last_ratio * 
100.0, last_used_ratio * 100.0, used_ratio * 100.0);
 823       Universe::heap()->collect(GCCause::_codecache_GC_threshold);         
     
 824     }                                                                      
     
 825   }   
</code></pre>

So, when I adjust `-XX:SweeperThreshold=30`, the test passes also.

-------------

PR: https://git.openjdk.org/jdk/pull/12399

Reply via email to