Die Speicherverwaltungslibrary jemalloc 5.3.1 ist verfügbar

Vier Jahre nach der Veröffentlichung des letzten Updates steht die Version der Speicherverwaltungslibrary jemalloc 5.3.1 zur Verfügung, die eine alternative Implementierung von malloc-Funktionen bietet, die zur Reduzierung der Fragmentierung und zur Nutzung in multiprozessorischen Systemen optimiert ist. Um Probleme mit den Sperren auf Mehrkernsystemen zu lösen, verwendet jemalloc für jeden CPU-Kern einen eigenen isolierten Speicherverteilungsbereich, was eine lineare Skalierbarkeit mit der Anzahl der Threads ermöglicht.

Im Juni 2025 stellte der Projektautor die Wartung ein und setzte 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 Library ist in C geschrieben und wird unter der BSD-Lizenz vertrieben.

Unter den Änderungen:

  • Die Funktion pvalloc wurde implementiert, die nützlich sein kann, um den libc-Speicherallokator zu ersetzen.
  • In Debug-Builds ist der Modus zur Erkennung doppelt ausgeführter free()-Funktionen aktiviert. Um die Stack-Größe zu konfigurieren, innerhalb der das Scannen stattfindet, wurde der Parameter debug_double_free_max_scan hinzugefügt.
  • Eine Build-Option "—enable-pageid" wurde hinzugefügt, um Tags beim Mappen von Speicher zu setzen, wobei prctl mit dem Flag PR_SET_VMA verwendet wird. Nach der Aktivierung kann das Mapping über /proc//maps überwacht werden.
  • Der 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 im Code die normale Funktion getenv() anstelle der geschützten secure_getenv() zu verwenden.
  • Eine Build-Option "—disable-dss" wurde hinzugefügt, um die Verwendung der Funktion sbrk() zu deaktivieren.
  • Der Parameter "tcache_ncached_max" wurde hinzugefügt, um die Anzahl der Elemente im Thread-Cache zu beschränken.
  • Der 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 madvise zu beschränken.
  • Der Parameter „disable_large_size_classes“ wurde hinzugefügt, um den neuen Algorithmus zur Berechnung der zugewiesenen Speichergröße zu deaktivieren, der die Overhead-Kosten bei der Zuweisung von Blöcken mit mehr als 4 Seiten Speicher verringert.
  • Das Tool mallctl hat die Optionen opt.prof_bt_max, arena.<i>.name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage und approximate_stats.active erhalten.

Quelle: opennet.ru

60GB SSD 8Gb DDR4