Google hat eine neue Version des Speichermanagement-Systems TCMalloc veröffentlicht

Google präsentierte neue Version des Speichermanagement-Systems TCMalloc, das in vielen internen Projekten von Google verwendet wird. Der TCMalloc-Code ist in C++ geschrieben und wird unter der GPLv3-Lizenz bereitgestellt. unter der Apache-Lizenz veröffentlicht. Für die Verwendung ist ein Compiler erforderlich, der C++17 für C++ und C11 für C (gcc 9.2+ oder clang 9.0+) unterstützt. Aus den Betriebssystemen wird unterstützt wird nur Linux (x86, PPC) unterstützt.

Bemerkenswert ist, dass seit 2005 eine weitere Variante von tcmalloc existiert, die bereitgestellt wurde im Rahmen des Pakets gperftools (Google Performance Tools). Dies sind zwei unterschiedliche Projekte mit gemeinsamen Wurzeln. Das neue TCMalloc stellt eher einen Versuch dar, den Code aktueller interner Entwicklungen von Google zu öffnen, ist jedoch derzeit nicht auf die Bereitstellung eines stabilen ABI und die Unterstützung eines breiten Spektrums an Betriebssystemen ausgerichtet. Die Wartung des alten tcmalloc aus gperftools wird fortgesetzt, aber neue Funktionen wie das Binden des Caches an die CPU sind nicht vorgesehen.

TCMalloc ist eine Implementierung der C-Funktion malloc() und des C++ Operators «new», die für hohe Leistung und die Nutzung in multithreaded Anwendungen optimiert wurde. TCMalloc bietet zudem Möglichkeiten zur Introspektion und Profilierung, sodass Anwendungen detaillierte Informationen über die Speichernutzung im Heap erhalten können. Der Code nutzt Optimierungen, die auf den modernen Möglichkeiten der C++-Sprache basieren, wie
den delete-Operator mit Größenangabe aus C++14 und die Speicherzuweisung mit Ausrichtung aus C++17.

TCMalloc besteht aus drei Komponenten: einem Frontend mit Cache für schnelle Zuordnung und Freigabe von Speicher, einer Schicht zum Befüllen des Frontend-Caches und einem Backend, das Operationen wie das Abrufen von Speicher vom Betriebssystem, das Verwalten großer Mengen ungenutzten Speichers und das Zurückgeben überflüssiger Speicher an das OS durchführt. Der Cache ist von Sperren befreit und arbeitet an den CPU-Kernen, kann jedoch auf ein threadgebundenes Cache-Modell zurückgreifen, wenn die erforderliche Funktionalität im Betriebssystem-Kernel nicht verfügbar ist (die Bindung des Caches an die CPU funktioniert nur in aktuellen Linux-Kerneln). Das Backend unterstützt sowohl den Umgang mit normalen Speicherseiten als auch mit großen Seiten (hugepages).

Google hat eine neue Version des Speichermanagement-Systems TCMalloc veröffentlicht

Hauptmerkmale von TCMalloc:

  • Schnelle Speicherzuweisung und -freigabe unter Verwendung von Caching. Die meisten Speicherzuweisungsoperationen erfordern keine Sperren, was eine gute Skalierbarkeit für Multithread-Anwendungen mit hohem Parallelismus bei der Ausführung von Aufgaben gewährleistet;
  • Flexible Speichernutzung, die es ermöglicht, freigegebene Speicherbereiche für Objekte unterschiedlicher Größe erneut zu verwenden oder Speicher an das Betriebssystem zurückzugeben;
  • Geringe Overhead-Kosten pro Objekt durch die Zuweisung von Objekten gleicher Größe in Seiten und eine effiziente Darstellung kleiner Objekte. Logische Seiten mit den Größen 4KiB, 8KiB, 32KiB und 256KiB werden unterstützt. Zum Beispiel wird bei der Anforderung von 512 Byte Speicher eine gesamte 4KiB-Seite für 512-Byte-Objekte zugewiesen, auf der 8 solcher Objekte Platz finden;
  • Feinabstimmung durch Festlegung der Cache-Größe und der Parameter zur Intensität der Rückgabe von Speicher an das Betriebssystem möglich;
  • Bereitstellung detaillierter Informationen zur Analyse der Speichernutzung durch die Anwendung.

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