Google heeft een nieuwe versie van het geheugenbeheersysteem TCMalloc gepubliceerd

Google heeft geĆÆntroduceerd nieuwe versie van het geheugenbeheersysteem TCMalloc, dat in veel interne projecten van Google wordt gebruikt. De code van TCMalloc is geschreven in C++ en wordt verspreid onder Apache-licentie. Een compiler die C++17 voor C++ en C11 voor C vereist (gcc 9.2+ of clang 9.0+) is nodig. Van de besturingssystemen ondersteunt is alleen Linux (x86, PPC) ondersteund.

Het is opmerkelijk dat er sinds 2005 nog een versie van tcmalloc bestaat, die beschikbaar deel uitmaakt van het pakket gperftools (Google Performance Tools). Dit zijn twee verschillende projecten die gemeenschappelijke wortels hebben. De nieuwe TCMalloc is eerder een poging om de code van de huidige interne ontwikkelingen van Google open te stellen, maar is nog niet gericht op het bieden van een stabiele ABI en ondersteuning voor een breed scala aan besturingssystemen. Het onderhoud van de oude tcmalloc uit gperftools zal worden voortgezet, maar nieuwe mogelijkheden, zoals het koppelen van de cache aan de CPU, zullen niet worden overgezet.

TCMalloc omvat een implementatie van de C-functie malloc() en de C++-operator 'new', geoptimaliseerd voor hoge prestaties en gebruik in multithreaded applicaties. TCMalloc biedt ook introspectie- en profileringsmogelijkheden, waarmee de applicatie gedetailleerde informatie over het geheugenbeheer in de heap kan verkrijgen. In de code worden optimalisaties toegepast op basis van moderne mogelijkheden van de C++-taal, zoals
de delete-operator met grootteopgave uit C++14 en geheugenallocatie met uitlijning uit C++17.

TCMalloc bestaat Het bestaat uit drie componenten: een frontend met een cache voor snelle allocatie en vrijgave van geheugen, een laag voor het vullen van de frontend-cache en een backend die operaties uitvoert zoals het verkrijgen van geheugen van het besturingssysteem, het beheren van grote ongebruikte geheugenblokken en het teruggave van overtollig geheugen aan het OS. De cache is vrij van locks en werkt gekoppeld aan CPU-kernen, maar schakelt terug naar een thread-gebaseerd cachemodel als de benodigde functionaliteit in de OS-kernel ontbreekt (cachekoppeling aan de CPU werkt alleen in recente Linux-kernen). De backend ondersteunt zowel reguliere gehepages als grotere pagina's (hugepage).

Google heeft een nieuwe versie van het geheugenbeheersysteem TCMalloc gepubliceerd

Belangrijkste kenmerken van TCMalloc:

  • Snelle toewijzing en vrijgave van geheugen met caching. De meeste geheugenallocatie-operaties vereisen geen vergrendeling, wat zorgt voor goede schaalbaarheid voor multi-threaded applicaties met hoge werkparallelisatie;
  • Flexibel geheugengebruik, waarmee vrijgegeven geheugensecties kunnen worden hergebruikt voor objecten van verschillende groottes of geheugengebruik kan worden teruggegeven aan het besturingssysteem;
  • Lage overhead per object door pagina's van objecten van dezelfde grootte toe te wijzen en efficiĆ«nte representatie van kleine objecten. Ondersteunde logische pagina's zijn 4KiB, 8KiB, 32KiB en 256KiB. Bijvoorbeeld, wanneer er blokken van 512 bytes geheugen worden aangevraagd, wordt er een volledige pagina van 4KiB toegewezen voor 512-byte objecten, waarin 8 van zulke objecten passen;
  • Fijne afstemming mogelijk via definities van de cachegrootte en parameters voor de intensiteit van geheugenretour in het besturingssysteem;
  • Gedetailleerde informatie verstrekken voor analyse van het geheugengebruik door de applicatie.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster