Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
647cb45
make: replace build-bench-env.sh with a Make-based build
derSteFfi Oct 21, 2026
f8ebecb
Dockerfile/CI: support the make-based build
derSteFfi Oct 21, 2026
c5e2fd4
README: document the make-based workflow
derSteFfi Oct 21, 2026
910b4ad
VERSIONS: pin every project to an exact commit
derSteFfi Oct 21, 2026
51c6c5a
make: name archives after their pinned version
derSteFfi Oct 21, 2026
144f146
provision mathlib for the lean-mathlib benchmark
derSteFfi Oct 22, 2026
494f717
README/Dockerfile: add linux test build deps (flex, bison, libelf)
derSteFfi Oct 22, 2026
c8c73ee
make: never leave partial downloads behind
derSteFfi Oct 23, 2026
682b731
Dockerfile: use new bazel pubky location
derSteFfi Oct 26, 2026
276b19c
VERSIONS: match upstream mimalloc3 bump to v3.6.0
derSteFfi Nov 2, 2026
2a7bfcc
VERSIONS: match upstream jemalloc bump to 5.4.0
derSteFfi Nov 5, 2026
9bb9ab3
VERSIONS: match upstream snmalloc bump to 0.7.6
derSteFfi Nov 5, 2026
b62ec5b
VERSIONS: match upstream tbb bump to v2023.1.0
derSteFfi Nov 5, 2026
d00035f
VERSIONS: match upstream gperftools bump to gperftools-2.18
derSteFfi Nov 5, 2026
c507f00
VERSIONS: match upstream rpmalloc bump to 2.0.1
derSteFfi Nov 5, 2026
a286d51
VERSIONS: match upstream tcmalloc bump to 81f4e44f
derSteFfi Nov 5, 2026
988750c
README/Dockerfile: add ruby to the alpine and arch package lists for …
derSteFfi Nov 5, 2026
895a7d7
rocksdb: use posix_memalign for cache shards on musl
derSteFfi Nov 5, 2026
7894df9
Makefile: build a shared tcmalloc for the tcg test
derSteFfi Nov 9, 2026
423cde3
platform.yml: raise vm.max_map_count for the stress tests
derSteFfi Nov 9, 2026
909443a
Makefile: define the sized free functions for hoard
derSteFfi Nov 9, 2026
6f1ed81
platform.yml: run the tcg job on ubuntu
derSteFfi Nov 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions .github/workflows/platform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,10 @@ jobs:
# sm: ../src/supermalloc.h:10:31: error: expected initializer before '__THROW'
- allocator: sm
predicate: ${{ inputs.platform == 'alpine' }}
# tcg: [...] specifies less restrictive attribute than its target [...]
# tcg: needs bazel, which is only installed for ubuntu; on alpine
# tcmalloc also fails to compile with clang
- allocator: tcg
predicate: ${{ inputs.platform == 'alpine' }}
predicate: ${{ inputs.platform != 'ubuntu' }}
fail-fast: false
name: ${{ matrix.allocator }} - build and benchmark
steps:
Expand All @@ -85,6 +86,12 @@ jobs:
- name: Unload host AppArmor profiles
run: sudo aa-teardown || true

# Some tests (e.g. sh6bench) keep tens of thousands of allocations live at
# once and some allocators (e.g. hardened_malloc) map guard pages per
# allocation, so they hit vm.max_map_count. Increase to make them pass.
- name: Raise vm.max_map_count for the benchmarks
run: sudo sysctl -w vm.max_map_count=1048576

- name: Build allocator and run benchmarks in Docker
id: docker_build
uses: docker/build-push-action@v7
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
archives/
extern/
out/
bench/doc/
Expand Down
52 changes: 35 additions & 17 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,38 @@
ARG platform=ubuntu

FROM ubuntu:24.04 AS ubuntu

RUN apt-get update
RUN apt-get install -y --no-install-recommends build-essential git gpg \
g++ clang lld llvm-dev unzip dos2unix linuxinfo bc libgmp-dev wget \
cmake python3 ruby ninja-build libtool autoconf sed ghostscript \
time curl automake libatomic1 libgflags-dev libsnappy-dev cargo \
zlib1g-dev libbz2-dev liblz4-dev libzstd-dev libreadline-dev \
pkg-config gawk util-linux bsdextrautils flex bison libelf-dev
# Install bazel
RUN apt-get install -y --no-install-recommends apt-transport-https curl gnupg
RUN curl -fsSL https://releases.bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg
RUN mv bazel.gpg /etc/apt/trusted.gpg.d/bazel.gpg
RUN echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" > /etc/apt/sources.list.d/bazel.list
RUN apt-get update && apt-get install bazel

FROM fedora:44 AS fedora

RUN dnf -y --quiet --nodocs install gcc-c++ clang lld llvm-devel unzip \
dos2unix bc gmp-devel wget gawk cmake python3 ruby ninja-build libtool \
autoconf git patch time sed ghostscript libatomic libstdc++ which \
gflags-devel xz readline-devel snappy-devel rust flex bison elfutils-libelf-devel
# Install bazel - off for now, only tcg needs it and that's not building anyway
#RUN dnf -y --quiet copr enable ohadm/bazel
#RUN dnf -y --quiet --nodocs install bazel8

FROM alpine:3.24 AS alpine
RUN echo "@testing http://nl.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
RUN apk update
RUN apk add --no-cache bash

RUN apk add -q clang lld unzip dos2unix bc gmp-dev wget cmake python3 ruby \
automake gawk samurai libtool git build-base linux-headers autoconf \
util-linux sed ghostscript libatomic gflags-dev readline-dev snappy-dev cargo \
flex bison elfutils-dev
RUN apk add -q bazel@testing

FROM ${platform} AS bench-env

Expand All @@ -17,19 +41,13 @@ RUN mkdir -p /mimalloc-bench
COPY . /mimalloc-bench

WORKDIR /mimalloc-bench
# Install dependencies
RUN ./build-bench-env.sh packages

# Build benchmarks
RUN ./build-bench-env.sh bench

RUN ./build-bench-env.sh redis

RUN ./build-bench-env.sh rocksdb

RUN ./build-bench-env.sh lean

RUN ./build-bench-env.sh linux
RUN make benchmarks
RUN make redis
RUN make rocksdb
RUN make lean
RUN make lua
RUN make linux
Comment thread
derSteFfi marked this conversation as resolved.
Resolved

FROM bench-env AS benchmark

Expand All @@ -39,8 +57,8 @@ ARG allocator=mi
ARG benchs=cfrac
ARG repeats=1

RUN ./build-bench-env.sh $allocator
RUN make $allocator

# Run benchmarks
WORKDIR /mimalloc-bench/out/bench
RUN ../../bench.sh $allocator $benchs -r=$repeats
RUN ../../bench.sh $allocator $benchs -r=$repeats
Loading
Loading