Hi Roger,

Thanks for expanding on the issue. Hopefully in the future this can be handled in a more direct way.

Thanks,
David

On 7/11/2018 8:13 AM, Roger Riggs wrote:
Hi David,

On 11/06/2018 04:52 PM, David Holmes wrote:
Hi Roger,

On 7/11/2018 2:17 AM, Roger Riggs wrote:
While working to reduce startup time initializing properties, a pair of improvements are proposed.

8185496: Improve performance of system properties initialization in initPhase1 [1]
8213424: VersionProps duplicate initialization [2]

1) The overhead of providing default values in native is reduced by applying the defaults      when first used and leaving the properties undefined unless there is
     an OS supplied value or a -D command line argument

Looking at the hotspot change for setting sun.nio.MaxDirectMemorySize I don't really understand the change. In the current code we will always set the property even if the value -1 means it is "unset". Your change wants to exclude it completely in the default case as an optimisation, yet to do that you have to perform far more work in the VM examining every key to see if we need to skip a -D set value. That seems counter-productive on the surface. What is the actual performance change here?
The goal is to not have default values assigned in native so they can be handled at the same point where a decision is made in VM.getSavedProperties. If  the property has any value, it has to create the string and invoke Properties.put which is a bunch more instructions than a few strcmp's in native. (though it is proportional to the number of properties.) And it would cleaner still if the MaxDirectMemorySize wasn't passed as a property but that's the
current implementation mechanism. Further cleanup is possible.

The ignoring of a -D has to be handled somewhere, and it is more efficient to do it early. In retrospect, I would much have preferred that sun.nio.maxDirectMemorySize had just be left as a normal -D property and left all the clever parsing to the java code.  (But I wasn't involved in that).

I have a future change to replace the Property.put upcalls, but just dropping any unnecessary properties is a small step.

Thanks, Roger


Thanks,
David

2) Two tests for properties are combined into a more complete test

webrev:

http://cr.openjdk.java.net/~rriggs/webrev-props-cleanup-8185496/

Issues:
[1] https://bugs.openjdk.java.net/browse/JDK-8185496
[2] https://bugs.openjdk.java.net/browse/JDK-8213424

Thanks for any comments and suggestions, Roger




Reply via email to