microsoft / microsoft/mimalloc
mimalloc slower than glibc 2.30
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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- 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