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

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

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

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

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

Високата производитСлност сС постига основно Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° сСгмСнтиранС Π½Π° списъка със свободни Π±Π»ΠΎΠΊΠΎΠ²Π΅ (free list sharding). ВмСсто Π΅Π΄ΠΈΠ½ голям списък, Π² mimalloc сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° сСрия ΠΎΡ‚ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ, всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΠ²ΡŠΡ€Π·Π²Π° с страница ΠΏΠ°ΠΌΠ΅Ρ‚. Вакъв ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ намалява фрагмСнтацията ΠΈ повишава локализацията Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. Под страницата ΠΏΠ°ΠΌΠ΅Ρ‚ сС Ρ€Π°Π·Π±ΠΈΡ€Π° Π³Ρ€ΡƒΠΏΠ° ΠΎΡ‚ Π±Π»ΠΈΠ·ΠΊΠΈ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠΎΠ²Π΅. На 64-Π±ΠΈΡ‚ΠΎΠ²ΠΈ систСми Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ 64 ΠšΠ‘. Π’ случай, Ρ‡Π΅ Π² страницата Π½Π΅ остават Π·Π°Π΅Ρ‚ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅, тя сС освобоТдава напълно с Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π΄Π° сС намалят Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ фрагмСнтацията Π² Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ.

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

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

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

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster