Die Speicherverwaltungsbibliothek jemalloc 5.3.1 ist verfügbar.

Vier Jahre nach der Veröffentlichung des letzten Updates steht die Version 5.3.1 der Speicherverwaltungslibrary jemalloc zur Verfügung, die eine alternative Implementierung der malloc-Funktionen bietet, optimiert zur Reduzierung von Fragmentierung und zur Arbeit in Mehrprozessorsystemen. Um Probleme mit Sperren in Mehrkernsystemen zu lösen, verwendet jemalloc für jedes CPU-Kern einen eigenen isolierten Speicherbereich, was eine lineare Skalierbarkeit mit steigender Thread-Anzahl ermöglicht.

Im Juni 2025 stellte der Autor des Projekts die Wartung ein und versetzte das jemalloc-Repository in den Archivmodus, aber vor einem Monat wurde die Entwicklung von der Firma Meta, die jemalloc in ihrer Infrastruktur verwendet, wieder aufgenommen. Ursprünglich wurde die Library für FreeBSD entwickelt und wird seit 2005 standardmäßig in diesem Betriebssystem verwendet. Der Code der Bibliothek ist in C geschrieben und wird unter der BSD-Lizenz verbreitet.

Zu den Änderungen gehören:

  • Die Funktion pvalloc wurde implementiert, die nützlich sein kann, wenn ein Speicher-Allocator von libc ersetzt werden soll.
  • Im Debug-Builds wurde der Modus zur Erkennung doppelter Aufrufe der Funktion free() aktiviert. Ein Parameter debug_double_free_max_scan wurde hinzugefügt, um die Größe des Stacks einzustellen, in dessen Rahmen die Prüfung erfolgt.
  • Eine Build-Option „—enable-pageid“ wurde hinzugefügt, um Tags beim Speichermapping mithilfe von prctl mit dem Flag PR_SET_VMA zu setzen. Nach der Aktivierung kann das Mapping über /proc//maps verfolgt werden.
  • Ein Parameter „prof_bt_max“ wurde hinzugefügt, um die maximale Stacktiefe für das Profiling festzulegen.
  • Eine Build-Option „—enable-force-getenv“ wurde hinzugefügt, um den normalen getenv() Code anstelle der geschützten secure_getenv() zu verwenden.
  • Eine Build-Option „—disable-dss“ wurde hinzugefügt, um die Verwendung der Funktion sbrk() zu deaktivieren.
  • Ein Parameter „tcache_ncached_max“ wurde hinzugefügt, um die Anzahl der Elemente im Thread-Cache zu begrenzen.
  • Ein Parameter „calloc_madvise_threshold“ wurde hinzugefügt, um die Verwendung des Kernel-Mechanismus madvise oder der Funktion memset zum Nullsetzen des über die Funktion calloc zugewiesenen Speichers zu konfigurieren.
  • Eine Build-Option „—disable-user-config“ wurde hinzugefügt, um das Laden von Einstellungen aus der Datei /etc/malloc.conf oder der Umgebungsvariable MALLOC_CONF zu deaktivieren.
  • Der Parameter „process_madvise_max_batch“ wurde hinzugefügt, um die Anzahl der Speicherblöcke für jede Batch-Operation mit madvise zu begrenzen.
  • Der Parameter „disable_large_size_classes“ wurde hinzugefügt, um den neuen Algorithmus zur Berechnung der zugewiesenen Speichergröße zu deaktivieren, der den Overhead bei der Zuweisung von Blöcken über 4 Seiten Speicher reduziert.
  • In das Tool mallctl wurden Optionen hinzugefügt: opt.prof_bt_max, arena..name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage und approximate_stats.active.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster