Google hat eine neue Version des Speichermanagementsystems TCMalloc veröffentlicht.

Das Unternehmen Google hat Neue Version des Speicherverteilungssystems TCMalloc, das in vielen internen Projekten von Google verwendet wird. Der TCMalloc-Code ist in C++ geschrieben und wird verbreitet unterliegt der Apache-Lizenz. Für den Betrieb wird ein Compiler benötigt, der C++17 für die Programmiersprache C++ und C11 für die Programmiersprache C (gcc 9.2+ oder clang 9.0+) unterstützt. Aus den Betriebssystemen wird unterstützt nur Linux (x86, PPC).

Bemerkenswert ist, dass seit 2005 eine weitere Version von tcmalloc existiert, die geliefert Teil des Pakets gperftools ist (Google Performance Tools). Dies sind zwei verschiedene Projekte mit gemeinsamen Wurzeln. Das neue TCMalloc ist eher der Versuch, den Code aktueller interner Entwicklungen von Google zu öffnen, ist jedoch derzeit nicht darauf ausgelegt, eine stabile ABI bereitzustellen oder eine breite Palette von Betriebssystemen zu unterstützen. Die Pflege des alten tcmalloc aus gperftools wird fortgesetzt, aber neue Funktionen, wie die Bindung des Caches an die CPU, werden nicht dorthin übertragen.

TCMalloc umfasst die Implementierung der C-Funktion malloc() und des C++-Operators „new“, die optimiert sind, um hohe Leistung zu erreichen und in Multithread-Anwendungen eingesetzt zu werden. TCMalloc bietet auch Funktionen zur Introspektion und Profilerstellung, die es der Anwendung ermöglichen, detaillierte Informationen über die Speichernutzung im Heap zu erhalten. Der Code nutzt Optimierungen basierend auf modernen Möglichkeiten der Programmiersprache C++, wie
den Operator delete mit Angabe der Größe aus C++14 und die Speicherzuweisung mit Ausrichtung aus C++17.

TCMalloc besteht besteht aus drei Komponenten: einem Frontend mit Cache für schnelles Zuweisen und Freigeben von Speicher, einer Schicht zum Auffüllen des Frontend-Caches und dem Backend, das solche Operationen wie das Abrufen von Speicher vom Betriebssystem, das Management großer Stücke ungenutzten Speichers und das Zurückgeben überschüssigen Speichers an das Betriebssystem durchführt. Der Cache ist frei von Sperren und arbeitet gebunden an CPU-Kerne, fällt jedoch bei fehlender erforderlicher Funktionalität im Betriebssystemkern auf ein Thread-gebundenes Caching-Modell zurück (die Cachebindung an die CPU funktioniert nur in neueren Linux-Kernen). Das Backend unterstützt sowohl die Arbeit mit normalen Speicherseiten als auch mit Seiten vergrößerter Größe (hugepage).

Google hat eine neue Version des Speichermanagementsystems TCMalloc veröffentlicht.

Die Hauptmerkmale von TCMalloc:

  • Schnelle Zuweisung und Freigabe von Speicher durch Caching. Die meisten Speicherzuweisungen erfordern keine Sperrungen, was eine gute Skalierbarkeit für multithreaded Anwendungen mit hoher Parallelität ermöglicht;
  • Flexible Nutzung von Speicher, die es ermöglicht, freigegebene Speicherbereiche für Objekte unterschiedlicher Größe erneut zu verwenden oder den Speicher an das Betriebssystem zurückzugeben;
  • Niedrige Overhead-Kosten pro Objekt durch Zuweisung von Seiten mit einheitlicher Größe und effektive Darstellung kleiner Objekte. Logische Seiten mit einer Größe von 4 KiB, 8 KiB, 32 KiB und 256 KiB werden unterstützt. Beispielsweise wird bei der Anforderung von Blöcken mit 512 Byte Speicher eine ganze 4 KiB-Seite für 512-Byte-Objekte zugewiesen, die Platz für 8 solcher Objekte bietet;
  • Feinabstimmung möglich durch Festlegung der Cachegröße und der Rückgabeintensitätsparameter des Speichers an das OS;
  • Bereitstellung detaillierter Informationen zur Analyse der Speichernutzung durch die Anwendung.

Quelle: opennet.ru

60GB SSD 8Gb DDR4