RFR(S): 8027593: performance drop with constrained codecache starting with hs25 b111

Albert Noll albert.noll at oracle.com
Tue Nov 5 06:44:41 PST 2013


Hi,

could I get reviews for this small patch?

bug: https://bugs.openjdk.java.net/browse/JDK-8027593
webrev: http://cr.openjdk.java.net/~anoll/8027593/webrev.00/

Problem: The implementation of the sweeper (8020151) causes a 
performance regression for small code cache sizes. There are two issues 
that cause this regression:
   1) NmethodSweepFraction is only adjusted according to the 
ReservedCodecacheSize if TieredCompilation is enabled. As a result, 
NmethodSweepFraction remains 16 (if TieredCompilation is not used). This 
is way too large for small code cache sizes (e.g., <5m).
  2) _request_mark_phase (sweeper.cpp) is initialized to false. As a 
result, mark_active_nmethods() did not set _invocations and _current, 
which results in not invoking the sweeper (calling sweep_code_cache()) 
at all. When TieredCompilation is enabled this was not an issue, since 
NmethodSweeper::notify() (which sets _request_mark_phase) is called much 
more frequently.

Solution: 1) Move setting of NmethodSweepFraction so that it is always 
executed.
Solution: 2) Remove need_marking_phase(), request_nmethod_marking(), and 
reset_nmetod_marking().
                    I think that these checks are not needed since 
8020151, since we do stack scanning of
                    active nmethods irrespective of the value of what 
need_marking_phase() returns. Since
                    the patch removes need_marking_phase() printing out 
the warning (line 327 in
                    sweeper.cpp) is incorrect, i.e., we continue to 
invoke the sweeper. I removed the warning
                    and the associated code.


Also, I think that we can either remove -XX:MethodFlushing or 
-XX:UseCodeCacheFlushing. Since 8020151, one of them is redundant and 
can be removed. I am not quite sure if we should do that now so it is 
not included in the patch.

Testing
bug: https://bugs.openjdk.java.net/browse/JDK-8027593 also shows a 
performance evaluation.

Many thanks for looking at the patch.
Best,
Albert


More information about the hotspot-compiler-dev mailing list