java.awt event processing performance degradation on JRE7 - linux

David Holmes david.holmes at oracle.com
Tue Apr 17 18:16:12 PDT 2012


Hi Nicolas,

Federico's patch has also been applied to 7u4.

FYI bug number: 7104625

David
-----

On 18/04/2012 11:01 AM, Nicolas Carranza wrote:
> Federico's patch solves  the performance regression (see:
> http://mail.openjdk.java.net/pipermail/jdk7u-dev/2012-April/002694.html
> ). But instead of this patch I find better to change the PlatformLogger
> class: insert "if(!isLoggable(level)) return;" at the beginning of the
> method sun.util.logging.PlatformLogger.JavaLogger.doLog(int level,
> String msg, Object... params) . The string convertion affecting the
> performance is done on the PlatformLogger.JavaLogger.doLog (even when
> the message is not loggable) and it is there where the problem should be
> fixed (to be more clear and also cover more use cases). Fixing it there
> also clears why the performance regression does not happen when
> redirectPlatformLoggers has not been called (when logging is not used):
> PlatformLogger.LoggerProxy.doLog(int level, String msg, Object...
> params) does not do the string convertion  when the message is not
> loggable.
>
> Federico's patch has already been pushed to the jdk8 repository, when
> will it be applied to jdk7 (or my propossed change if it is preferred)?
>
> [ Here is a jvisualvm memory profiling snapshot of
> PerformanceRegresionTest3:
> http://www.java.net/forum/topic/performance/general-performance-discussion/jre7s-javaawt-performance-degradation-caused-javautillogging-linux#comment-823486
> . ]
>
> Cheers,
> Nicolas
>
> On 04/16/2012 09:40 PM, Mandy Chung wrote:
>> Nicolas,
>>
>> Thanks for reporting the problem.   I am curious if you have collected
>> any profiling data that shows
>> sun.util.logging.PlatformLogger.redirectPlatformLoggers() is the cause
>> of the performance degradation.  This redirection is done as part of
>> the logging initialization before JFrame is initialized.  Since the
>> performance degradation you observed is after the JFrame has been
>> instantiated, it could be something else.  If it's logging-related, it
>> would be sun.util.logging.PlatformLogger.
>>
>> Mandy
>>
>> On 4/16/2012 6:18 AM, Daniel D. Daugherty wrote:
>>> java.util.logging is currently handled by the Serviceability Team.
>>> Adding that alias to this e-mail thread...
>>>
>>> Dan
>>>
>>>
>>> On 4/16/12 12:17 AM, Nicolas Carranza wrote:
>>>> Moving the mouse pointer over a java.awt.Window using JRE7 consumes
>>>> aprox. twice the CPU time as with JRE6 when logging is used (when a
>>>> call
>>>> to java.util.logging.getLogger(String)---even without using the
>>>> returned
>>>> Logger--- has been done). Keyboard key event processing suffers the
>>>> same
>>>> performance penalty. For steps to reproduce this problem please look
>>>> at:
>>>> http://www.java.net/forum/topic/performance/general-performance-discussion/jre7s-javaawt-performance-degradation-caused-javautillogging-linux
>>>>
>>>> .
>>>>
>>>> The performance degradation seems to be "enabled" by the call of
>>>> sun.util.logging.PlatformLogger.redirectPlatformLoggers() done inside
>>>> java.util.LogManager.readPrimorialConfiguration() on JRE7. Call chain:
>>>> Logger.getLogger()->LogManager.getLogManager()->
>>>> LogManager.readPrimordialConfiguration()->sun.util.logging.PlatformLogger.redirectPlatformLoggers().
>>>>
>>>>
>>>> This call is not made on JRE6. If this problem is not easy to solve
>>>> then
>>>> I guess is better to remove this call from JRE7's
>>>> readPrimordialConfiguration as it does more harm than good.
>>>>
>>>> Please let me know if there is a better place to report this problem. A
>>>> couple of weeks ago I "opened" a bug report on bugs.sun.com but I
>>>> received no response at all.
>>>>
>>>> Cheers,
>>>> Nicolas
>>
>



More information about the jdk7u-dev mailing list