On s390x, use the stckf instruction to get the cycles timer value. #499
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The test ut0rnd.random_from_interval_fast from test suite merge_innodb_tests-t is failing on s390x on 8.0.34 because the stck (Store Clock) instruction in the my_timer_cycles() function is not very good when used as a source of randomness in random_64_fast().
The stckf (Store Clock Fast) instruction works much better as a source of randomness and is less expensive to call as well. Compared to stck, stckf may store the same clock value twice but according to the Additional Comments comment in mysys/my_rdtsc.cc that should be fine. All 'make test' tests pass with this change.
The stckf instruction was added to the Z Architecture in z9 and all of the s390x versions of distros MySQL supports are compiled for z9 or newer so we don't need to check if it is available.