Microsoft, mimalloc yaddaş ayırma sistemi üçün kodu açdı

Microsoft şirkəti MIT lisenziyası ilə kitabxana açıb mmalloc əvvəlcə dillərin işləmə vaxtı komponentləri üçün yaradılmış yaddaş ayırma sisteminin tətbiqlərindən Koka и Arıq. Mimalloc standart tətbiqlərdə kodlarını dəyişdirmədən istifadə üçün uyğunlaşdırılmışdır və malloc funksiyasının şəffaf əvəzedicisi kimi çıxış edə bilər. Windows, macOS, Linux, BSD və Unix-ə bənzər digər sistemlərdə işi dəstəkləyir.

Mimalloc-un əsas xüsusiyyəti onun kompakt tətbiqi (3500 kod sətirindən az) və çox yüksək performansdır. IN testlər aparılmışdır mimalloc bütün rəqib yaddaş ayırma kitabxanalarını, o cümlədən jemalloc, tcmalloc, snmalloc, rpmalloc и Yığın.

Performansı qiymətləndirmək üçün mövcud bir sıra standart testlər Bəzi testlərdə mimalloc digər sistemlərdən dəfələrlə sürətlidir; məsələn, müxtəlif mövzular arasında obyekt köçürmə testində mimalloc tcmalloc və jemalloc-dan 2.5 dəfədən çox sürətli olduğu ortaya çıxdı. Eyni zamanda, əksər testlərdə daha az yaddaş istehlakı da müşahidə olunur, bəzi hallarda yaddaş istehlakı 25% azaldıla bilər.

Microsoft, mimalloc yaddaş ayırma sistemi üçün kodu açdı

Yüksək performans əsasən pulsuz siyahı parçalanmasından istifadə etməklə əldə edilir. Bir böyük siyahı əvəzinə, mimalloc hər biri yaddaş səhifəsinə bağlanmış bir sıra kiçik siyahılardan istifadə edir. Bu yanaşma parçalanmanı azaldır və məlumatların yaddaşda yerləşməsini artırır. Yaddaş səhifəsi oxşar ölçülü blokların qruplaşdırılmış dəstidir. 64 bitlik sistemlərdə səhifə ölçüsü adətən 64 KB olur. Səhifədə heç bir işğal edilmiş blok qalmazsa, o, tamamilə boşaldılır və yaddaş əməliyyat sisteminə qaytarılır ki, bu da uzun müddət işləyən proqramlarda yaddaş xərclərini və parçalanmanı azaldır.

Kitabxana əlaqələndirmə mərhələsində daxil edilə bilər və ya artıq yığılmış proqram üçün yüklənə bilər (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Kitabxana da təmin edir API funksionallığın iş vaxtı və incə davranış nəzarətinə inteqrasiyası üçün, məsələn, tənbəl yaddaş buraxma işləyicilərini və monoton şəkildə artan istinad sayğaclarını birləşdirmək üçün. Tətbiqdə müxtəlif yaddaş sahələrində paylanması üçün bir neçə “yığın” yaratmaq və istifadə etmək mümkündür. Yığından keçmədən və içindəki obyektləri ayrıca boşaltmadan tamamilə azad etmək də mümkündür.

Kitabxananı təhlükəsiz rejimdə qurmaq mümkündür, burada blok sərhədlərində xüsusi yaddaş yoxlama səhifələri (qoruyucu səhifələr) əvəz olunur və blokların paylanmasının təsadüfiləşdirilməsi və azad edilmiş blokların siyahılarının şifrələnməsi istifadə olunur. Bu cür tədbirlər yığın əsaslı bufer daşqınlarını istismar etmək üçün ən ümumi üsulları bloklamağa imkan verir. Təhlükəsiz rejimi aktivləşdirdiyiniz zaman performans təxminən 3% azalır.

Mimallokun xüsusiyyətləri arasında böyük parçalanma səbəbindən şişkinlik problemlərinə həssas olmadığı da qeyd olunur. Ən pis ssenaridə yaddaş istehlakı metadata üçün 0.2% artır və paylanmış yaddaş üçün 16.7%-ə çata bilər. Resurslara daxil olan zaman münaqişələrin qarşısını almaq üçün mimalloc yalnız atom əməliyyatlarından istifadə edir.

Mənbə: opennet.ru

Добавить комментарий