Skip to content

Conversation

cagatay-y
Copy link
Contributor

Make the buffer size used when MRG_RXBUF is negotiated configurable and configure it to a small value when HERMIT_CAREFUL is enabled to test if the feature is working.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark Results

Benchmark Current: 9dd20bc Previous: c6484a7 Performance Ratio
startup_benchmark Build Time 118.10 s 109.12 s 1.08
startup_benchmark File Size 0.90 MB 0.90 MB 1.00
Startup Time - 1 core 0.94 s (±0.03 s) 0.88 s (±0.02 s) 1.08
Startup Time - 2 cores 0.97 s (±0.03 s) 0.87 s (±0.02 s) 1.11
Startup Time - 4 cores 0.97 s (±0.03 s) 0.87 s (±0.03 s) 1.11
multithreaded_benchmark Build Time 119.51 s 104.93 s 1.14
multithreaded_benchmark File Size 1.01 MB 1.01 MB 1.00
Multithreaded Pi Efficiency - 2 Threads 3.36 % (±16.12 %) 3.66 % (±17.59 %) 0.92
Multithreaded Pi Efficiency - 4 Threads 1.63 % (±7.84 %) 1.91 % (±9.18 %) 0.85
Multithreaded Pi Efficiency - 8 Threads 0.91 % (±4.36 %) 1.02 % (±4.90 %) 0.89
micro_benchmarks Build Time 118.56 s 102.53 s 1.16
micro_benchmarks File Size 1.01 MB 1.01 MB 1.00
Scheduling time - 1 thread 2.97 ticks (±14.26 ticks) 2.54 ticks (±12.22 ticks) 1.17
Scheduling time - 2 threads 1.51 ticks (±7.24 ticks) 1.29 ticks (±6.17 ticks) 1.17
Micro - Time for syscall (getpid) 0.15 ticks (±0.72 ticks) 0.11 ticks (±0.53 ticks) 1.37
Memcpy speed - (built_in) block size 4096 1116.07 MByte/s (±5357.14 MByte/s) 1662.23 MByte/s (±7978.72 MByte/s) 0.67
Memcpy speed - (built_in) block size 1048576 747.40 MByte/s (±3587.51 MByte/s) 802.31 MByte/s (±3851.09 MByte/s) 0.93
Memcpy speed - (built_in) block size 16777216 214.38 MByte/s (±1029.04 MByte/s) 231.25 MByte/s (±1110.01 MByte/s) 0.93
Memset speed - (built_in) block size 4096 1224.49 MByte/s (±5877.55 MByte/s) 1875.00 MByte/s (±9000.00 MByte/s) 0.65
Memset speed - (built_in) block size 1048576 994.78 MByte/s (±4774.93 MByte/s) 1009.80 MByte/s (±4847.02 MByte/s) 0.99
Memset speed - (built_in) block size 16777216 954.66 MByte/s (±4582.36 MByte/s) 995.24 MByte/s (±4777.13 MByte/s) 0.96
Memcpy speed - (rust) block size 4096 1188.12 MByte/s (±5702.97 MByte/s) 1463.41 MByte/s (±7024.39 MByte/s) 0.81
Memcpy speed - (rust) block size 1048576 744.81 MByte/s (±3575.09 MByte/s) 795.04 MByte/s (±3816.19 MByte/s) 0.94
Memcpy speed - (rust) block size 16777216 212.53 MByte/s (±1020.16 MByte/s) 236.47 MByte/s (±1135.06 MByte/s) 0.90
Memset speed - (rust) block size 4096 1558.44 MByte/s (±7480.52 MByte/s) 1846.15 MByte/s (±8861.54 MByte/s) 0.84
Memset speed - (rust) block size 1048576 974.90 MByte/s (±4679.50 MByte/s) 1016.88 MByte/s (±4881.03 MByte/s) 0.96
Memset speed - (rust) block size 16777216 949.80 MByte/s (±4559.02 MByte/s) 993.35 MByte/s (±4768.08 MByte/s) 0.96
alloc_benchmarks Build Time 110.33 s 100.75 s 1.10
alloc_benchmarks File Size 0.97 MB 0.97 MB 1.00
Allocations - Allocation success 2.00 % (±13.86 %) 2.00 % (±13.86 %) 1
Allocations - Deallocation success 1.40 % (±9.70 %) 1.40 % (±9.73 %) 1.00
Allocations - Pre-fail Allocations 2.00 % (±13.86 %) 2.00 % (±13.86 %) 1
Allocations - Average Allocation time 254.53 Ticks (±1763.82 Ticks) 229.53 Ticks (±1590.58 Ticks) 1.11
Allocations - Average Allocation time (no fail) 254.53 Ticks (±1763.82 Ticks) 229.53 Ticks (±1590.58 Ticks) 1.11
Allocations - Average Deallocation time 14.69 Ticks (±101.79 Ticks) 13.15 Ticks (±91.10 Ticks) 1.12
mutex_benchmark Build Time 110.02 s 101.46 s 1.08
mutex_benchmark File Size 1.01 MB 1.01 MB 1.00
Mutex Stress Test Average Time per Iteration - 1 Threads 0.28 ns (±1.94 ns) 0.24 ns (±1.66 ns) 1.17
Mutex Stress Test Average Time per Iteration - 2 Threads 0.34 ns (±2.36 ns) 0.26 ns (±1.80 ns) 1.31

This comment was automatically generated by workflow using github-action-benchmark.

It is possible to set a receive buffer size when MRG_RXBUF is
negotiated. Expose this ability to the user through the environment
variable `HERMIT_MRG_RXBUF_SIZE`.
In order to ensure that the buffer merging works, make the receive
buffers smaller in a CI step. Note, however, that this does not check if
the MRG_RXBUF is available for the step. If it's not, the environment
variable will have no effect.
@cagatay-y cagatay-y marked this pull request as ready for review October 15, 2025 13:57
Copy link
Member

@mkroening mkroening left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! :)

@mkroening mkroening added this pull request to the merge queue Oct 15, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Oct 15, 2025
@mkroening mkroening added this pull request to the merge queue Oct 15, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Oct 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants