RFR: 8307766: Linux: Provide the option to override the timer slack
David Holmes
dholmes at openjdk.org
Mon May 22 01:25:49 UTC 2023
On Tue, 9 May 2023 15:36:11 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
src/hotspot/os/linux/os_linux.cpp line 4650:
> 4648: }
> 4649:
> 4650: // Override the timer slack value if needed.
This needs more explanation. This is a per-thread setting, so by doing it here we change the main JVM thread so that subsequent threads created by this thread will also inherit the new value. Any native threads attaching to the JVM will have their own values.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13889#discussion_r1199868258
More information about the hotspot-runtime-dev
mailing list