<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div class="markdown-here-wrapper" data-md-url="" style="" markdown-here-wrapper-content-modified="true">
<p style="margin: 0px 0px 1.2em !important;">On 07/05/2024 11:20,
Maurizio Cimadamore wrote:</p>
<p style="margin: 0px 0px 1.2em !important;"></p>
<div class="markdown-here-exclude">
<p></p>
<blockquote type="cite" cite="mid:f97afff0-61a5-4c7f-8cf6-7750a2b1fb38@oracle.com">We
will try to improve this area over time, but please note that
the way you are using arenas is not very idiomatic.
</blockquote>
<p></p>
</div>
<p style="margin: 0px 0px 1.2em !important;"></p>
<p style="margin: 0px 0px 1.2em !important;">To be clear, the big
cost you are seeing with shared arena is not the creation per
se, but the closing, which is an expensive (but deterministic)
operation.</p>
<p style="margin: 0px 0px 1.2em !important;">Btw, as I said, we do
have a benchmark similar to the one you provided:</p>
<p style="margin: 0px 0px 1.2em !important;"><a class="moz-txt-link-freetext" href="https://github.com/openjdk/jdk/blob/master/test/micro/org/openjdk/bench/java/lang/foreign/MemorySessionClose.java">https://github.com/openjdk/jdk/blob/master/test/micro/org/openjdk/bench/java/lang/foreign/MemorySessionClose.java</a><br>
</p>
<p style="margin: 0px 0px 1.2em !important;">Here’s the results on
my machine:</p>
<pre style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block !important;">Benchmark (mode) Mode Cnt Score Error Units
MemorySessionClose.confined_close NONE avgt 30 0.049 ± 0.001 us/op
MemorySessionClose.confined_close MEMORY avgt 30 0.052 ± 0.003 us/op
MemorySessionClose.confined_close THREADS avgt 30 0.055 ± 0.001 us/op
MemorySessionClose.implicit_close NONE avgt 30 1.221 ± 0.689 us/op
MemorySessionClose.implicit_close MEMORY avgt 30 139.873 ± 295.502 us/op
MemorySessionClose.implicit_close THREADS avgt 30 1.224 ± 0.385 us/op
MemorySessionClose.implicit_close_systemgc NONE avgt 30 32.905 ± 4.904 us/op
MemorySessionClose.implicit_close_systemgc MEMORY avgt 30 1132.976 ± 62.264 us/op
MemorySessionClose.implicit_close_systemgc THREADS avgt 30 30.159 ± 4.360 us/op
MemorySessionClose.shared_close NONE avgt 30 6.823 ± 0.215 us/op
MemorySessionClose.shared_close MEMORY avgt 30 7.113 ± 0.306 us/op
MemorySessionClose.shared_close THREADS avgt 30 10.883 ± 0.503 us/op
</code></pre>
<p style="margin: 0px 0px 1.2em !important;">The benchmark has two
stress modes:</p>
<ul style="margin: 1.2em 0px;padding-left: 2em;">
<li style="margin: 0.5em 0px;">MEMORY - which creates a lot of
small arrays to put more strain on GC</li>
<li style="margin: 0.5em 0px;">THREADS - which creates a lot of
additional dummy threads, to check that the shared arena
handshake isn’t affected too much</li>
</ul>
<p style="margin: 0px 0px 1.2em !important;">As you can see,
confined here is the fastest. Implicit seems to be initially
better than shared, but there are some very bad spikes. Esp.
when the MEMORY is enabled.</p>
<p style="margin: 0px 0px 1.2em !important;">Shared arena seems
slower, but it is also very predictable. Note that these numbers
do not fully reveal the full extent of how bad implicit actually
is. On my system, if I run <code style="font-size: 0.85em; font-family: Consolas, Inconsolata, Courier, monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;">top</code>
on a different window, I can see resident memory peaking to some
20G when using the implicit scheme, which doesn’t happen at all
when using either confined/shared (this is due to the fact that,
whne using implicit, there is always a non-deterministic delay
between the time when a segment becomes unreacable and the time
the memort is truly deallocated).</p>
<p style="margin: 0px 0px 1.2em !important;">All this to say: it
can be very hard to measure performance of memory allocation in
a complete fashion. It’s like an elephant with many sides, and
when looking at synthetic benchmarks it can be sometimes easy to
forget about some of them.</p>
<p style="margin: 0px 0px 1.2em !important;">Cheers<br>
Maurizio</p>
<div title="MDH:PHA+PGJyPjwvcD48ZGl2IGNsYXNzPSJtb3otY2l0ZS1wcmVmaXgiPk9uIDA3LzA1LzIwMjQgMTE6
MjAsIE1hdXJpemlvIENpbWFkYW1vcmUgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIHR5cGU9
ImNpdGUiIGNpdGU9Im1pZDpmOTdhZmZmMC02MWE1LTRjN2YtOGNmNi03NzUwYTJiMWZiMzhAb3Jh
Y2xlLmNvbSI+V2Ugd2lsbCB0cnkgdG8gaW1wcm92ZSB0aGlzIGFyZWEgb3ZlciB0aW1lLCBidXQg
cGxlYXNlIG5vdGUgdGhhdCB0aGUgd2F5IAp5b3UgYXJlIHVzaW5nIGFyZW5hcyBpcyBub3QgdmVy
eSBpZGlvbWF0aWMuCjwvYmxvY2txdW90ZT48cD5UbyBiZSBjbGVhciwgdGhlIGJpZyBjb3N0IHlv
dSBhcmUgc2VlaW5nIHdpdGggc2hhcmVkIGFyZW5hIGlzIG5vdCB0aGUgY3JlYXRpb24gcGVyIHNl
LCBidXQgdGhlIGNsb3NpbmcsIHdoaWNoIGlzIGFuIGV4cGVuc2l2ZSAoYnV0IGRldGVybWluaXN0
aWMpIG9wZXJhdGlvbi48L3A+PHA+QnR3LCBhcyBJIHNhaWQsIHdlIGRvIGhhdmUgYSBiZW5jaG1h
cmsgc2ltaWxhciB0byB0aGUgb25lIHlvdSBwcm92aWRlZDo8L3A+PHA+PGJyPjwvcD48cD5IZXJl
J3MgdGhlIHJlc3VsdHMgb24gbXkgbWFjaGluZTo8L3A+PHA+YGBgPGJyPkJlbmNobWFyayZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAobW9kZSkmbmJzcDsgTW9kZSZuYnNw
OyBDbnQmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgU2NvcmUmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsgRXJyb3ImbmJzcDsgVW5pdHM8YnI+TWVtb3J5U2Vzc2lvbkNsb3NlLmNvbmZpbmVkX2Nsb3Nl
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IE5PTkUmbmJzcDsgYXZndCZuYnNwOyZuYnNwOyAzMCZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyAwLjA0OSDCsSZuYnNwOyZuYnNwOyAwLjAwMSZuYnNwOyB1cy9v
cDxicj5NZW1vcnlTZXNzaW9uQ2xvc2UuY29uZmluZWRfY2xvc2UmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgTUVNT1JZJm5i
c3A7IGF2Z3QmbmJzcDsmbmJzcDsgMzAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMC4wNTIgwrEm
bmJzcDsmbmJzcDsgMC4wMDMmbmJzcDsgdXMvb3A8YnI+TWVtb3J5U2Vzc2lvbkNsb3NlLmNvbmZp
bmVkX2Nsb3NlJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7IFRIUkVBRFMmbmJzcDsgYXZndCZuYnNwOyZuYnNwOyAzMCZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyAwLjA1NSDCsSZuYnNwOyZuYnNwOyAwLjAwMSZuYnNwOyB1cy9vcDxicj5N
ZW1vcnlTZXNzaW9uQ2xvc2UuaW1wbGljaXRfY2xvc2UmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgTk9O
RSZuYnNwOyBhdmd0Jm5ic3A7Jm5ic3A7IDMwJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEuMjIx
IMKxJm5ic3A7Jm5ic3A7IDAuNjg5Jm5ic3A7IHVzL29wPGJyPk1lbW9yeVNlc3Npb25DbG9zZS5p
bXBsaWNpdF9jbG9zZSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBNRU1PUlkmbmJzcDsgYXZndCZuYnNwOyZuYnNwOyAzMCZu
YnNwOyZuYnNwOyAxMzkuODczIMKxIDI5NS41MDImbmJzcDsgdXMvb3A8YnI+TWVtb3J5U2Vzc2lv
bkNsb3NlLmltcGxpY2l0X2Nsb3NlJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFRIUkVBRFMmbmJzcDsgYXZndCZuYnNwOyZuYnNwOyAz
MCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAxLjIyNCDCsSZuYnNwOyZuYnNwOyAwLjM4NSZuYnNw
OyB1cy9vcDxicj5NZW1vcnlTZXNzaW9uQ2xvc2UuaW1wbGljaXRfY2xvc2Vfc3lzdGVtZ2MmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsgTk9ORSZuYnNwOyBhdmd0Jm5ic3A7Jm5ic3A7IDMwJm5ic3A7
Jm5ic3A7Jm5ic3A7IDMyLjkwNSDCsSZuYnNwOyZuYnNwOyA0LjkwNCZuYnNwOyB1cy9vcDxicj5N
ZW1vcnlTZXNzaW9uQ2xvc2UuaW1wbGljaXRfY2xvc2Vfc3lzdGVtZ2MmbmJzcDsmbmJzcDsgTUVN
T1JZJm5ic3A7IGF2Z3QmbmJzcDsmbmJzcDsgMzAmbmJzcDsgMTEzMi45NzYgwrEmbmJzcDsgNjIu
MjY0Jm5ic3A7IHVzL29wPGJyPk1lbW9yeVNlc3Npb25DbG9zZS5pbXBsaWNpdF9jbG9zZV9zeXN0
ZW1nYyZuYnNwOyBUSFJFQURTJm5ic3A7IGF2Z3QmbmJzcDsmbmJzcDsgMzAmbmJzcDsmbmJzcDsm
bmJzcDsgMzAuMTU5IMKxJm5ic3A7Jm5ic3A7IDQuMzYwJm5ic3A7IHVzL29wPGJyPk1lbW9yeVNl
c3Npb25DbG9zZS5zaGFyZWRfY2xvc2UmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg
Tk9ORSZuYnNwOyBhdmd0Jm5ic3A7Jm5ic3A7IDMwJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDYu
ODIzIMKxJm5ic3A7Jm5ic3A7IDAuMjE1Jm5ic3A7IHVzL29wPGJyPk1lbW9yeVNlc3Npb25DbG9z
ZS5zaGFyZWRfY2xvc2UmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgTUVNT1JZJm5ic3A7IGF2Z3QmbmJz
cDsmbmJzcDsgMzAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgNy4xMTMgwrEmbmJzcDsmbmJzcDsg
MC4zMDYmbmJzcDsgdXMvb3A8YnI+TWVtb3J5U2Vzc2lvbkNsb3NlLnNoYXJlZF9jbG9zZSZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyBUSFJFQURTJm5ic3A7IGF2Z3QmbmJzcDsmbmJzcDsgMzAmbmJzcDsmbmJzcDsm
bmJzcDsgMTAuODgzIMKxJm5ic3A7Jm5ic3A7IDAuNTAzJm5ic3A7IHVzL29wPGJyPmBgYDwvcD48
cD5UaGUgYmVuY2htYXJrIGhhcyB0d28gc3RyZXNzIG1vZGVzOjxicj48YnI+KiBNRU1PUlkgLSB3
aGljaCBjcmVhdGVzIGEgbG90IG9mIHNtYWxsIGFycmF5cyB0byBwdXQgbW9yZSBzdHJhaW4gb24g
R0M8YnI+KiBUSFJFQURTIC0gd2hpY2ggY3JlYXRlcyBhIGxvdCBvZiBhZGRpdGlvbmFsIGR1bW15
IHRocmVhZHMsIHRvIGNoZWNrIHRoYXQgdGhlIHNoYXJlZCBhcmVuYSBoYW5kc2hha2UgaXNuJ3Qg
YWZmZWN0ZWQgdG9vIG11Y2g8L3A+PHA+QXMgeW91IGNhbiBzZWUsIGNvbmZpbmVkIGhlcmUgaXMg
dGhlIGZhc3Rlc3QuIEltcGxpY2l0IHNlZW1zIHRvIGJlIGluaXRpYWxseSBiZXR0ZXIgdGhhbiBz
aGFyZWQsIGJ1dCB0aGVyZSBhcmUgc29tZSB2ZXJ5IGJhZCBzcGlrZXMuIEVzcC4gd2hlbiB0aGUg
TUVNT1JZIGlzIGVuYWJsZWQuPC9wPjxwPlNoYXJlZCBhcmVuYSBzZWVtcyBzbG93ZXIsIGJ1dCBp
dCBpcyBhbHNvIHZlcnkgcHJlZGljdGFibGUuIE5vdGUgdGhhdCB0aGVzZSBudW1iZXJzIGRvIG5v
dCBmdWxseSByZXZlYWwgdGhlIGZ1bGwgZXh0ZW50IG9mIGhvdyBiYWQgaW1wbGljaXQgYWN0dWFs
bHkgaXMuIE9uIG15IHN5c3RlbSwgaWYgSSBydW4gYHRvcGAgb24gYSBkaWZmZXJlbnQgd2luZG93
LCBJIGNhbiBzZWUgcmVzaWRlbnQgbWVtb3J5IHBlYWtpbmcgdG8gc29tZSAyMEcgd2hlbiB1c2lu
ZyB0aGUgaW1wbGljaXQgc2NoZW1lLCB3aGljaCBkb2Vzbid0IGhhcHBlbiBhdCBhbGwgd2hlbiB1
c2luZyBlaXRoZXIgY29uZmluZWQvc2hhcmVkICh0aGlzIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGF0
LCB3aG5lIHVzaW5nIGltcGxpY2l0LCB0aGVyZSBpcyBhbHdheXMgYSBub24tZGV0ZXJtaW5pc3Rp
YyBkZWxheSBiZXR3ZWVuIHRoZSB0aW1lIHdoZW4gYSBzZWdtZW50IGJlY29tZXMgdW5yZWFjYWJs
ZSBhbmQgdGhlIHRpbWUgdGhlIG1lbW9ydCBpcyB0cnVseSBkZWFsbG9jYXRlZCkuPC9wPjxwPkFs
bCB0aGlzIHRvIHNheTogaXQgY2FuIGJlIHZlcnkgaGFyZCB0byBtZWFzdXJlIHBlcmZvcm1hbmNl
IG9mIG1lbW9yeSBhbGxvY2F0aW9uIGluIGEgY29tcGxldGUgZmFzaGlvbi4gSXQncyBsaWtlIGFu
IGVsZXBoYW50IHdpdGggbWFueSBzaWRlcywgYW5kIHdoZW4gbG9va2luZyBhdCBzeW50aGV0aWMg
YmVuY2htYXJrcyBpdCBjYW4gYmUgc29tZXRpbWVzIGVhc3kgdG8gZm9yZ2V0IGFib3V0IHNvbWUg
b2YgdGhlbS48L3A+PHA+Q2hlZXJzPGJyPk1hdXJpemlvPGJyPjwvcD48cD48YnI+PC9wPg==" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;"></div>
</div>
</body>
</html>