RFR: 8307766: Linux: Provide the option to override the timer slack [v7]

David Holmes dholmes at openjdk.org
Sun Jul 2 23:39:55 UTC 2023


On Fri, 30 Jun 2023 18:13:16 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> See the description in the RFE.
>> 
>> On `c6.8xlarge`, the sleep accuracy is improved the following way:
>> 
>> 
>> % CONF=linux-x86_64-server-release make test TEST=micro:ThreadSleep.millisNanos
>> 
>> Benchmark                   (sleep)  Mode  Cnt           Score      Error  Units
>> 
>> # Default
>> ThreadSleep.millisNanos           0  avgt   15         473.727 ±    3.542  ns/op
>> ThreadSleep.millisNanos           1  avgt   15         585.868 ±    2.010  ns/op
>> ThreadSleep.millisNanos          10  avgt   15         583.475 ±    1.426  ns/op
>> ThreadSleep.millisNanos         100  avgt   15       57833.073 ±  146.406  ns/op
>> ThreadSleep.millisNanos        1000  avgt   15       59324.901 ±  620.924  ns/op
>> ThreadSleep.millisNanos       10000  avgt   15       68071.990 ±  537.880  ns/op
>> ThreadSleep.millisNanos      100000  avgt   15      158069.170 ±  329.991  ns/op
>> ThreadSleep.millisNanos     1000000  avgt   15     1059044.770 ±  370.982  ns/op
>> ThreadSleep.millisNanos    10000000  avgt   15    10060017.354 ±  399.309  ns/op
>> ThreadSleep.millisNanos   100000000  avgt   15   100062969.073 ± 2399.053  ns/op
>> ThreadSleep.millisNanos  1000000000  avgt   15  1000068474.467 ± 2669.980  ns/op
>> 
>> # -XX:TimerSlack=1
>> ThreadSleep.millisNanos           0  avgt   15         469.632 ±    1.500  ns/op
>> ThreadSleep.millisNanos           1  avgt   15         587.562 ±    8.966  ns/op
>> ThreadSleep.millisNanos          10  avgt   15         584.241 ±    1.997  ns/op
>> ThreadSleep.millisNanos         100  avgt   15        7907.160 ±   12.476  ns/op
>> ThreadSleep.millisNanos        1000  avgt   15        7913.984 ±   56.996  ns/op
>> ThreadSleep.millisNanos       10000  avgt   15       17929.107 ±  432.083  ns/op
>> ThreadSleep.millisNanos      100000  avgt   15      108154.851 ±  403.717  ns/op
>> ThreadSleep.millisNanos     1000000  avgt   15     1008854.095 ±  418.444  ns/op
>> ThreadSleep.millisNanos    10000000  avgt   15    10009902.829 ±  279.617  ns/op
>> ThreadSleep.millisNanos   100000000  avgt   15   100014000.020 ± 2143.820  ns/op
>> ThreadSleep.millisNanos  1000000000  avgt   15  1000020734.333 ± 4846.754  ns/op
>
> Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix exclusion tag

test/hotspot/jtreg/runtime/os/TestTimerSlack.java line 56:

> 54:             if (defaultSlack == 0) {
> 55:                 output.reportDiagnosticSummary();
> 56:                 throw new IllegalStateException("Default slack value (" + defaultSlack + ") is unexpected");

This pattern is repeated quite a few times. Pity we can't make use of something in OutputAnalyzer directly. A small helper method `fail(String msg)` would avoid the repetition.

test/hotspot/jtreg/runtime/os/TestTimerSlack.java line 79:

> 77:         }
> 78: 
> 79:         // Check the timer slack value is accepted by all threads

I don't see anything thread related in the logic that follows. I expected to see the test program create threads and read back their time-slack values.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/13889#discussion_r1249893969
PR Review Comment: https://git.openjdk.org/jdk/pull/13889#discussion_r1249894771


More information about the hotspot-runtime-dev mailing list