Configuration
| allocators | wf_alloc, rlsf, rlsf-posix, mimalloc |
|---|
| threads | 1, 2, 4, 8 |
|---|
| total_live_slots | 4,096 |
|---|
| duration_ms | 5,000 |
|---|
| pool_mib | 1,024 |
|---|
| max_size | 16,384 |
|---|
| remote_free_percent | 20 |
|---|
| core_stride | 2 |
|---|
| extra_args | |
|---|
Charts
Throughput ops/s
Allocations/s
Alloc latency average ns
Alloc latency p50 ns
Alloc latency p90 ns
Alloc latency p99 ns
Alloc latency worst ns
Free latency average ns
Free latency p50 ns
Free latency p90 ns
Free latency p99 ns
Free latency worst ns
Results
| requested_allocator | allocator | threads | live_slots_per_thread | returncode | throughput_ops_per_sec | throughput_allocs_per_sec | throughput_failed_allocs | alloc_latency_samples | alloc_latency_average_ns | alloc_latency_p50_ns | alloc_latency_p90_ns | alloc_latency_p99_ns | alloc_latency_worst_ns | free_latency_samples | free_latency_average_ns | free_latency_p50_ns | free_latency_p90_ns | free_latency_p99_ns | free_latency_worst_ns |
|---|
| mimalloc | MiMalloc | 1 | 4,096 | 0 | 25,112,973 | 12,556,487 | 0 | 23,950,525 | 45 | 40 | 61 | 111 | 316,618 | 23,950,525 | 37 | 40 | 41 | 51 | 299,716 |
| rlsf | RlsfAwkernelSpin | 1 | 4,096 | 0 | 18,357,294 | 9,178,647 | 0 | 22,118,752 | 47 | 41 | 60 | 80 | 19,026 | 22,118,752 | 52 | 50 | 70 | 91 | 19,366 |
| rlsf-posix | RlsfPosixMutex | 1 | 4,096 | 0 | 17,428,662 | 8,714,331 | 0 | 20,153,771 | 59 | 50 | 80 | 160 | 20,308 | 20,153,771 | 61 | 60 | 80 | 110 | 20,318 |
| wf_alloc | WfAlloc | 1 | 4,096 | 0 | 22,176,066 | 11,088,033 | 0 | 23,298,257 | 47 | 40 | 60 | 100 | 19,347 | 23,298,257 | 41 | 40 | 50 | 61 | 43,372 |
| mimalloc | MiMalloc | 2 | 2,048 | 0 | 23,671,189 | 11,835,594 | 0 | 36,447,594 | 54 | 40 | 80 | 180 | 28,113 | 36,447,594 | 50 | 40 | 80 | 111 | 115,278 |
| rlsf | RlsfAwkernelSpin | 2 | 2,048 | 0 | 7,217,385 | 3,608,692 | 0 | 17,305,715 | 189 | 190 | 280 | 351 | 19,206 | 17,305,715 | 183 | 180 | 261 | 331 | 19,888 |
| rlsf-posix | RlsfPosixMutex | 2 | 2,048 | 0 | 4,393,099 | 2,196,549 | 0 | 10,254,801 | 402 | 191 | 842 | 1,343 | 112,312 | 10,254,801 | 403 | 181 | 821 | 1,302 | 125,577 |
| wf_alloc | WfAlloc | 2 | 2,048 | 0 | 21,943,104 | 10,971,552 | 0 | 34,825,001 | 56 | 40 | 80 | 201 | 51,608 | 34,825,001 | 53 | 40 | 80 | 120 | 20,208 |
| mimalloc | MiMalloc | 4 | 1,024 | 0 | 34,453,994 | 17,226,997 | 0 | 67,253,997 | 54 | 40 | 80 | 190 | 429,782 | 67,253,997 | 50 | 40 | 80 | 111 | 273,978 |
| rlsf | RlsfAwkernelSpin | 4 | 1,024 | 0 | 4,819,310 | 2,409,655 | 0 | 12,444,144 | 704 | 511 | 1,383 | 3,076 | 68,440 | 12,444,144 | 703 | 511 | 1,393 | 2,956 | 38,563 |
| rlsf-posix | RlsfPosixMutex | 4 | 1,024 | 0 | 4,594,485 | 2,297,242 | 0 | 9,956,466 | 945 | 541 | 2,294 | 7,063 | 59,592 | 9,956,466 | 893 | 471 | 2,185 | 6,973 | 58,179 |
| wf_alloc | WfAlloc | 4 | 1,024 | 0 | 35,856,112 | 17,928,056 | 0 | 66,642,779 | 49 | 40 | 60 | 140 | 61,196 | 66,642,779 | 49 | 40 | 70 | 110 | 17,182 |
| mimalloc | MiMalloc | 8 | 512 | 0 | 41,454,140 | 20,727,070 | 0 | 99,148,040 | 55 | 40 | 80 | 200 | 1,115,558 | 99,148,040 | 51 | 40 | 81 | 120 | 107,914 |
| rlsf | RlsfAwkernelSpin | 8 | 512 | 0 | 2,847,153 | 1,423,577 | 0 | 7,245,887 | 2,142 | 1,212 | 4,669 | 15,059 | 138,952 | 7,245,887 | 3,113 | 1,342 | 6,583 | 31,219 | 209,817 |
| rlsf-posix | RlsfPosixMutex | 8 | 512 | 0 | 3,475,061 | 1,737,531 | 0 | 8,552,217 | 2,301 | 1,323 | 6,162 | 13,055 | 142,189 | 8,552,217 | 2,187 | 1,193 | 6,051 | 12,944 | 224,875 |
| wf_alloc | WfAlloc | 8 | 512 | 0 | 42,634,051 | 21,317,025 | 0 | 98,524,640 | 50 | 40 | 70 | 140 | 61,586 | 98,524,640 | 51 | 40 | 80 | 130 | 21,481 |
Raw Output
wf_alloc threads=1 rc=0
$ target/release/memalloc_bench --allocator wf_alloc --threads 1 --duration-ms 5000 --pool-mib 1024 --live-slots 4096 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: WfAlloc
threads: 1
core_pinning: base_core=0 core_stride=2 cores=1
realtime_priority: Some(80)
throughput_duration_sec: 5.000
throughput_allocs: 55444078
throughput_frees: 55444078
throughput_failed_allocs: 0
throughput_bytes_allocated: 45437013569
throughput_ops_per_sec: 22176066
throughput_allocs_per_sec: 11088033
latency_duration_sec: 5.246
alloc_latency_samples: 23298257
alloc_latency_average_ns: 47
alloc_latency_p50_ns: 40
alloc_latency_p90_ns: 60
alloc_latency_p99_ns: 100
alloc_latency_worst_ns: 19347
free_latency_samples: 23298257
free_latency_average_ns: 41
free_latency_p50_ns: 40
free_latency_p90_ns: 50
free_latency_p99_ns: 61
free_latency_worst_ns: 43372
rlsf threads=1 rc=0
$ target/release/memalloc_bench --allocator rlsf --threads 1 --duration-ms 5000 --pool-mib 1024 --live-slots 4096 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: RlsfAwkernelSpin
threads: 1
core_pinning: base_core=0 core_stride=2 cores=1
realtime_priority: Some(80)
throughput_duration_sec: 5.000
throughput_allocs: 45896074
throughput_frees: 45896074
throughput_failed_allocs: 0
throughput_bytes_allocated: 37622290954
throughput_ops_per_sec: 18357294
throughput_allocs_per_sec: 9178647
latency_duration_sec: 5.230
alloc_latency_samples: 22118752
alloc_latency_average_ns: 47
alloc_latency_p50_ns: 41
alloc_latency_p90_ns: 60
alloc_latency_p99_ns: 80
alloc_latency_worst_ns: 19026
free_latency_samples: 22118752
free_latency_average_ns: 52
free_latency_p50_ns: 50
free_latency_p90_ns: 70
free_latency_p99_ns: 91
free_latency_worst_ns: 19366
rlsf-posix threads=1 rc=0
$ target/release/memalloc_bench --allocator rlsf-posix --threads 1 --duration-ms 5000 --pool-mib 1024 --live-slots 4096 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: RlsfPosixMutex
threads: 1
core_pinning: base_core=0 core_stride=2 cores=1
realtime_priority: Some(80)
throughput_duration_sec: 5.000
throughput_allocs: 43574479
throughput_frees: 43574479
throughput_failed_allocs: 0
throughput_bytes_allocated: 35721289957
throughput_ops_per_sec: 17428662
throughput_allocs_per_sec: 8714331
latency_duration_sec: 5.222
alloc_latency_samples: 20153771
alloc_latency_average_ns: 59
alloc_latency_p50_ns: 50
alloc_latency_p90_ns: 80
alloc_latency_p99_ns: 160
alloc_latency_worst_ns: 20308
free_latency_samples: 20153771
free_latency_average_ns: 61
free_latency_p50_ns: 60
free_latency_p90_ns: 80
free_latency_p99_ns: 110
free_latency_worst_ns: 20318
mimalloc threads=1 rc=0
$ target/release/memalloc_bench --allocator mimalloc --threads 1 --duration-ms 5000 --pool-mib 1024 --live-slots 4096 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: MiMalloc
threads: 1
core_pinning: base_core=0 core_stride=2 cores=1
realtime_priority: Some(80)
throughput_duration_sec: 5.000
throughput_allocs: 62785567
throughput_frees: 62785567
throughput_failed_allocs: 0
throughput_bytes_allocated: 51446113786
throughput_ops_per_sec: 25112973
throughput_allocs_per_sec: 12556487
latency_duration_sec: 5.275
alloc_latency_samples: 23950525
alloc_latency_average_ns: 45
alloc_latency_p50_ns: 40
alloc_latency_p90_ns: 61
alloc_latency_p99_ns: 111
alloc_latency_worst_ns: 316618
free_latency_samples: 23950525
free_latency_average_ns: 37
free_latency_p50_ns: 40
free_latency_p90_ns: 41
free_latency_p99_ns: 51
free_latency_worst_ns: 299716
wf_alloc threads=2 rc=0
$ target/release/memalloc_bench --allocator wf_alloc --threads 2 --duration-ms 5000 --pool-mib 1024 --live-slots 2048 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: WfAlloc
threads: 2
core_pinning: base_core=0 core_stride=2 cores=2
realtime_priority: Some(80)
throughput_duration_sec: 5.001
throughput_allocs: 54864594
throughput_frees: 54864594
throughput_failed_allocs: 0
throughput_bytes_allocated: 44953871526
throughput_ops_per_sec: 21943104
throughput_allocs_per_sec: 10971552
latency_duration_sec: 5.376
alloc_latency_samples: 34825001
alloc_latency_average_ns: 56
alloc_latency_p50_ns: 40
alloc_latency_p90_ns: 80
alloc_latency_p99_ns: 201
alloc_latency_worst_ns: 51608
free_latency_samples: 34825001
free_latency_average_ns: 53
free_latency_p50_ns: 40
free_latency_p90_ns: 80
free_latency_p99_ns: 120
free_latency_worst_ns: 20208
rlsf threads=2 rc=0
$ target/release/memalloc_bench --allocator rlsf --threads 2 --duration-ms 5000 --pool-mib 1024 --live-slots 2048 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: RlsfAwkernelSpin
threads: 2
core_pinning: base_core=0 core_stride=2 cores=2
realtime_priority: Some(80)
throughput_duration_sec: 5.001
throughput_allocs: 18046132
throughput_frees: 18046132
throughput_failed_allocs: 0
throughput_bytes_allocated: 14798585712
throughput_ops_per_sec: 7217385
throughput_allocs_per_sec: 3608692
latency_duration_sec: 5.186
alloc_latency_samples: 17305715
alloc_latency_average_ns: 189
alloc_latency_p50_ns: 190
alloc_latency_p90_ns: 280
alloc_latency_p99_ns: 351
alloc_latency_worst_ns: 19206
free_latency_samples: 17305715
free_latency_average_ns: 183
free_latency_p50_ns: 180
free_latency_p90_ns: 261
free_latency_p99_ns: 331
free_latency_worst_ns: 19888
rlsf-posix threads=2 rc=0
$ target/release/memalloc_bench --allocator rlsf-posix --threads 2 --duration-ms 5000 --pool-mib 1024 --live-slots 2048 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: RlsfPosixMutex
threads: 2
core_pinning: base_core=0 core_stride=2 cores=2
realtime_priority: Some(80)
throughput_duration_sec: 5.001
throughput_allocs: 10984820
throughput_frees: 10984820
throughput_failed_allocs: 0
throughput_bytes_allocated: 9001821906
throughput_ops_per_sec: 4393099
throughput_allocs_per_sec: 2196549
latency_duration_sec: 5.112
alloc_latency_samples: 10254801
alloc_latency_average_ns: 402
alloc_latency_p50_ns: 191
alloc_latency_p90_ns: 842
alloc_latency_p99_ns: 1343
alloc_latency_worst_ns: 112312
free_latency_samples: 10254801
free_latency_average_ns: 403
free_latency_p50_ns: 181
free_latency_p90_ns: 821
free_latency_p99_ns: 1302
free_latency_worst_ns: 125577
mimalloc threads=2 rc=0
$ target/release/memalloc_bench --allocator mimalloc --threads 2 --duration-ms 5000 --pool-mib 1024 --live-slots 2048 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: MiMalloc
threads: 2
core_pinning: base_core=0 core_stride=2 cores=2
realtime_priority: Some(80)
throughput_duration_sec: 5.000
throughput_allocs: 59181632
throughput_frees: 59181632
throughput_failed_allocs: 0
throughput_bytes_allocated: 48487691984
throughput_ops_per_sec: 23671189
throughput_allocs_per_sec: 11835594
latency_duration_sec: 5.409
alloc_latency_samples: 36447594
alloc_latency_average_ns: 54
alloc_latency_p50_ns: 40
alloc_latency_p90_ns: 80
alloc_latency_p99_ns: 180
alloc_latency_worst_ns: 28113
free_latency_samples: 36447594
free_latency_average_ns: 50
free_latency_p50_ns: 40
free_latency_p90_ns: 80
free_latency_p99_ns: 111
free_latency_worst_ns: 115278
wf_alloc threads=4 rc=0
$ target/release/memalloc_bench --allocator wf_alloc --threads 4 --duration-ms 5000 --pool-mib 1024 --live-slots 1024 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: WfAlloc
threads: 4
core_pinning: base_core=0 core_stride=2 cores=4
realtime_priority: Some(80)
throughput_duration_sec: 5.001
throughput_allocs: 89649298
throughput_frees: 89649298
throughput_failed_allocs: 0
throughput_bytes_allocated: 73472954239
throughput_ops_per_sec: 35856112
throughput_allocs_per_sec: 17928056
latency_duration_sec: 5.724
alloc_latency_samples: 66642779
alloc_latency_average_ns: 49
alloc_latency_p50_ns: 40
alloc_latency_p90_ns: 60
alloc_latency_p99_ns: 140
alloc_latency_worst_ns: 61196
free_latency_samples: 66642779
free_latency_average_ns: 49
free_latency_p50_ns: 40
free_latency_p90_ns: 70
free_latency_p99_ns: 110
free_latency_worst_ns: 17182
rlsf threads=4 rc=0
$ target/release/memalloc_bench --allocator rlsf --threads 4 --duration-ms 5000 --pool-mib 1024 --live-slots 1024 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: RlsfAwkernelSpin
threads: 4
core_pinning: base_core=0 core_stride=2 cores=4
realtime_priority: Some(80)
throughput_duration_sec: 5.001
throughput_allocs: 12049989
throughput_frees: 12049989
throughput_failed_allocs: 0
throughput_bytes_allocated: 9870695875
throughput_ops_per_sec: 4819310
throughput_allocs_per_sec: 2409655
latency_duration_sec: 5.146
alloc_latency_samples: 12444144
alloc_latency_average_ns: 704
alloc_latency_p50_ns: 511
alloc_latency_p90_ns: 1383
alloc_latency_p99_ns: 3076
alloc_latency_worst_ns: 68440
free_latency_samples: 12444144
free_latency_average_ns: 703
free_latency_p50_ns: 511
free_latency_p90_ns: 1393
free_latency_p99_ns: 2956
free_latency_worst_ns: 38563
rlsf-posix threads=4 rc=0
$ target/release/memalloc_bench --allocator rlsf-posix --threads 4 --duration-ms 5000 --pool-mib 1024 --live-slots 1024 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: RlsfPosixMutex
threads: 4
core_pinning: base_core=0 core_stride=2 cores=4
realtime_priority: Some(80)
throughput_duration_sec: 5.001
throughput_allocs: 11488040
throughput_frees: 11488040
throughput_failed_allocs: 0
throughput_bytes_allocated: 9408978907
throughput_ops_per_sec: 4594485
throughput_allocs_per_sec: 2297242
latency_duration_sec: 5.114
alloc_latency_samples: 9956466
alloc_latency_average_ns: 945
alloc_latency_p50_ns: 541
alloc_latency_p90_ns: 2294
alloc_latency_p99_ns: 7063
alloc_latency_worst_ns: 59592
free_latency_samples: 9956466
free_latency_average_ns: 893
free_latency_p50_ns: 471
free_latency_p90_ns: 2185
free_latency_p99_ns: 6973
free_latency_worst_ns: 58179
mimalloc threads=4 rc=0
$ target/release/memalloc_bench --allocator mimalloc --threads 4 --duration-ms 5000 --pool-mib 1024 --live-slots 1024 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: MiMalloc
threads: 4
core_pinning: base_core=0 core_stride=2 cores=4
realtime_priority: Some(80)
throughput_duration_sec: 5.000
throughput_allocs: 86142217
throughput_frees: 86142217
throughput_failed_allocs: 0
throughput_bytes_allocated: 70603524404
throughput_ops_per_sec: 34453994
throughput_allocs_per_sec: 17226997
latency_duration_sec: 5.782
alloc_latency_samples: 67253997
alloc_latency_average_ns: 54
alloc_latency_p50_ns: 40
alloc_latency_p90_ns: 80
alloc_latency_p99_ns: 190
alloc_latency_worst_ns: 429782
free_latency_samples: 67253997
free_latency_average_ns: 50
free_latency_p50_ns: 40
free_latency_p90_ns: 80
free_latency_p99_ns: 111
free_latency_worst_ns: 273978
wf_alloc threads=8 rc=0
$ target/release/memalloc_bench --allocator wf_alloc --threads 8 --duration-ms 5000 --pool-mib 1024 --live-slots 512 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: WfAlloc
threads: 8
core_pinning: base_core=0 core_stride=2 cores=8
realtime_priority: Some(80)
throughput_duration_sec: 5.001
throughput_allocs: 106601989
throughput_frees: 106601989
throughput_failed_allocs: 0
throughput_bytes_allocated: 87396673687
throughput_ops_per_sec: 42634051
throughput_allocs_per_sec: 21317025
latency_duration_sec: 6.093
alloc_latency_samples: 98524640
alloc_latency_average_ns: 50
alloc_latency_p50_ns: 40
alloc_latency_p90_ns: 70
alloc_latency_p99_ns: 140
alloc_latency_worst_ns: 61586
free_latency_samples: 98524640
free_latency_average_ns: 51
free_latency_p50_ns: 40
free_latency_p90_ns: 80
free_latency_p99_ns: 130
free_latency_worst_ns: 21481
rlsf threads=8 rc=0
$ target/release/memalloc_bench --allocator rlsf --threads 8 --duration-ms 5000 --pool-mib 1024 --live-slots 512 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: RlsfAwkernelSpin
threads: 8
core_pinning: base_core=0 core_stride=2 cores=8
realtime_priority: Some(80)
throughput_duration_sec: 5.001
throughput_allocs: 7119283
throughput_frees: 7119283
throughput_failed_allocs: 0
throughput_bytes_allocated: 5828624228
throughput_ops_per_sec: 2847153
throughput_allocs_per_sec: 1423577
latency_duration_sec: 5.074
alloc_latency_samples: 7245887
alloc_latency_average_ns: 2142
alloc_latency_p50_ns: 1212
alloc_latency_p90_ns: 4669
alloc_latency_p99_ns: 15059
alloc_latency_worst_ns: 138952
free_latency_samples: 7245887
free_latency_average_ns: 3113
free_latency_p50_ns: 1342
free_latency_p90_ns: 6583
free_latency_p99_ns: 31219
free_latency_worst_ns: 209817
rlsf-posix threads=8 rc=0
$ target/release/memalloc_bench --allocator rlsf-posix --threads 8 --duration-ms 5000 --pool-mib 1024 --live-slots 512 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: RlsfPosixMutex
threads: 8
core_pinning: base_core=0 core_stride=2 cores=8
realtime_priority: Some(80)
throughput_duration_sec: 5.001
throughput_allocs: 8689695
throughput_frees: 8689695
throughput_failed_allocs: 0
throughput_bytes_allocated: 7119057694
throughput_ops_per_sec: 3475061
throughput_allocs_per_sec: 1737531
latency_duration_sec: 5.092
alloc_latency_samples: 8552217
alloc_latency_average_ns: 2301
alloc_latency_p50_ns: 1323
alloc_latency_p90_ns: 6162
alloc_latency_p99_ns: 13055
alloc_latency_worst_ns: 142189
free_latency_samples: 8552217
free_latency_average_ns: 2187
free_latency_p50_ns: 1193
free_latency_p90_ns: 6051
free_latency_p99_ns: 12944
free_latency_worst_ns: 224875
mimalloc threads=8 rc=0
$ target/release/memalloc_bench --allocator mimalloc --threads 8 --duration-ms 5000 --pool-mib 1024 --live-slots 512 --max-size 16384 --core-stride 2 --remote-free-percent 20
allocator: MiMalloc
threads: 8
core_pinning: base_core=0 core_stride=2 cores=8
realtime_priority: Some(80)
throughput_duration_sec: 5.001
throughput_allocs: 103661005
throughput_frees: 103661005
throughput_failed_allocs: 0
throughput_bytes_allocated: 84985800350
throughput_ops_per_sec: 41454140
throughput_allocs_per_sec: 20727070
latency_duration_sec: 6.138
alloc_latency_samples: 99148040
alloc_latency_average_ns: 55
alloc_latency_p50_ns: 40
alloc_latency_p90_ns: 80
alloc_latency_p99_ns: 200
alloc_latency_worst_ns: 1115558
free_latency_samples: 99148040
free_latency_average_ns: 51
free_latency_p50_ns: 40
free_latency_p90_ns: 81
free_latency_p99_ns: 120
free_latency_worst_ns: 107914