Google avaldas uue versiooni mäluhaldussüsteemist TCMalloc

Google esituse uus versioon mäluhaldussüsteemist TCMalloc, mida kasutatakse paljude Google'i siseste projektide puhul. TCMalloci kood on kirjutatud C++ keeles ja GNU Üldine Avaliku litsentsi alusel. kliendi õigustega Apache litsentsi all. Tööks on vajalik C++17 tugi C++ keele kompilatorile ja C11 tugi C keelele (gcc 9.2+ või clang 9.0+). Toetatakse ainult Linuxi (x86, PPC). toetatakse Oluline on märkida, et alates 2005. aastast on olemas veel üks variant tcmalloc, mis

tarniti gperftools (Google Performance Tools) paketi koosseisus. Need on kaks projekti, mis omavad ühiseid juure. Uus TCMalloc on pigem katse avada Google'i praeguste sisemiste arenduste kood, kuid see ei ole praegu suunatud stabiilse ABI pakkumisele ja laia operatsioonisüsteemide spektri toetamisele. Vanema tcmalloci hooldust gperftoolsist jätkatakse, kuid uusi funktsioone, nagu CPU-le seotud vahemälu, selle kaudu edasi ei viida. (Google Performance Tools). Это два erinevaid проекта, имеющих общие корни. Новый TCMalloc является скорее попыткой открыть код актуальных внутренних наработок Google, но он пока не нацелен на предоставление стабильного ABI и поддержку широкого спектра операционных систем. Сопровождение старого tcmalloc из gperftools будет продолжено, но новые возможности, такие как привязка кэша к CPU, в него переносить не планируется.

TCMalloc sisaldab C-keele malloc() funktsiooni ja C++ operaatorit «new», mis on optimeeritud kõrge jõudluse ja mitme niidi rakenduste jaoks. TCMalloc pakub samuti introspektsiooni ja profiliseerimise võimalusi, mis võimaldavad rakendusel saada üksikasjalikku teavet mälu kasutamise kohta hunnikus. Koodis rakendatakse optimeerimisi, mis põhinevad kaasaegsetel C++ keelevõimalustel, nagu
operaator delete koos suuruse näitamisega C++14-st ja mälu eraldamine ületamisega C++17-st.

TCMalloc koosneb kolmast komponendist: esiküljest, mis kasutab vahemälu kiireks mälu eraldamiseks ja vabastamiseks, vahekihist esikülje vahemälu täitmiseks ja taustast, mis teostab selliseid toiminguid nagu mälu saamine operatsioonisüsteemilt, suurte kasutamata mälupulkade haldamine ja üleliigse mälu tagastamine OS-ile. Vahemälu on blokeeringutest vabastatud ja töötab CPU tuumadega seotud, kuid tagastatakse voogude põhjal töötava vahemälumudeli juurde, kui operatsioonisüsteemi tuumas puudub vajalik funktsionaalsus (vahemälu seondumine CPU-ga töötab ainult uusimates Linuxi tuumades). Taust toetab nii tavaliste mälulehekülgede kui ka suurendatud suurusega lehekülgede (hugepage) töötamist.

Google avaldas uue versiooni mäluhaldussüsteemist TCMalloc

TCMalloci põhijooned:

  • Kiire mälu eraldamine ja vabastamine vahemälu kasutamisega. Enamik mälu eraldamise toimingutest ei nõua lukustamist, mis tagab hea skaleeritavuse kõrge paralleelsusega multi-režiimsetele rakendustele;
  • Paindlik mälu kasutamine võimaldab taaskasutada vabastatud mälu alasid erineva suurusega objektide jaoks või tagastada mälu operatsioonisüsteemile;
  • Iga objekti madalad ülepea kulud tänu objekti suuruse lehekülgede eraldamisele ja väikeste objektide tõhusale esitusele. Toetatakse loogilisi lehekülgi suurustega 4KiB, 8KiB, 32KiB ja 256KiB. Näiteks, kui taotleda 512 baitise mälu blokeeringut, eraldatakse terve 4KiB leht 512-baitistele objektidele, kuhu mahtuda saab 8 sellist objekti;
  • Häälestamine on võimalik läbi vahemälu suuruse määratlemise ja mälu tagastamise intensiivsuse parameetrite seadistamise;
  • Täiendava teabe pakkumine rakenduse mälu kasutuse analüüsimiseks.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster