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.kinn...@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

Reply via email to