Microsoft ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΊΠΎΠ΄Π° Π·Π° систСмата Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° mimalloc

Microsoft ΠΎΡ‚Π²ΠΎΡ€ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° Π½Π° MIT mmalloc ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° систСма Π·Π° разпрСдСлянС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚, ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ създадСна Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС Π½Π° Π΅Π·ΠΈΡ†ΠΈ Кока ΠΈ ОблСгни. Mimalloc Π΅ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Π½ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² стандартни прилоТСния, Π±Π΅Π· Π΄Π° промСня тСхния ΠΊΠΎΠ΄ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° дСйства ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π΅Π½ замСститСл Π½Π° функцията malloc. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Windows, macOS, Linux, BSD ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ систСми.

ΠšΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° характСристика Π½Π° mimalloc Π΅ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° рСализация (ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ 3500 Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ висока производитСлност. IN ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ тСстовС mimalloc ΠΏΡ€Π΅Π²ΡŠΠ·Ρ…ΠΎΠΆΠ΄Π° всички ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° разпрСдСлянС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ jemalloc, tcmalloc, snmalloc, rpmalloc ΠΈ ΡΡŠΠΊΡ€ΠΎΠ²ΠΈΡ‰Π΅.

Π—Π° Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ СфСктивността, Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ стандартни тСстовС Π’ някои тСстовС mimalloc Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π· ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ систСми; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² тСста Π·Π° миграция Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ нишки, mimalloc сС ΠΎΠΊΠ°Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 2.5 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π· ΠΎΡ‚ tcmalloc ΠΈ jemalloc. Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ тСстовС сС наблюдава ΠΈ ΠΏΠΎ-ниска консумация Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚; Π² някои ситуации консумацията Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π½Π°ΠΌΠ°Π»Π΅Π½Π° с 25%.

Microsoft ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΊΠΎΠ΄Π° Π·Π° систСмата Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° mimalloc

Високата производитСлност сС постига Π³Π»Π°Π²Π½ΠΎ Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π½ΠΎ раздСлянС Π½Π° ΡΠΏΠΈΡΡŠΡ†ΠΈ. ВмСсто Π΅Π΄ΠΈΠ½ голям списък, mimalloc ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сСрия ΠΎΡ‚ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ, всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Π΅ ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½ със страница ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ намалява фрагмСнтацията ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° локалността Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° с ΠΏΠ°ΠΌΠ΅Ρ‚ Π΅ Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π±Π»ΠΎΠΊΠΎΠ²Π΅ с ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€. ΠŸΡ€ΠΈ 64-Π±ΠΈΡ‚ΠΎΠ²ΠΈ систСми Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ 64 KB. Ако Π² страницата Π½Π΅ останат Π·Π°Π΅Ρ‚ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅, тя сС освобоТдава напълно ΠΈ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° сС Π²Ρ€ΡŠΡ‰Π° към ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, ΠΊΠΎΠ΅Ρ‚ΠΎ намалява Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ фрагмСнтацията ΠΏΡ€ΠΈ дълго Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ ΠΈΠ»ΠΈ Π·Π°Ρ€Π΅Π΄Π΅Π½Π° Π·Π° Π²Π΅Ρ‡Π΅ ΡΡŠΠ±Ρ€Π°Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° (β€œLD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° прСдоставя ΡΡŠΡ‰ΠΎ API Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° функционалност във Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Ρ„ΠΈΠ½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° освобоТдаванС Π½Π° ΠΌΡŠΡ€Π·Π΅Π»ΠΈΠ²Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Ρ‰ΠΈ сС броячи Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΈ Π΄Π°Π½Π½ΠΈ. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° сС ΡΡŠΠ·Π΄Π°Π΄Π°Ρ‚ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ няколко β€žΠΊΡƒΠΏΡ‡ΠΈΠ½ΠΈβ€œ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° разпространСниС Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ области Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ възмоТно Π΄Π° освободитС ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π° изцяло, Π±Π΅Π· Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‚Π΅ ΠΈ ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Π΄Π° освобоТдаватС ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅, поставСни Π² нСя.

Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° сС ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π² бСзопасСн Ρ€Π΅ΠΆΠΈΠΌ, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ спСциални страници Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° (guard-pages) сС замСстват Π½Π° Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π±Π»ΠΎΠΊΠ° ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° рандомизация Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΈ ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΠΏΠΈΡΡŠΡ†ΠΈ с освободСни Π±Π»ΠΎΠΊΠΎΠ²Π΅. Π’Π°ΠΊΠΈΠ²Π° ΠΌΠ΅Ρ€ΠΊΠΈ позволяват Π΄Π° сС Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚ Π½Π°ΠΉ-чСсто срСщанитС Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½ΠΈΡ Π½Π° Π±ΡƒΡ„Π΅Ρ€ΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ бСзопасСн Ρ€Π΅ΠΆΠΈΠΌ, производитСлността намалява с ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ 3%.

Π‘Ρ€Π΅Π΄ характСристикитС Π½Π° mimalloc сС отбСлязва ΡΡŠΡ‰ΠΎ, Ρ‡Π΅ Ρ‚ΠΎΠΉ Π½Π΅ Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π»ΠΈΠ² Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с ΠΏΠΎΠ΄ΡƒΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΡ€Π΅ΠΌΠ° ΠΏΠΎΡ€Π°Π΄ΠΈ голяма фрагмСнтация. Π’ Π½Π°ΠΉ-лошия случай ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° с 0.2% Π·Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° достигнС 16.7% Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚. Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ ΠΏΡ€ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ рСсурси, mimalloc ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° само Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€