RFR 8019375: Internal symbol table size should be tunable.

Kevin Walls kevin.walls at oracle.com
Mon Oct 7 14:00:32 PDT 2013


Thanks Coleen!

On 04/10/13 20:36, Coleen Phillimore wrote:
>
> Kevin,
> This looks good.  Thank you for following up on the SA issues, and 
> resolving the issue of exposing the size of our symbol table by making 
> this flag experimental.
> Coleen
>
> On 10/3/2013 5:21 AM, Kevin Walls wrote:
>>
>> Hi,
>>
>> Revisiting this after further testing, and marking the flag as 
>> experimental as Karen suggested (usage will be 
>> -XX:+UnlockExperimentalVMOptions -XX:SymbolTableSize=...).
>>
>> After removing an unnecessary method in the SA SymbolTable.java and 
>> further testing, here's a webrev:
>> http://cr.openjdk.java.net/~kevinw/8019375/webrev.02/
>>
>>
>> Making the symbol table size tunable, and removing 
>> SymbolTable::symbol_table_size in vmStructs.cpp, affects a 
>> Serviceability Agent class, 
>> agent/src/share/classes/sun/jvm/hotspot/memory/SymbolTable.java.
>>
>> There we reference the size we've removed, and that class has a 
>> method getSymbolTableSize() which returns it, but that method is 
>> never called.  My succesful testing including e.g the internal test 
>> suit nsk/sajdi.nsk/sajdi is with that method removed.
>>
>> The SA SymbolTable has its own tableSize() which still does match the 
>> size of the VM's own symboltable,
>> after this change, and when using the new tunable to change the 
>> symbol table size, without using the field I removed from vmStructs.
>>
>> How? 8-)  sun/jvm/hotspot/memory/SymbolTable initialises using the 
>> vmStructs type information that describes the native BasicHashtable 
>> (from src/share/vm/utilities/hashtable.hpp), and never needed the 
>> field that directly stored the symbol table size.
>>
>> (I see we did something similar in StringTable for 6962930, including 
>> removing the table size method in the SA class.)
>>
>> Thanks
>> Kevin
>>
>>
>>
>>
>> On 29/08/13 13:44, Kirk Pepperdine wrote:
>>> Hi all,
>>>
>>> I'm inclined to believe that there are performance benefits to be 
>>> gained by being able to get statistics and then use those statistics 
>>> to better size both the dictionary and the String table. The fact 
>>> that we've not had ready access to these stats and settings in the 
>>> field has at times compromised tuning efforts. The Code Cache is 
>>> another example of where an auto-tunable hasn't quite worked out and 
>>> that the ability to obtain measures and make adjustments would have 
>>> been invaluable.
>>>
>>> Kind regards,
>>> Kirk Pepperdine
>>>
>>> On 2013-08-29, at 1:55 PM, Karen Kinnear <karen.kinnear at oracle.com> 
>>> wrote:
>>>
>>>> Kevin,
>>>>
>>>> Let's talk - I was serious about not asking customers to give 
>>>> values that tune our internal metadata sizes -
>>>> we are potentially moving to different types of metadata or 
>>>> combining symbols with other things -- please
>>>> modify to get a PredictedMaxVMStrings (other names welcome) - but 
>>>> to get a size from the customers that
>>>> we then adopt metadata heuristics to.
>>>>
>>>> thanks,
>>>> Karen
>>>>
>>>> On Aug 23, 2013, at 5:34 AM, Kevin Walls wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I'd like to get reviews on this change to make the size of the 
>>>>> symbol table tunable.  This can be a performance benefit to some 
>>>>> apps, i.e. when the symbol table becomes overloaded (see 
>>>>> PrintStringTableStatistics output).
>>>>>
>>>>> This work here actually comes from Coleen.  I'm happy to take any 
>>>>> further comments and update.
>>>>>
>>>>> http://cr.openjdk.java.net/~kevinw/8019375/webrev.01/
>>>>> http://bugs.sun.com/view_bug.do?bug_id=8019375
>>>>>
>>>>> This uses SymbolTableSize as the tunable name.  (Another 
>>>>> suggestion and possibile name, was PredictedMaxVMStrings to avoid 
>>>>> talking explicity about the internal format. Comments welcome!...)
>>>>>
>>>>> Thanks
>>>>> Kevin
>>
>



More information about the hotspot-runtime-dev mailing list