Google titun ti ikede iranti pinpin eto , eyi ti o ti lo ni ọpọlọpọ awọn ti abẹnu Google ise agbese. Awọn koodu TCMalloc ti kọ sinu C ++ ati labẹ iwe-aṣẹ Apache. Lati ṣiṣẹ, o nilo alakojo ti o ṣe atilẹyin C++17 fun ede C++, ati C11 fun ede C (gcc 9.2+ tabi clang 9.0+). Lati awọn ọna ṣiṣe Nikan Linux (x86, PPC).
O jẹ akiyesi pe lati ọdun 2005 iyatọ miiran ti tcmalloc ti wa, eyiti to wa ninu package (Google Performance Tools). Meji niyen ise agbese pẹlu wọpọ wá. TCMalloc tuntun jẹ diẹ sii ti igbiyanju lati ṣii orisun Google awọn idagbasoke inu lọwọlọwọ, ṣugbọn ko tii ni ifọkansi lati pese ABI iduroṣinṣin ati atilẹyin fun ọpọlọpọ awọn ọna ṣiṣe. tcmalloc atijọ lati gperftools yoo tẹsiwaju lati wa ni itọju, ṣugbọn awọn ẹya tuntun, gẹgẹ bi abuda kaṣe si Sipiyu, ko gbero lati gbe si ọdọ rẹ.
TCMalloc pẹlu imuse ti C malloc iṣẹ () ati oniṣẹ C ++ "tuntun", iṣapeye fun iṣẹ giga ati lilo ninu awọn ohun elo olona-asapo. TCMalloc tun pese ifarabalẹ ati awọn agbara profaili ti o gba ohun elo laaye lati gba alaye alaye nipa lilo iranti lori òkiti. Koodu naa nlo awọn iṣapeye ti o da lori awọn ẹya ode oni ti ede C ++, bii
pa oniṣẹ ẹrọ pẹlu lati C ++ 14 ati iranti ipin pẹlu lati C ++17.
TCMalloc из трёх компонентов: фронтэнда с кэшем для быстрого выделения и освобождения памяти, прослойки для наполнения кэша фронтэнда и бэкенда, выполняющего такие операции, как получение памяти от операционной системы, управления большими кусками неиспользованной памяти и возвращение лишней памяти обратно в ОС. Кэш избавлен от блокировок и работает в привязке к ядрам CPU, но откатывается на модель кэширования в привязке к потокам в случае отсутствия необходимой функциональности в ядре ОС (привязка кэша к CPU работает только в свежих ядрах Linux). Бэкенд поддерживает работу как с обычными страницами памяти, так и со страницами увеличенного размера (hugepage).
Awọn ẹya akọkọ ti TCMalloc:
- Pipin iyara ati ipinfunni iranti nipa lilo caching. Pupọ awọn ipin iranti ko nilo titiipa, eyi ti o pese scalability ti o dara fun concurrency gíga, awọn ohun elo ti o ni ila-pupọ;
- Lilo iranti iyipada, gbigba ọ laaye lati tun lo awọn agbegbe iranti ti o ni ominira fun awọn nkan ti awọn titobi oriṣiriṣi tabi pada iranti pada si ẹrọ ṣiṣe;
- Kekere fun ohun-elo ni oke nipasẹ pipin awọn oju-iwe ohun ti o ni iwọn dọgba ati aṣoju awọn ohun kekere daradara daradara. Awọn oju-iwe oye ti titobi 4KiB, 8KiB, 32KiB ati 256KiB ni atilẹyin. Fun apẹẹrẹ, nigbati o ba n beere fun awọn bulọọki ti awọn baiti 512 ti iranti, gbogbo oju-iwe 4KiB kan yoo pin fun awọn nkan 512-baiti, eyiti o le gba awọn nkan bii 8;
- Atunse ti o dara ṣee ṣe nipa ṣiṣe ipinnu iwọn kaṣe ati awọn ayeraye fun kikankikan ti iranti pada si OS;
- Pese alaye alaye lati ṣe itupalẹ lilo iranti ohun elo.
orisun: opennet.ru
