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

David Holmes david.holmes at oracle.com
Tue Nov 20 00:44:52 PST 2012


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