microsoft / microsoft/mimalloc

mimalloc slower than glibc 2.30

Aperta
#293 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
C
Stelle
13.4k
Fork
1.2k
Merge medio
4g 45m
PR unite (30g)
13

Descrizione

Hi!

First of all, legendary work! I've been using mimalloc for https://github.com/PacificBiosciences/ccs to saturate 256 threads on those new AMD 2x7742 or 2x7H12 servers. I'm blown away how much faster it is, compared to glibc 2.32. Especially running with large os pages. There is one edge case, mimalloc is still slower than the arena allocator of the latest glibc, if I use it only a few threads like 16 on a large machine.

On a small dataset, using 16 threads:

Allocator Threads Wall Time CPU Time
mimalloc + large_os_pages 16 4m 35s 1h 12m
mimalloc 16 4m 36s 1h 13m
glibc 2.30 16 4m 15s 1h 7m

On a dataset with 10x more data, using 256 threads:

Allocator Threads Wall Time CPU Time
mimalloc + large_os_pages 256 4m 43s 19h 04m
mimalloc 256 5m 03s 20h 25m
glibc 2.30 256 5m 18s 14h 58m

I'm aware that's ricing, but in production, our run times are ~30 hours, so every percent wall time counts.

I build mimalloc from source

cmake -GNinja -DCMAKE_INSTALL_PREFIX:PATH=${FOO}/software ..
ninja -v
ninja install

and then link it statically

LDFLAGS="${FOO}/software/lib/mimalloc-1.6/libmimalloc.a"

My question, is there any way to tune mimalloc to be as fast as the latest glibc allocator for lower number of threads?

Thank you!
Armin

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riproduci il confronto riportato con 16 thread utilizzando i comandi di build CMake/Ninja e il linking statico di libmimalloc.a mostrati nell’issue. Confronta mimalloc con glibc 2.30 sui workload indicati e determina se è possibile identificare un’opzione di tuning documentata o un problema di performance riproducibile dell’allocator; il lavoro è considerato completato quando viene confermata una causa o un prossimo passo attuabile.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
c, cmake
Ambito
operating-systems, performance
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.