47 lines
1.2 KiB
Bash
47 lines
1.2 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# Redis-style memory allocator comparison script
|
||
|
|
# Compares System, mimalloc, and HAKMEM allocators
|
||
|
|
|
||
|
|
echo "Redis-style Memory Allocator Benchmark"
|
||
|
|
echo "======================================"
|
||
|
|
echo "Comparing: System malloc vs mimalloc vs HAKMEM"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
BENCH="./benchmarks/redis/workload_bench_system"
|
||
|
|
MIMALLOC_LIB="/mnt/workdisk/public_share/hakmem/mimalloc-bench/extern/mi/out/release/libmimalloc.so"
|
||
|
|
HAKMEM_LIB="./libhakmem.so"
|
||
|
|
THREADS=1
|
||
|
|
CYCLES=100
|
||
|
|
OPS=1000
|
||
|
|
|
||
|
|
# Test parameters
|
||
|
|
echo "Test Parameters:"
|
||
|
|
echo " Threads: $THREADS"
|
||
|
|
echo " Cycles: $CYCLES"
|
||
|
|
echo " Operations per cycle: $OPS"
|
||
|
|
echo " Size range: 16-1024 bytes"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Run System malloc benchmark
|
||
|
|
echo "=== 1. System malloc ==="
|
||
|
|
$BENCH -t $THREADS -c $CYCLES -o $OPS
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Run mimalloc benchmark
|
||
|
|
echo "=== 2. mimalloc ==="
|
||
|
|
LD_PRELOAD=$MIMALLOC_LIB $BENCH -t $THREADS -c $CYCLES -o $OPS
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Run HAKMEM benchmark (if shared library works)
|
||
|
|
echo "=== 3. HAKMEM ==="
|
||
|
|
if [ -f "$HAKMEM_LIB" ]; then
|
||
|
|
LD_PRELOAD=$HAKMEM_LIB $BENCH -t $THREADS -c $CYCLES -o $OPS || echo "HAKMEM: Failed"
|
||
|
|
else
|
||
|
|
echo "HAKMEM shared library not found"
|
||
|
|
fi
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
echo "Summary:"
|
||
|
|
echo "========"
|
||
|
|
echo "Performance comparison of Redis-style workloads (16-1024B allocations)"
|