ΠœΠ°Ρ˜ΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΊΠΎΠ΄ΠΎΡ‚ Π·Π° систСмот Π·Π° распрСдСлба Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° mimalloc

ΠœΠ°Ρ˜ΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ ΠΎΡ‚Π²ΠΎΡ€ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° МИВ mmalloc ΠΎΠ΄ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° систСмот Π·Π° распрСдСлба Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° ΠΏΡ€Π²ΠΈΡ‡Π½ΠΎ создадСн Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° Ρ‚Ρ€Π°Π΅ΡšΠ΅ Π½Π° Ρ˜Π°Π·ΠΈΡ†ΠΈΡ‚Π΅ Кока ΠΈ Посно. Mimalloc Π΅ ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π²ΠΎ стандардни Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅Π½Π° Π½Π° Π½ΠΈΠ²Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄Π΅Ρ˜ΡΡ‚Π²ΡƒΠ²Π° ΠΊΠ°ΠΊΠΎ транспарСнтна Π·Π°ΠΌΠ΅Π½Π° Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° malloc. ΠŸΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Windows, macOS, Linux, BSD ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ систСми слични Π½Π° Unix.

ΠšΠ»ΡƒΡ‡Π½Π°Ρ‚Π° карактСристика Π½Π° mimalloc Π΅ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° (ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΎΠ΄ 3500 Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄) ΠΈ ΠΌΠ½ΠΎΠ³Ρƒ високи пСрформанси. Π’Πž Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ тСстови mimalloc Π³ΠΈ Π½Π°Π΄ΠΌΠΈΠ½Π° ситС конкурСнтски Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° распрСдСлба Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°, Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ jemalloc, tcmalloc, snmalloc, rpmalloc ΠΈ Π₯ΠΎΠ°Ρ€.

Π—Π° Π΄Π° сС ΠΎΡ†Π΅Π½ΠΈ пСрформанситС, Π·Π±ΠΈΡ€ Π½Π° постоСчки стандардни тСстови Π’ΠΎ Π½Π΅ΠΊΠΎΠΈ тСстови, mimalloc Π΅ ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠ°Ρ‚ΠΈ ΠΏΠΎΠ±Ρ€Π· ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ систСми; Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ тСстот Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ нишки, mimalloc сС ΠΏΠΎΠΊΠ°ΠΆΠ° Π΄Π΅ΠΊΠ° Π΅ повСќС ΠΎΠ΄ 2.5 ΠΏΠ°Ρ‚ΠΈ ΠΏΠΎΠ±Ρ€Π· ΠΎΠ΄ tcmalloc ΠΈ jemalloc. Π’ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅, Π²ΠΎ ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ тСстови, сС Π·Π°Π±Π΅Π»Π΅ΠΆΡƒΠ²Π° ΠΈ ΠΏΠΎΠΌΠ°Π»Π° ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°; Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ ситуации, ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ°Ρ‚Π° Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ Π·Π° 25%.

ΠœΠ°Ρ˜ΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΊΠΎΠ΄ΠΎΡ‚ Π·Π° систСмот Π·Π° распрСдСлба Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° mimalloc

ВисокитС пСрформанси сС постигнуваат Π³Π»Π°Π²Π½ΠΎ ΠΏΡ€Π΅ΠΊΡƒ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ΡΠΏΠΎΠ΄Π΅Π»ΡƒΠ²Π°ΡšΠ΅ Π½Π° бСсплатни списоци. НамСсто Π΅Π΄Π½Π° Π³ΠΎΠ»Π΅ΠΌΠ° листа, mimalloc користи ΡΠ΅Ρ€ΠΈΡ˜Π° ΠΏΠΎΠΌΠ°Π»ΠΈ списоци, ΠΎΠ΄ ΠΊΠΎΠΈ сСкоја Π΅ Π²Ρ€Π·Π°Π½Π° Π·Π° мСмориска страница. Овој пристап ја Π½Π°ΠΌΠ°Π»ΡƒΠ²Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ ја Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π° Π»ΠΎΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°. ΠœΠ΅ΠΌΠΎΡ€ΠΈΡΠΊΠ°Ρ‚Π° страница Π΅ Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½ сСт Π½Π° Π±Π»ΠΎΠΊΠΎΠ²ΠΈ со слична Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°. На 64-Π±ΠΈΡ‚Π½ΠΈ систСми, Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°Ρ‚Π° Π½Π° страницата Π΅ ΠΎΠ±ΠΈΡ‡Π½ΠΎ 64 KB. Ако Π½Π΅ останат ΠΎΠΊΡƒΠΏΠΈΡ€Π°Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²ΠΈ Π½Π° страницата, Ρ‚Π°Π° цСлосно сС ослободува ΠΈ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° сС Π²Ρ€Π°ΡœΠ° Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈΠΎΡ‚ систСм, ΡˆΡ‚ΠΎ Π³ΠΈ Π½Π°ΠΌΠ°Π»ΡƒΠ²Π° Ρ‚Ρ€ΠΎΡˆΠΎΡ†ΠΈΡ‚Π΅ Π·Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° ΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π²ΠΎ Π΄ΠΎΠ»Π³ΠΎΡ‚Ρ€Π°Ρ˜Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΠΊΠ»ΡƒΡ‡ΠΈ Π²ΠΎ Ρ„Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ ΠΈΠ»ΠΈ Π΄Π° сС Π²Ρ‡ΠΈΡ‚Π° Π·Π° вСќС составСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° (β€žLD_PRELOAD=/usr/bin/libmimalloc.so myprogramβ€œ). Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° исто Ρ‚Π°ΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° API Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° функционалноста Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΈ Ρ„ΠΈΠ½ΠΎ-Π³Ρ€Π°Π½ΡƒΠ»ΠΈΡ€Π°Π½Π°Ρ‚Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΌΡ€Π·Π»ΠΈΠ²ΠΈ Ρ€Π°ΠΊΡƒΠ²Π°Ρ‡ΠΈ Π·Π° ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° ΠΈ ΠΌΠΎΠ½ΠΎΡ‚ΠΎΠ½ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΈΡ‚Π΅ Π±Ρ€ΠΎΡ˜Π°Ρ‡ΠΈ. МоТно Π΅ Π΄Π° сС ΠΊΡ€Π΅ΠΈΡ€Π°Π°Ρ‚ ΠΈ користат Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ β€žΠΊΡƒΠΏΠΈΡˆΡ‚Π°β€œ Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π·Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° Π½ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ мСмориски области. Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π΅ цСлосно Π΄Π° сС ослободи ΠΊΡƒΠΏΠΎΡ‚, Π±Π΅Π· Π΄Π° сС ΠΏΠΎΠΌΠΈΠ½Π΅ Π½ΠΈΠ· ΠΈ ΠΎΠ΄Π΄Π΅Π»Π½ΠΎ Π΄Π° сС ослободат ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅ поставСни Π²ΠΎ Π½Π΅Π³ΠΎ.

МоТно Π΅ Π΄Π° сС ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π²ΠΎ Π±Π΅Π·Π±Π΅Π΄Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ, Π²ΠΎ кој ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»Π½ΠΈΡ‚Π΅ страници Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° (страници-страници) сС Π·Π°ΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ Π½Π° Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π±Π»ΠΎΠΊΠΎΡ‚ ΠΈ сС користи Ρ€Π°Π½Π΄ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° Π½Π° Π±Π»ΠΎΠΊΠΎΠ²ΠΈ ΠΈ ΡˆΠΈΡ„Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° листи Π½Π° ослободСни Π±Π»ΠΎΠΊΠΎΠ²ΠΈ. Π’Π°ΠΊΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ€ΠΊΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Π°Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€Π°ΡšΠ΅ Π½Π° Π½Π°Ρ˜Ρ‡Π΅ΡΡ‚ΠΈΡ‚Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° ΠΈΡΠΊΠΎΡ€ΠΈΡΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€Π΅Π»Π΅Π²Π°ΡšΠ°Ρ‚Π° Π½Π° Π±Π°Ρ„Π΅Ρ€ΠΈΡ‚Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° Π³Ρ€Π°ΠΌΠ°Π΄Π°. Кога ќС ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡ‚Π΅ Π±Π΅Π·Π±Π΅Π΄Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ, пСрформанситС сС Π½Π°ΠΌΠ°Π»ΡƒΠ²Π°Π°Ρ‚ Π·Π° ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 3%.

ΠœΠ΅Ρ“Ρƒ карактСристикитС Π½Π° mimalloc, исто Ρ‚Π°ΠΊΠ°, сС Π·Π°Π±Π΅Π»Π΅ΠΆΡƒΠ²Π° Π΄Π΅ΠΊΠ° Π½Π΅ Π΅ ΠΏΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ со надуСност ΠΏΠΎΡ€Π°Π΄ΠΈ Π³ΠΎΠ»Π΅ΠΌΠ° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°. Π’ΠΎ Π½Π°Ρ˜Π»ΠΎΡˆΠΎΡ‚ΠΎ сцСнарио, ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ°Ρ‚Π° Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° сС Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π° Π·Π° 0.2% Π·Π° ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° достигнС 16.7% Π·Π° дистрибуирана ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°. Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ ΠΏΡ€ΠΈ пристап Π΄ΠΎ рСсурси, mimalloc користи само атомски ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€