RFR (S): 7198334: UseNUMA modifies system parameters on non-NUMA system

Erik Helin erik.helin at oracle.com
Tue Nov 20 02:26:15 PST 2012


Thanks David!

Erik

On 11/20/2012 09:44 AM, David Holmes wrote:
> Thanks Erik, I have no further comments on this. :)
>
> You still need a second reviewer of course.
>
> Cheers,
> David
>
> On 20/11/2012 7:19 AM, Erik Helin wrote:
>> Hi David,
>>
>> first of all, sorry for my very late reply, I've had some serious
>> technical issues with my email account.
>>
>> This is a reply to the following email:
>> http://mail.openjdk.java.net/pipermail/hotspot-dev/2012-October/007128.html
>>
>>
>> Unfortunately, my email address has been changed and I can't therefore
>> reply correctly to the original email.
>>
>> I've uploaded a new, minimal webrev at:
>> http://cr.openjdk.java.net/~mgerdin/JDK-7198334.1/
>>
>> On 10/30/2012 6 PM, David Holmes wrote:
>>   >>  On 10/30/2012 04:29 AM, David Holmes wrote:
>>   >>>  On 30/10/2012 12:29 AM, Erik Helin wrote:
>>   >>>>  Since 'Arguments::parse' is called before 'os::init_2' in the
>> function
>>   >>>>  'Threads::create_vm', the result was that 'UseNUMA' was set to
>> false and
>>   >>>>  'UseNUMAInterleaving' and 'MinHeapDeltaBytes' were incorrectly
>>   >>>>  modified.
>>   >>>
>>   >>>  Could we not simply adjust UseNUMAInterleaving and
>> MinHeapDeltaBytes at
>>   >>>  the same time as setting UseNUMA to false? Or move the setting of
>>   >>>  UseNUMA to false out of os::init_2 into an earlier function -
>> os::init
>>   >>>  perhaps?
>>   >>
>>   >>  We could adjust UseNUMAInterleaving and MinHeapDeltaBytes in
>> os::init_2
>>   >>  which is responsible for setting UseNUMA to false. However, I don't
>>   >>  think that os should adjust MinHeapDeltaBytes, which is a GC flag.
>>   >
>>   >  Ok, but in a similar style to what you have introduced, the
>> os::init_2()
>>   >  code could simply call Arguments::adjust_gc_args() (or some such
>> name).
>>   >
>>   >  That said I don't think the factoring of the changes into
>>   >  adjust_parallel_gc_flags_after_os() is warranted in the current
>>   >  proposal. It isn't being called from multiple places, nor from any
>>   >  Arguments client, so there's really no need to expand the
>> Arguments API
>>   >  this way.
>>
>> I agree, I've folded the update of the flags into the function
>> adjust_after_os.
>>
>> On 10/30/2012 6 PM, David Holmes wrote:
>>   >>  On 30/10/2012 12:29 AM, Erik Helin wrote:
>>   >>  I agree, I moved too much functionality into
>> Arguments::adjust_after_os.
>>   >>
>>   >>  I do not think that simply splitting Arguments::parse into two
>>   >>  functions, Arguments::parse and Arguments::adjust_before_os is a
>>   >>  disruptive change if Arguments::adjust_before_os ends up being
>> called
>>   >>  directly after Arguments::parse. In fact, this change is not
>> needed, but
>>   >>  I think it makes the code easier to understand.
>>   >
>>   >  I don't think it is completely clear what changes can be done in
>> parse
>>   >  versus what have to be deferred to adjust_before. So in my view this
>>   >  split does not directly aid understandability. I do understand
>> that as a
>>   >  newcomer to the codebase this changes aids your understanding of the
>> code.
>>   >
>>   >    From a pragmatic perspective such changes are highly subjective
>> and
>>   >  they add "noise" to the reviewing process.
>>
>> I agree with you that my change did too much. If (I'm not saying that it
>> should) the code should be refactored, then it should be done in another
>> change, not the same as the one for the bugfix.
>>
>> On 10/30/2012 6 PM, David Holmes wrote:
>>   >>>>  On 29/10/2012 12:29 AM, Erik Helin wrote:
>>   >>>>  This change also renames 'os::init' to
>> 'os::init_before_parsing_flags'
>>   >>>>  and 'os::init_2' to 'os::init_after_parsing_args'. This was done
>> to try
>>   >>>>  to make the relationship between the functions in 'Arguments'
>> and the
>>   >>>>  functions in 'os' as clear as possible.
>>   >>>
>>   >>>  On 10/30/2012 04:29 AM, David Holmes wrote:
>>   >>>  A little too verbose though I think. Maybe os::init_pre_args() and
>>   >>>  os::init_post_args() ? Though really the names are not that
>> significant
>>   >>>  given the comments both at the call site and declaration site
>> of the
>>   >>>  methods.
>>   >>
>>   >>  On 30/10/2012 12:29 AM, Erik Helin wrote:
>>   >>  My idea was that the code should "speak for itself" and
>> hopefully render
>>   >>  the comments unnecessary, since comments sometimes can become
>> outdated
>>   >>  but code can't.
>>   >
>>   >  I am not a fan of "code speaking for itself" if the code "talks too
>>   >  much" - that is why languages have comments. Speaking belongs in
>>   >  comments. Code should be clear without being overly verbose, yet
>>   >  succinct without being cryptic. And code can certainly become
>> outdated
>>   >  if that code is the name of a method. If the role of the method
>> expands
>>   >  then it is better to adapt a comment than to revise an API to
>> rename a
>>   >  method and update all callsites!
>>
>> I think this is a very interesting discussion, and think we should
>> continue
>> it "off-line", but I no longer think that it should be a part of the
>> discussion for this change with the new minimal webrev (see top of
>> email).
>>
>> On 10/30/2012 6 PM, David Holmes wrote:
>>   >  If you did not do this renaming your webrev would be exceedingly
>> short
>>   >  compared to the current webrev, and your changes would only touch
>> on GC
>>   >  related bits of code. The renaming affects the OS API and that is
>>   >  general runtime code. So I will defer to Karen as the owner of the
>>   >  runtime code.
>>
>> I agree and I've updated the webrev accordingly, what do you think of
>> the new one?
>>
>> Thanks for taking your time and reviewing this change,
>> Erik
>>
>> On 10/30/2012 6 PM, David Holmes wrote:
>>   >  Cheers,
>>   >  David
>>   >
>>   >
>>   >>
>>   >>  On 30/10/2012 12:29 AM, Erik Helin wrote:
>>   >>
>>   >>>>  On 29/10/2012 12:29 AM, Erik Helin wrote:
>>   >>>>  Testing:
>>   >>>>  JPRT
>>   >>>
>>   >>>  On 10/30/2012 04:29 AM, David Holmes wrote:
>>   >>>  JPRT will barely test anything related to argument processing.
>>   >>
>>   >>
>>   >>  Ok, thank you for this information. Can you recommend a way to
>> test this
>>   >>  change?
>>   >>
>>   >>  Thanks,
>>   >>  Erik
>>   >>
>>   >>>  David
>>   >>>  -----
>>   >>>
>>   >>>>  On 29/10/2012 12:29 AM, Erik Helin wrote:
>>   >>>>  Also, running 'java -XX:+UseNUMA -XX:+PrintFlagsFinal
>> -version' on a
>>   >>>>  system that does not support NUMA shows that
>> 'UseNUMAInterleaving' and
>>   >>>>  'MinHeapDeltaBytes' now have correct values.
>>   >>>>
>>   >>>>  Thanks,
>>   >>>>  Erik



More information about the hotspot-dev mailing list