Google ka publikuar një variant të ri të sistemit të shpërndarjes së memories TCMalloc

Kompania Google ka prezantuar variant i ri i sistemit të shpërndarjes së memories TCMalloc, i cili përdoret në shumë projekte të brendshme të Google. Kodi i TCMalloc është shkruar në C++ dhe shpërndahet licencohet sipas licencës Apache. Për funksionim kërkohet një kompajler me mbështetje për C++17 për gjuhën C++ dhe C11 për gjuhën C (gcc 9.2+ ose clang 9.0+). Nga sistemet operative mbështetet mbështetet vetëm Linux (x86, PPC).

Vlen të theksohet se që nga viti 2005 ekziston edhe një variant tjetër i tcmalloc, i cili është shpërndarë si pjesë e paketës gperftools (Google Performance Tools). Këto janë dy projekte të ndryshme me rrënjë të përbashkëta. TCMalloc i ri është më tepër një përpjekje për të hapur kodin e zhvillimeve aktuale të brendshme të Google, por për momentin nuk synon të ofrojë një ABI të qëndrueshëm dhe mbështetje për një gamë të gjerë sistemesh operative. Mirëmbajtja e tcmalloc-it të vjetër nga gperftools do të vazhdojë, por nuk planifikohet transferimi i veçorive të reja në të, si p.sh. lidhja e cache me CPU.

TCMalloc pĂ«rfshin implementimin e funksionit C malloc() dhe operatorit C++ “new”, tĂ« optimizuar pĂ«r tĂ« arritur performancĂ« tĂ« lartĂ« dhe pĂ«r pĂ«rdorim nĂ« aplikacione shumĂ«fijĂ«she. TCMalloc gjithashtu ofron mundĂ«si introspektimi dhe profilizimi, qĂ« i lejojnĂ« aplikacionit tĂ« marrĂ« informacion tĂ« detajuar pĂ«r pĂ«rdorimin e memories nĂ« heap. NĂ« kod pĂ«rdoren optimizime tĂ« bazuara nĂ« veçoritĂ« moderne tĂ« gjuhĂ«s C++, si
operatori delete me specifikim të madhësisë nga C++14 dhe alokimi i memories me rreshtim nga C++17.

TCMalloc përbëhet nga tre komponentë: frontend me cache për alokim dhe çlirim të shpejtë të memories, një shtresë ndërmjetëse për mbushjen e cache-it të frontend-it dhe backend-in, që kryen operacione të tilla si marrja e memories nga sistemi operativ, menaxhimi i blloqeve të mëdha të memories së papërdorur dhe kthimi i memories së tepërt përsëri te OS. Cache është pa bllokime dhe funksionon i lidhur me bërthamat e CPU, por kthehet te modeli i cache-it të lidhur me fijet nëse mungon funksionaliteti i nevojshëm në kernelin e OS (lidhja e cache me CPU funksionon vetëm në kernelët e rinj të Linux). Backend mbështet punën si me faqet e zakonshme të memories, ashtu edhe me faqet me madhësi të rritur (hugepage).

Google ka publikuar një variant të ri të sistemit të shpërndarjes së memories TCMalloc

Veçoritë kryesore të TCMalloc:

  • Ndarje dhe çlirim i shpejtĂ« i memories me pĂ«rdorimin e caching. Shumica e operacioneve tĂ« ndarjes sĂ« memories nuk kĂ«rkojnĂ« bllokim, gjĂ« qĂ« siguron shkallĂ«zim tĂ« mirĂ« pĂ«r aplikacionet shumĂ«fijore me nivel tĂ« lartĂ« paralelizmi tĂ« ngarkesave;
  • PĂ«rdorim fleksibĂ«l i memories, qĂ« lejon ripĂ«rdorimin e zonave tĂ« liruara tĂ« memories pĂ«r objekte me madhĂ«si tĂ« ndryshme ose kthimin e memories te sistemi operativ;
  • Shpenzime tĂ« ulĂ«ta shtesĂ« pĂ«r çdo objekt falĂ« ndarjes sĂ« faqeve pĂ«r objekte me tĂ« njĂ«jtĂ«n madhĂ«si dhe paraqitjes efikase tĂ« objekteve tĂ« vogla. MbĂ«shteten faqe logjike me madhĂ«si 4KiB, 8KiB, 32KiB dhe 256KiB. PĂ«r shembull, kur kĂ«rkohen blloqe memorieje prej 512 bajtĂ«sh, do tĂ« ndahet njĂ« faqe e plotĂ« 4KiB pĂ«r objekte 512-bajtĂ«she, nĂ« tĂ« cilĂ«n mund tĂ« vendosen 8 objekte tĂ« tilla;
  • MundĂ«sohet konfigurim i imĂ«t pĂ«rmes pĂ«rcaktimit tĂ« madhĂ«sisĂ« sĂ« cache dhe parametrave tĂ« intensitetit tĂ« kthimit tĂ« memories nĂ« OS;
  • Ofrimi i informacionit tĂ« detajuar pĂ«r analizĂ«n e pĂ«rdorimit tĂ« memories nga aplikacioni.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster