À propos du projet
# mimalloc-pprof
Un fork de [microsoft/mimalloc](https://github.com/microsoft/mimalloc) qui ajoute un **profilage de tas échantillonné compatible pprof**, avec Windows natif comme cible de premier ordre aux côtés de Linux et macOS. Il importe et revérifie également toutes les fonctionnalités de restitution de mémoire de Bun (alias « hole punch »).
## Fonctionnalités clés
- **Profilage de tas compatible pprof** : suit les allocations vivantes échantillonnées et écrit soit le format texte `heap_v2` de gperftools, soit un `profile.proto` pprof non compressé. Les deux s'ouvrent directement dans [google/pprof](https://github.com/google/pprof) pour les flame graphs, graphes d'appels, rapports top et diffs de profils.
- **Windows de premier ordre** : le seul profileur de tas mimalloc qui produit des profils Windows utilisables. Le mimalloc amont n'a pas de profileur ; le fork de Bun capture les piles Win32 mais n'émet aucune correspondance de modules. Ce fork énumère explicitement les modules chargés.
- **Restitution de mémoire** : inclut les fonctionnalités de restitution de mémoire de Bun (purge de trous, thread de purge en arrière-plan, purge différée dans le temps) et ajoute une purge anticipée à l'échelle du processus depuis n'importe quel thread (conditionnée, parquée par défaut), la purge de trous sous-page et la récupération explicite d'arènes vides.
- **Statistiques exactes** : `mi_stats_get`, `mi_stats_get_json`, dump JSON par tas, profilage exact DHAT (format Valgrind), callbacks d'événements d'allocation et instantané de tas vivant avec un visualiseur.
- **Robustesse** : gestionnaires fork() avec ordre de verrouillage documenté, vérificateur d'ordre de verrouillage à l'exécution, protocole de revendication ABA pour le démontage du tas avec tests d'injection de fautes, allocations avec pages de garde, mode de compilation durci/sécurisé, suivi ASan/Valgrind/ETW.
- **Support des plateformes** : Windows MSVC et MinGW, interposition de zone malloc et introspection de zone sur macOS, Linux. Crate Rust de première partie avec API C complète.
- **Performance** : benchmarks étendus face à TCMalloc, jemalloc, Microsoft mimalloc et Bun mimalloc sur la mise à l'échelle des threads, les distributions de tailles demandées, les threads de courte durée et la restitution de mémoire après inactivité.
## Intégration
Le profilage est opt-in deux fois : à la compilation (cargo `features = ["pprof"]` ou CMake `-DMI_PPROF=ON`) et à l'exécution (API de démarrage ou `MIMALLOC_PROF=1`). La compilation par défaut est un simple allocateur rapide.
## Version
Suit la ligne `dev3` du mimalloc amont (crate `mimalloc-pprof` 1.x). La ligne héritée v2 (0.8.x) est préservée sur la branche `v2` mais n'est pas maintenue.
## Documentation
- [Comparaison des fonctionnalités](#feature-comparison) : côte à côte avec Microsoft MiMalloc-V3, le fork de Bun et jemalloc, avec chaque cellule sourcée.
- [Mise à l'échelle des threads](#thread-scaling-by-allocation-pattern) : débit agrégé à 1-8 workers pour six motifs d'allocation.
- [Mémoire restituée après inactivité](#memory-returned-after-idle) : ce que chaque allocateur rend lorsqu'une rafale de travail se vide.
- [Performance](#performance) : méthodologie complète, tableaux par cellule et familles de benchmarks.
- [Pourquoi utiliser ce fork](#why-use-this-fork) : le fork mimalloc le plus testé qui existe.
- [Fonctionnalités de Bun](#bun-features) : chaque fonctionnalité portée depuis oven-sh/mimalloc, et ce qui a été délibérément laissé de côté.
- [Profilage et observabilité](#profiling-and-observability) : pprof échantillonné, statistiques exactes, DHAT, événements mémoire.
- [Bugs amont trouvés et corrigés](#upstream-bugs-found-and-fixed) : dont deux fuites de mémoire non bornées.
- [Q&R](#qa)
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.