Veröffentlichung der Speicherverwaltungsbibliothek jemalloc 5.3

Die Veröffentlichung der Speicherverwaltungsbibliothek jemalloc 5.4.0 wurde vorgestellt. Sie bietet eine alternative Implementierung der malloc-Funktionen, die zur Reduzierung von Fragmentierung und für den Einsatz auf Mehrprozessorsystemen optimiert ist. Um Sperrprobleme auf Multicore-Systemen zu lösen, verwendet jemalloc für jeden CPU-Kern einen eigenen isolierten Speicherzuweisungsbereich, wodurch bei wachsender Thread-Anzahl eine lineare Skalierung erreicht wird.

Im Juni 2025 stellte der Projektautor die Pflege ein und versetzte das jemalloc-Repository in den Archivmodus. Im März dieses Jahres nahm Meta, das jemalloc in seiner Infrastruktur einsetzt, die Entwicklung jedoch wieder auf. Ursprünglich wurde die Bibliothek für FreeBSD entwickelt und wird dort seit 2005 standardmäßig verwendet. Der Bibliothekscode ist in C geschrieben und wird unter der BSD-Lizenz veröffentlicht.

Unter den Änderungen:

  • Die Logik zum Befüllen und Leeren von tcache (Thread Local Cache) sowie die Steuerung der Speicherzuweisung wurden vereinfacht.
  • Die Speicherseiten-Allokatoren PAC (Page Allocator Classic) und HPA (Huge Page Allocator) wurden vereinheitlicht. Der komplexe Mechanismus indirekter Aufrufe über die vtable (PAI vtable) wurde entfernt.
  • Zur Vereinfachung von Wartung und Plattformerweiterung wurden alle plattformspezifischen Operationen in separate Header-Dateien ausgelagert.
  • Die Verarbeitung der mallctl-Befehle wurde vereinfacht, außerdem wurde die Infrastruktur zur Generierung und Ausgabe von Statistiken überarbeitet.
  • Das Flag EXTENT_ALLOC_FLAG_PINNED wurde hinzugefügt. Es ermöglicht, nicht verdrängbare Bereiche des Memory-Mappings, etwa HugeTLB-Seiten, für die bevorzugte Wiederverwendung zu markieren. Zur Erfassung von Statistiken über die Nutzung angehefteten Speichers wurden neue mallctl-Schnittstellen hinzugefügt: stats.pinned, stats.arenas..pinned, stats.arenas..extents..npinned, stats.arenas..extents..pinned_bytes und stats.arenas..mutexes.extents_pinned.{counter} .
  • Der Inhalt der malloc-Statistiken wurde zwischen dem lesbaren Format und dem JSON-Format synchronisiert.
  • Die veralteten Parameter lg_tcache_nslots_mul, tcache_nslots_small_min, tcache_nslots_small_max, tcache_nslots_large, tcache_gc_delay_bytes, lg_tcache_flush_small_div und lg_tcache_flush_large_div wurden entfernt.

Quelle: opennet.ru

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster