Official support for Unsafe
Quân Anh Mai
anhmdq at gmail.com
Mon Jan 15 13:52:18 UTC 2024
Hi,
I have tried using a universe segment instead of Unsafe, and store the
custom hashmap buffer in off-heap instead of using a byte array. The output
of perf stat on the program
Performance counter stats for 'sh calculate_average_merykittyunsafe.sh':
13573.70 msec task-clock:u # 10.942 CPUs utilized
0 context-switches:u # 0.000 /sec
0 cpu-migrations:u # 0.000 /sec
238460 page-faults:u # 17.568 K/sec
61995179870 cycles:u # 4.567 GHz
261830581 stalled-cycles-frontend:u # 0.42% frontend
cycles idle
93823680 stalled-cycles-backend:u # 0.15% backend cycles
idle
137976098809 instructions:u # 2.23 insn per cycle
# 0.00 stalled cycles
per insn
18373313803 branches:u # 1.354 G/sec
43579782 branch-misses:u # 0.24% of all branches
1.240504612 seconds time elapsed
12.841563000 seconds user
0.652428000 seconds sys
For comparison, this is the unsafe version:
Performance counter stats for 'sh calculate_average_merykittyunsafe.sh':
13327.46 msec task-clock:u # 11.202 CPUs utilized
0 context-switches:u # 0.000 /sec
0 cpu-migrations:u # 0.000 /sec
269896 page-faults:u # 20.251 K/sec
61258348752 cycles:u # 4.596 GHz
639839262 stalled-cycles-frontend:u # 1.04% frontend
cycles idle
108018676 stalled-cycles-backend:u # 0.18% backend cycles
idle
113476168983 instructions:u # 1.85 insn per cycle
# 0.01 stalled cycles
per insn
11442665370 branches:u # 858.578 M/sec
44590172 branch-misses:u # 0.39% of all branches
1.189768677 seconds time elapsed
12.628512000 seconds user
0.620083000 seconds sys
This program running on my machine expresses dependency bound so the
difference in execution time is not as significant as on the test machine
but it can be seen that removing Unsafe results in over 21% increase in
instruction count.
Regards,
Quan Anh
On Sat, 13 Jan 2024 at 01:29, Maurizio Cimadamore <
maurizio.cimadamore at oracle.com> wrote:
>
> On 12/01/2024 17:26, Quân Anh Mai wrote:
> > FYI, in my submission to 1brc, using Unsafe decreases the execution
> > time from 3.25s to 2.57s on the test machine.
>
> Just curious - what is the difference compared with the everything
> segment trick?
>
> (While I know it can't do on-heap access, perhaps you can tweak the code
> to be all off-heap?)
>
> Maurizio
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/amber-dev/attachments/20240115/420a6c0b/attachment.htm>
More information about the amber-dev
mailing list