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