Le problème
Enregistrer vite sans bloquer les producteurs
Dans un système chargé, écrire chaque événement directement sur disque rend le temps de traitement dépendant de l’I/O. Le recorder déplace ce coût vers un thread dédié tout en imposant une capacité maximale : le comportement sous pression est explicite au lieu de consommer une mémoire non bornée.
La performance n’a de valeur que si les fichiers restent exploitables après écriture. Le format contient les tailles et CRC nécessaires pour détecter corruption et troncature lors du replay.
Architecture
Multi-producteurs, une politique d’écriture
d’événements
thread-safe
asynchrone
+ replay tools
Les événements sont move-aware afin de limiter les copies de payload. Le writer regroupe les écritures et flush selon une politique configurable. Le lecteur valide le header et chaque enregistrement avant de l’exposer aux filtres.
Décisions d’ingénierie
Performance mesurée, intégrité conservée
Queue bornée
La capacité est configurable et empêche une croissance mémoire silencieuse quand le disque devient plus lent.
Little-endian explicite
Chaque champ est sérialisé sans écrire directement la représentation mémoire d’une structure C++.
CRC à trois niveaux
Le header de fichier, le header d’événement et son payload sont contrôlés séparément.
Benchmark end-to-end
Le rapport mesure génération, queue et écriture et conserve événements/s, octets et MiB/s.
Démonstration réelle
12 000 événements enregistrés, inspectés puis benchmarkés
La capture provient des trois exécutables du dépôt. Quatre producteurs écrivent le fichier, l’outil vérifie et agrège les niveaux de sévérité, puis le benchmark mesure 50 000 événements avec payload de 128 octets.
./hpblr_record --output sample.hpblr --producers 4 --events 12000 --payload-size 64
./hpblr_tool inspect --input sample.hpblr
./hpblr_bench --producers 4 --events 50000 --payload-size 128Preuves techniques
Ce que le dépôt permet de vérifier
- Round-trip binaire et lecture des événements dans l’ordre attendu.
- Détection de payload corrompu et de fichier tronqué.
- Test de plusieurs producteurs écrivant via l’enregistreur asynchrone.
- Outils CLI d’inspection, dump filtré et export CSV/JSON.