Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8252114: Windows-AArch64: Enable and test ZGC and ShenandoahGC #97

Closed
wants to merge 2 commits into from

Conversation

@mo-beck
Copy link
Contributor

@mo-beck mo-beck commented Sep 9, 2020

ZGC and ShenandoahGC are two low latency GCs in OpenJDK HotSpot. We will enable and run microbenchmarks and scaling tests for both.
After enabling, I ran JTRegs, a few micros, and SPECJBB2015 (heap and multi-JVM) scaling tests for both the GCs.


Progress

  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue
  • Change must be properly reviewed

Issue

  • JDK-8252114: Windows-AArch64: Enable and test ZGC and ShenandoahGC

Reviewers

Download

$ git fetch https://git.openjdk.java.net/jdk pull/97/head:pull/97
$ git checkout pull/97

ZGC and ShenandoahGC are two low latency GCs in OpenJDK HotSpot. We will enable and run microbenchmarks and scaling tests for both.
@bridgekeeper bridgekeeper bot added the oca label Sep 9, 2020
@bridgekeeper
Copy link

@bridgekeeper bridgekeeper bot commented Sep 9, 2020

Hi @mo-beck, welcome to this OpenJDK project and thanks for contributing!

We do not recognize you as Contributor and need to ensure you have signed the Oracle Contributor Agreement (OCA). If you have not signed the OCA, please follow the instructions. Please fill in your GitHub username in the "Username" field of the application. Once you have signed the OCA, please let us know by writing /signed in a comment in this pull request.

If you already are an OpenJDK Author, Committer or Reviewer, please click here to open a new issue so that we can record that fact. Please use "Add GitHub user mo-beck" as summary for the issue.

If you are contributing this work on behalf of your employer and your employer has signed the OCA, please let us know by writing /covered in a comment in this pull request.

@openjdk
Copy link

@openjdk openjdk bot commented Sep 9, 2020

@mo-beck The following label will be automatically applied to this pull request: build.

When this pull request is ready to be reviewed, an RFR email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label (add|remove) "label" command.

@openjdk openjdk bot added the build label Sep 9, 2020
@mo-beck
Copy link
Contributor Author

@mo-beck mo-beck commented Sep 9, 2020

/covered

@bridgekeeper
Copy link

@bridgekeeper bridgekeeper bot commented Sep 9, 2020

Thank you! Please allow for a few business days to verify that your employer has signed the OCA. Also, please note that pull requests that are pending an OCA check will not usually be evaluated, so your patience is appreciated!

Copy link
Contributor

@shipilev shipilev left a comment

I see the block that enables ZGC, where is the block that enables Shenandoah?

Copy link
Contributor

@shipilev shipilev left a comment

Ah, Shenandoah does not filter for OS, so it is enabled for AArch64 already, right?

make/autoconf/jvm-features.m4 Outdated Show resolved Hide resolved
@mo-beck
Copy link
Contributor Author

@mo-beck mo-beck commented Sep 10, 2020

I see the block that enables ZGC, where is the block that enables Shenandoah?

I had a block for Shenandoah, but then I saw that someone had already modified/combined the Shenandoah to part to be enabled for all combos of aarch64:
"# Check if the feature 'shenandoahgc' is available on this platform.

AC_DEFUN_ONCE([JVM_FEATURES_CHECK_SHENANDOAHGC],
[
JVM_FEATURES_CHECK_AVAILABILITY(shenandoahgc, [
AC_MSG_CHECKING([if platform is supported by Shenandoah])
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86" ||
test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no, $OPENJDK_TARGET_CPU])
AVAILABLE=false
fi
])
])"

@mo-beck
Copy link
Contributor Author

@mo-beck mo-beck commented Sep 10, 2020

Ah, Shenandoah does not filter for OS, so it is enabled for AArch64 already, right?

+1

@mlbridge
Copy link

@mlbridge mlbridge bot commented Sep 10, 2020

Webrevs

@mlbridge
Copy link

@mlbridge mlbridge bot commented Sep 10, 2020

Mailing list message from David Holmes on build-dev:

Hi Monica,

On 10/09/2020 5:26 pm, Monica Beckwith wrote:

ZGC and ShenandoahGC are two low latency GCs in OpenJDK HotSpot. We will enable and run microbenchmarks and scaling
tests for both. After enabling, I ran JTRegs, a few micros, and SPECJBB2015 (heap and multi-JVM) scaling tests for both
the GCs.

I'm not seeing any need to push this as a separate fix from the actual
Windows-Aarch64 port. You're enabling something that can't be tested in
mainline.

Cheers,
David

Incorporating Aleksey's comments to incorporate 'x'
@stooart-mon
Copy link
Contributor

@stooart-mon stooart-mon commented Sep 10, 2020

This looks good to me with Alexsey's changes applied.

@mo-beck
Copy link
Contributor Author

@mo-beck mo-beck commented Sep 10, 2020

Ref: #97 (comment)
Hi David,
Thanks. I wanted to start a conversation here as it does modify common code (the aarch64-linux combo check) and also wanted to highlight the difference between Shenandoah and ZGC checks. IMHO, Shenandoah checks are cleaner and if people agree, I would like to apply those to ZGC as well. (When that happens, it will be outside of the windows-aarch64 port and I will change the info in JBS accordingly)
Please let me know what you think.

@mo-beck mo-beck requested a review from shipilev Sep 10, 2020
@mlbridge
Copy link

@mlbridge mlbridge bot commented Sep 11, 2020

Mailing list message from David Holmes on build-dev:

Hi Monica,

On 11/09/2020 3:11 am, Monica Beckwith wrote:

Ref: https://github.com//pull/97#issuecomment-690077743
Hi David,
Thanks. I wanted to start a conversation here as it does modify common code (the aarch64-linux combo check) and also
wanted to highlight the difference between Shenandoah and ZGC checks. IMHO, Shenandoah checks are cleaner and if people
agree, I would like to apply those to ZGC as well. (When that happens, it *will* be outside of the windows-aarch64 port
and I will change the info in JBS accordingly) Please let me know what you think.

I think you are going about this in a bit of a confusing way :) If you
wanted to propose the ZGC feature check should be OS agnostic then you
should have just proposed that rather than proposing a Windows-Aarch64
change that clearly belongs with the port work. You'll need to discuss
the ZGC check with the ZGC folk on hotspot-gc-dev (now cc'd) but I'm
pretty sure the OS check is deliberate, so that only those platforms
known to actually work will be enabled.

Thanks,
David

@mo-beck
Copy link
Contributor Author

@mo-beck mo-beck commented Sep 11, 2020

/label add gc

@openjdk
Copy link

@openjdk openjdk bot commented Sep 11, 2020

@mo-beck The label gc is not a valid label. These labels are valid:

  • serviceability
  • hotspot
  • sound
  • hotspot-compiler
  • kulla
  • i18n
  • shenandoah
  • jdk
  • javadoc
  • 2d
  • security
  • swing
  • hotspot-runtime
  • jmx
  • build
  • nio
  • beans
  • core-libs
  • compiler
  • net
  • hotspot-gc
  • hotspot-jfr
  • awt

@mo-beck
Copy link
Contributor Author

@mo-beck mo-beck commented Sep 11, 2020

/label add hotspot-gc

@mo-beck
Copy link
Contributor Author

@mo-beck mo-beck commented Sep 11, 2020

Ref: #97 (comment)
I empathize with your comment, David. Here's a bit of a background for all -
When I started the port, both ZGC, and Shenandoah had the "xlinux-aarch64" check whereas the "xx86" check was more elaborate for ZGC.
At that time I chose the ZGC route for both the GCs and added separate checks for each OS. This is what the windows-aarch64 port has as well. (Since then Shenandoah has moved on to just checking the arch.)
I already had a JBS entry, and the (partial) patch, I decided to use that for my first GitHub PR. and was hoping to start the conversation of the simpler route that Shenandoah took in the comments mentioning that as my preference and modify the JBS entry (and the patch) accordingly.

Now coming back to this - @stooart-mon, do you think it is OK to just check for aarch64 (similar to Shenandoah)? @stefank what do you think of simplifying the x86 checks (similar to Shenandoah)? Thanks all.

@openjdk openjdk bot added the hotspot-gc label Sep 11, 2020
@openjdk
Copy link

@openjdk openjdk bot commented Sep 11, 2020

@mo-beck
The hotspot-gc label was successfully added.

Copy link
Contributor

@shipilev shipilev left a comment

The check looks fine now.

@openjdk
Copy link

@openjdk openjdk bot commented Sep 11, 2020

@mo-beck This change now passes all automated pre-integration checks. In addition to the automated checks, the change must also fulfill all project specific requirements

After integration, the commit message will be:

8252114: Windows-AArch64: Enable and test ZGC and ShenandoahGC

Reviewed-by: shade, stefank, rkennke
  • If you would like to add a summary, use the /summary command.
  • To credit additional contributors, use the /contributor command.
  • To add additional solved issues, use the /issue command.

Since the source branch of this PR was last updated there have been 131 commits pushed to the master branch:

As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid automatic rebasing, please merge master into your branch, and then specify the current head hash when integrating, like this: /integrate f7b1ce457a3ebffb1e677ff9168c2f6cf15c631e.

As you do not have Committer status in this projectan existing Committer must agree to sponsor your change. Possible candidates are the reviewers of this PR (@shipilev, @stefank, @rkennke) but any other Committer may sponsor as well.

➡️ To flag this PR as ready for integration with the above commit message, type /integrate in a new comment. (Afterwards, your sponsor types /sponsor in a new comment to perform the integration).

@openjdk openjdk bot added the ready label Sep 11, 2020
@shipilev
Copy link
Contributor

@shipilev shipilev commented Sep 11, 2020

Ref: #97 (comment)
Now coming back to this - @stooart-mon, do you think it is OK to just check for aarch64 (similar to Shenandoah)? @stefank what do you think of simplifying the x86 checks (similar to Shenandoah)? Thanks all.

I believe keeping OS-specific checks for ZGC is better, as it reflects the reality of needing the OS-specific code there. We don't want to try and build on OS we know ZGC does not support (yet). Shenandoah does not have OS-specific code, only the arch-specific one, and so can live with OS checks only.

@mlbridge
Copy link

@mlbridge mlbridge bot commented Sep 11, 2020

Mailing list message from Stuart Monteith on build-dev:

On 11/09/2020 04:48, Monica Beckwith wrote:

Hi Monica,
I guess the choice is either to enable aarch64, and have the Mac port disable ZGC if necessary, or do what you have
done here and just enable by by architecture and supported platform. If Anton is happy with the simple check for
aarch64, then I'm happy.

BR,
Stuart

Copy link
Contributor

@rkennke rkennke left a comment

Looks good to me. Thanks!

@mo-beck
Copy link
Contributor Author

@mo-beck mo-beck commented Sep 22, 2020

/integrate

@openjdk openjdk bot added the sponsor label Sep 22, 2020
@openjdk
Copy link

@openjdk openjdk bot commented Sep 22, 2020

@mo-beck
Your change (at version 49845fd) is now ready to be sponsored by a Committer.

@stefank
Copy link
Member

@stefank stefank commented Sep 22, 2020

/sponsor

@openjdk openjdk bot closed this Sep 22, 2020
@openjdk
Copy link

@openjdk openjdk bot commented Sep 22, 2020

@stefank @mo-beck Since your change was applied there have been 131 commits pushed to the master branch:

Your commit was automatically rebased without conflicts.

Pushed as commit 96f722c.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

@openjdk openjdk bot removed the rfr label Sep 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
5 participants