Google har offentliggjort en ny version af hukommelsesfordelingssystemet TCMalloc

Google præsenterede ny variant af hukommelsesfordelingssystemet TCMalloc, som bruges i mange interne projekter hos Google. TCMalloc-koden er skrevet i C++ og distribueres under Apache-licensen. For at kunne arbejde kræves en compiler, der understøtter C++17 til C++ og C11 til C (gcc 9.2+ eller clang 9.0+). Af operativsystemer understøttes er kun Linux (x86, PPC).

Bemærkelsesværdigt er det, at siden 2005 har der eksisteret endnu en variant af tcmalloc, som provided er en del af pakken gperftools (Google Performance Tools). Disse er to forskellige projekter med fælles rødder. Den nye TCMalloc er snarere et forsøg på at åbne op for koden fra Googles aktuelle interne udviklinger, men den er endnu ikke rettet mod at tilbyde et stabilt ABI og støtte til et bredt udvalg af operativsystemer. Vedligeholdelsen af den gamle tcmalloc fra gperftools vil fortsætte, men nye funktioner såsom cachebinding til CPU er ikke planlagt til at blive overført.

TCMalloc inkluderer implementeringen af C-funktionen malloc() og C++-operatøren «new», optimeret til at opnå høj ydeevne og anvendelse i multitrådede applikationer. TCMalloc giver også muligheder for introspektion og profiling, der giver applikationen detaljerede oplysninger om hukommelsesforbruget i bunken. Koden anvender optimeringer baseret på moderne muligheder i C++, såsom
delete-operatoren med angivelse af størrelsen fra C++14 og hukommelsesallokering med justering fra C++17.

TCMalloc består af tre komponenter: frontenden med cache til hurtig tildeling og frigivelse af hukommelse, et lag til at fylde front-end cachen og en backend, der udfører operationer som at få hukommelse fra operativsystemet, håndtering af store mængder ubrugt hukommelse og returnering af overskydende hukommelse til OS. Cachen er fri for låsning og arbejder bundet til CPU-kernerne, men falder tilbage på en trådforbundet cachemodel i tilfælde af mangel på nødvendig funktionalitet i OS-kernen (cachebinding til CPU fungerer kun i nyere Linux-kerneler). Backend'en understøtter arbejdet med både almindelige hukommelsessider og sider med forstørret størrelse (hugepage).

Google har offentliggjort en ny version af hukommelsesfordelingssystemet TCMalloc

Hovedtræk ved TCMalloc:

  • Hurtig tildeling og frigivelse af hukommelse ved hjælp af caching. De fleste hukommelsestildelingsoperationer kræver ikke låsning, hvilket sikrer god skalerbarhed for multitrådede applikationer med høj grad af parallel udførelse;
  • Fleksibel hukommelsesbrug, der gør det muligt at genbruge frigivne hukommelsesområder til objekter af forskellig størrelse eller returnere hukommelsen til operativsystemet;
  • Lave overheadomkostninger pr. objekt gennem tildeling af sideobjekter af ens størrelse og effektiv repræsentation af små objekter. Logiske sider understøttes med størrelser på 4KiB, 8KiB, 32KiB og 256KiB. For eksempel, når der anmodes om blokke på 512 byte hukommelse, vil der blive tildelt en hel 4KiB-side til 512-byte objekter, hvorpå 8 sådanne objekter kan være plads;
  • Mulighed for finjustering gennem definitioner af cache størrelse og parametre for intensitet af hukommelses tilbagevenden til OS;
  • Levering af detaljerede oplysninger til analyse af hukommelsesbrug af applikationen.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster