Google zverejnil novú verziu systému prideľovania pamäte TCMalloc

Google представила nová verzia systému distribúcie pamäte TCMalloc, ktorý sa používa v mnohých interných projektoch Google. Kód TCMalloc je napísaný v C++ a distribuovaný pod licenciou Apache. Na fungovanie potrebujete kompilátor, ktorý podporuje C++17 pre jazyk C++ a C11 pre jazyk C (gcc 9.2+ alebo clang 9.0+). Z operačných systémov podporovaný iba Linux (x86, PPC).

Je pozoruhodné, že od roku 2005 existuje ďalší variant tcmalloc, ktorý dodávané súčasťou balenia gperftools (Google Performance Tools). To sú dve разных projekty so spoločnými koreňmi. Nový TCMalloc je skôr pokusom o open source aktuálny interný vývoj Google, ale zatiaľ nie je zameraný na poskytovanie stabilného ABI a podpory pre širokú škálu operačných systémov. Starý tcmalloc z gperftools sa bude aj naďalej udržiavať, no neplánujú sa doň prenášať nové funkcie, ako napríklad viazanie vyrovnávacej pamäte na CPU.

TCMalloc obsahuje implementáciu funkcie C malloc() a operátora C++ „new“, optimalizovaný pre vysoký výkon a použitie vo viacvláknových aplikáciách. TCMalloc tiež poskytuje možnosti introspekcie a profilovania, ktoré aplikácii umožňujú získať podrobné informácie o využití pamäte na halde. Kód využíva optimalizácie založené na moderných vlastnostiach jazyka C++, ako napr
vymazať operátor s s uvedením veľkosti z C++14 a pridelenie pamäte s vyrovnávanie z C++ 17.

TCMalloc pozostáva z из трёх компонентов: фронтэнда с кэшем для быстрого выделения и освобождения памяти, прослойки для наполнения кэша фронтэнда и бэкенда, выполняющего такие операции, как получение памяти от операционной системы, управления большими кусками неиспользованной памяти и возвращение лишней памяти обратно в ОС. Кэш избавлен от блокировок и работает в привязке к ядрам CPU, но откатывается на модель кэширования в привязке к потокам в случае отсутствия необходимой функциональности в ядре ОС (привязка кэша к CPU работает только в свежих ядрах Linux). Бэкенд поддерживает работу как с обычными страницами памяти, так и со страницами увеличенного размера (hugepage).

 Google zverejnil novú verziu systému prideľovania pamäte TCMalloc

Hlavné vlastnosti TCMalloc:

  • Rýchla alokácia a uvoľnenie pamäte pomocou vyrovnávacej pamäte. Väčšina alokácií pamäte nevyžaduje uzamykanie, čo poskytuje dobrú škálovateľnosť pre vysoko súbežné aplikácie s viacerými vláknami;
  • Flexibilné využitie pamäte, ktoré vám umožní znovu použiť uvoľnené oblasti pamäte pre objekty rôznych veľkostí alebo vrátiť pamäť operačnému systému;
  • Nízka réžia na objekt vďaka prideleniu rovnako veľkých stránok objektov a efektívnemu znázorneniu malých objektov. Podporované sú logické stránky s veľkosťou 4KiB, 8KiB, 32KiB a 256KiB. Napríklad, keď požadujete bloky s veľkosťou 512 bajtov pamäte, celá stránka s veľkosťou 4KiB bude alokovaná pre 512-bajtové objekty, ktoré môžu obsahovať 8 takýchto objektov;
  • Jemné doladenie je možné určením veľkosti vyrovnávacej pamäte a parametrov intenzity návratu pamäte do operačného systému;
  • Poskytuje podrobné informácie na analýzu využitia pamäte aplikácie.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster