-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8349192: jvmti/scenarios/contention/TC05/tc05t001 fails: ERROR: tc05t001.cpp, 281: (waitedThreadCpuTime - waitThreadCpuTime) < (EXPECTED_ACCURACY * 1000000) #28206
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
Conversation
…tc05t001.cpp, 281: (waitedThreadCpuTime - waitThreadCpuTime) < (EXPECTED_ACCURACY * 1000000)
|
👋 Welcome back sspitsyn! A progress list of the required criteria for merging this PR into |
|
@sspitsyn This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be: You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 23 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
Webrevs
|
| @@ -40,9 +40,9 @@ static const jlong EXPECTED_TIMEOUT = 1; | |||
| static const jlong EXPECTED_TIMEOUT_ACCURACY_NS = 300000; | |||
|
|
|||
| #if (defined(WIN32) || defined(_WIN32)) | |||
| static const jlong EXPECTED_ACCURACY = 16; // 16ms is longest clock update interval | |||
| static const jlong EXPECTED_ACCURACY = 32; // 16ms is longest clock update interval | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does the comment 16ms should be updated.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the comment. I've decided to restore the original EXPECTED_ACCURACY on Windows.
| static const jlong EXPECTED_ACCURACY = 16; // 16ms is longest clock update interval | ||
| #else | ||
| static const jlong EXPECTED_ACCURACY = 10; // high frequency clock updates expected | ||
| static const jlong EXPECTED_ACCURACY = 32; // high frequency clock updates expected |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comments are somewhat misleading now. We choose 16 on WIN32 because that is the smallest interval allowed. We expect better clock refinement on other platforms and therefore better accuracy. Thus 10ms was chosen. Now we have one test case that was just over 16ms. Is there a reason to believe that couldn't happen with WIN32 also. If not, then the comments should reflect that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel that all these checks are just a source of this test instability. :)
I'm not sure I fully understand why those are needed and what was the original design. It is always possible to have some delays in waiting time, so the original assumptions about expected accuracy are not fully correct as they are a little bit overly strong.
From this point of view, I do not see why the comments are confusing. The EXPECTED_ACCURACY values are just based on the high frequency clock updates interval but should not be equal to it.
Would you like me to change the comments to something like below ? :
high frequency clock updates expected
=>
expected accuracy is based on high frequency clock updates
I do not want to change the Windows part until any failure is observed but can update the comment for consistency.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is wrong. The "expected" accuracy is still 10ms or even 1ms, it is never 32ms. The test may need to wait longer but changing this value makes no sense.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the real issue is that EXPECTED_ACCURACY is incorrectly named. It is being used as a max amount of elapsed time, not as an "accuracy" value. The comment on the WIN32 part just adds to the confusion. The "max elapsed time" has to be 16 ms because that is the clock is only accurate to 16ms, so even 1ms of elapsed times will show up as 16ms. The comment "16ms is longest clock update interval" should read "shortest", not "longest".
EXPECTED_TIMEOUT_ACCURACY_NS also seems to be misnamed.
|
Thank you for review, Chris! |
|
Thank you for review, Leonid! |
|
/integrate |
|
Going to push as commit f971ee5.
Your commit was automatically rebased without conflicts. |
This is fix is to increase the
EXPECTED_ACCURACYvalue in the test:hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/contention/TC05/tc05t001.It is used check that the waiting time between
MonitorWaitandMonitorWaitedevent is not big. It seems that in some corner cases this time can be bigger than expected.Testing:
Progress
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/28206/head:pull/28206$ git checkout pull/28206Update a local copy of the PR:
$ git checkout pull/28206$ git pull https://git.openjdk.org/jdk.git pull/28206/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 28206View PR using the GUI difftool:
$ git pr show -t 28206Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/28206.diff
Using Webrev
Link to Webrev Comment