рдорд╛рдпрдХреНрд░реЛрд╕реЙрдлреНрдЯрдиреЗ рдорд┐рдорд▓реЙрдХ рдореЗрдорд░реА рдНрд▓реЛрдХреЗрд╢рди рд╕рд┐рд╕реНрдЯрдорд╕рд╛рдареА рдХреЛрдб рдЙрдШрдбрд▓рд╛ рдЖрд╣реЗ

рдорд╛рдпрдХреНрд░реЛрд╕реЙрдлреНрдЯрдиреЗ рдПрдордЖрдпрдЯреА рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рд▓рд╛рдпрдмреНрд░рд░реА рдЙрдШрдбрд▓реА рдЖрд╣реЗ mmalloc рдореВрд│рддрдГ рднрд╛рд╖рд╛рдВрдЪреНрдпрд╛ рд░рдирдЯрд╛рдЗрдо рдШрдЯрдХрд╛рдВрд╕рд╛рдареА рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдореЗрдорд░реА рд╡рд╛рдЯрдк рдкреНрд░рдгрд╛рд▓реАрдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрддреВрди рдХреЛрдХрд╛ ╨╕ рд▓реАрди. Mimalloc рд╣реЗ рдорд╛рдирдХ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдордзреНрдпреЗ рддреНрдпрд╛рдВрдЪрд╛ рдХреЛрдб рди рдмрджрд▓рддрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреБрдХреВрд▓ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ malloc рдлрдВрдХреНрд╢рдирд╕рд╛рдареА рдкрд╛рд░рджрд░реНрд╢рдХ рдмрджрд▓реА рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░реВ рд╢рдХрддреЗ. рд╡рд┐рдВрдбреЛрдЬ, рдореЕрдХрдУрдПрд╕, рд▓рд┐рдирдХреНрд╕, рдмреАрдПрд╕рдбреА рдЖрдгрд┐ рдЗрддрд░ рдпреБрдирд┐рдХреНрд╕ рд╕рд╛рд░рдЦреНрдпрд╛ рд╕рд┐рд╕реНрдЯреАрдорд╡рд░ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕ рд╕рдорд░реНрдерди рджреЗрддреЗ.

mimalloc рдЪреЗ рдореБрдЦреНрдп рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдореНрд╣рдгрдЬреЗ рддреНрдпрд╛рдЪреА рдХреЙрдореНрдкреЕрдХреНрдЯ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА (рдХреЛрдбрдЪреНрдпрд╛ 3500 рдкреЗрдХреНрд╖рд╛ рдХрдореА рдУрд│реА) рдЖрдгрд┐ рдЕрддрд┐рд╢рдп рдЙрдЪреНрдЪ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛. IN рдЪрд╛рдЪрдгреНрдпрд╛ рдХреЗрд▓реНрдпрд╛ mimalloc рдиреЗ рд╕рд░реНрд╡ рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдореЗрдорд░реА рд╡рд╛рдЯрдк рд▓рд╛рдпрдмреНрд░рд░реАрдВрдирд╛ рдорд╛рдЧреЗ рдЯрд╛рдХрд▓реЗ, рдпрд╛рд╕рд╣ jemalloc, tcmalloc, snmalloc, rpmalloc ╨╕ рд╣реЛрд░реНрдб.

рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рдирд╛рдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд┐рджреНрдпрдорд╛рди рд╕рдВрдЪ рдорд╛рдирдХ рдЪрд╛рдЪрдгреНрдпрд╛ рдХрд╛рд╣реА рдЪрд╛рдЪрдгреНрдпрд╛рдВрдордзреНрдпреЗ, mimalloc рдЗрддрд░ рдкреНрд░рдгрд╛рд▓реАрдВрдкреЗрдХреНрд╖рд╛ рдЕрдиреЗрдХ рдкрдЯреАрдиреЗ рд╡реЗрдЧрд╡рд╛рди рдЖрд╣реЗ; рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдереНрд░реЗрдбреНрд╕рдордзреАрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдерд▓рд╛рдВрддрд░рд╛рдЪреНрдпрд╛ рдЪрд╛рдЪрдгреАрдордзреНрдпреЗ, mimalloc tcmalloc рдЖрдгрд┐ jemalloc рдкреЗрдХреНрд╖рд╛ 2.5 рдкрдЯ рдЬрд╛рд╕реНрдд рд╡реЗрдЧрд╡рд╛рди рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕реВрди рдЖрд▓реЗ. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдмрд╣реБрддреЗрдХ рдЪрд╛рдЪрдгреНрдпрд╛рдВрдордзреНрдпреЗ, рдХрдореА рдореЗрдорд░реА рд╡рд╛рдкрд░ рджреЗрдЦреАрд▓ рд╕рд╛рдЬрд░рд╛ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ; рдХрд╛рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ, рдореЗрдорд░реА рд╡рд╛рдкрд░ 25% рдиреЗ рдХрдореА рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

рдорд╛рдпрдХреНрд░реЛрд╕реЙрдлреНрдЯрдиреЗ рдорд┐рдорд▓реЙрдХ рдореЗрдорд░реА рдНрд▓реЛрдХреЗрд╢рди рд╕рд┐рд╕реНрдЯрдорд╕рд╛рдареА рдХреЛрдб рдЙрдШрдбрд▓рд╛ рдЖрд╣реЗ

рдЙрдЪреНрдЪ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдореБрдЦреНрдпрддрдГ рд╡рд┐рдирд╛рдореВрд▓реНрдп рд╕реВрдЪреА рд╢рд╛рд░реНрдбрд┐рдВрдЧрдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рджреНрд╡рд╛рд░реЗ рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдПрдХрд╛ рдореЛрдареНрдпрд╛ рд╕реВрдЪреАрдРрд╡рдЬреА, mimalloc рд▓рд╣рд╛рди рд╕реВрдЪреАрдВрдЪреА рдорд╛рд▓рд┐рдХрд╛ рд╡рд╛рдкрд░рддреЗ, рдЬреНрдпрд╛рдкреИрдХреА рдкреНрд░рддреНрдпреЗрдХ рдореЗрдорд░реА рдкреГрд╖реНрдард╛рд╡рд░ рдмрд╛рдВрдзрд▓реЗрд▓реА рдЕрд╕рддреЗ. рд╣рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рд╡рд┐рдЦрдВрдбрди рдХрдореА рдХрд░рддреЛ рдЖрдгрд┐ рдореЗрдорд░реАрдордзреАрд▓ рдбреЗрдЯрд╛ рд╕реНрдерд╛рди рд╡рд╛рдврд╡рддреЛ. рдореЗрдорд░реА рдкреГрд╖реНрда рд╕рдорд╛рди рдЖрдХрд╛рд░рд╛рдЪреНрдпрд╛ рдмреНрд▓реЙрдХреНрд╕рдЪрд╛ рдПрдХ рдЧрдЯрдмрджреНрдз рд╕рдВрдЪ рдЖрд╣реЗ. 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдорд╡рд░, рдкреГрд╖реНрдард╛рдЪрд╛ рдЖрдХрд╛рд░ рд╕рд╛рдорд╛рдиреНрдпрддрдГ 64 KB рдЕрд╕рддреЛ. рдкреГрд╖реНрдард╛рдордзреНрдпреЗ рдХреЛрдгрддреЗрд╣реА рд╡реНрдпрд╛рдкрд▓реЗрд▓реЗ рдмреНрд▓реЙрдХреНрд╕ рд╢рд┐рд▓реНрд▓рдХ рдирд╕рд▓реНрдпрд╛рд╕, рддреЗ рдкреВрд░реНрдгрдкрдгреЗ рдореЛрдХрд│реЗ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдореЗрдорд░реА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдорд╡рд░ рдкрд░рдд рдХреЗрд▓реА рдЬрд╛рддреЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдореЗрдорд░реА рдЦрд░реНрдЪ рдЖрдгрд┐ рджреАрд░реНрдШрдХрд╛рд│ рдЪрд╛рд▓рдгрд╛рд▒реНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдордордзреНрдпреЗ рд╡рд┐рдЦрдВрдбрди рдХрдореА рд╣реЛрддреЗ.

рд▓рд╛рдпрдмреНрд░рд░реА рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕реНрдЯреЗрдЬрд╡рд░ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ рдХрд┐рдВрд╡рд╛ рдЖрдзреАрдкрд╛рд╕реВрди рдПрдХрддреНрд░рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд╕рд╛рдареА рд▓реЛрдб рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ (тАЬLD_PRELOAD=/usr/bin/libmimalloc.so myprogramтАЭ). рдЧреНрд░рдВрдерд╛рд▓рдп рджреЗрдЦреАрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ API рд░рдирдЯрд╛рдЗрдо рдЖрдгрд┐ рд╕реВрдХреНрд╖реНрдо рд╡рд░реНрддрди рдирд┐рдпрдВрддреНрд░рдгрд╛рдордзреНрдпреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдПрдХрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрд│рд╢реА рдореЗрдорд░реА рд░рд┐рд▓реАрдЭ рд╣рдБрдбрд▓рд░реНрд╕ рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╕рдВрджрд░реНрдн рдХрд╛рдЙрдВрдЯрд░ рдореЛрдиреЛрдЯреЛрдиреАрд▓реА рд╡рд╛рдврд╡рдгреНрдпрд╛рд╕рд╛рдареА. рд╡рд┐рд╡рд┐рдз рдореЗрдорд░реА рдХреНрд╖реЗрддреНрд░рд╛рдВрдордзреНрдпреЗ рд╡рд┐рддрд░рдгрд╛рд╕рд╛рдареА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдордзреНрдпреЗ рдЕрдиреЗрдХ "рдвреАрдЧ" рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рд╡рд╛рдкрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ. рдвреАрдЧ рдкреВрд░реНрдгрдкрдгреЗ рдореБрдХреНрдд рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рд╢рдХреНрдп рдЖрд╣реЗ, рддреНрдпрд╛рдордзреВрди рди рдЬрд╛рддрд╛ рдЖрдгрд┐ рддреНрдпрд╛рдордзреНрдпреЗ рдареЗрд╡рд▓реЗрд▓реНрдпрд╛ рд╡рд╕реНрддреВ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдореБрдХреНрдд рдХреЗрд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп.

рд▓рд╛рдпрдмреНрд░рд░реА рд╕реБрд░рдХреНрд╖рд┐рдд рдореЛрдбрдордзреНрдпреЗ рддрдпрд╛рд░ рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдмреНрд▓реЙрдХ рд╕реАрдорд╛рдВрд╡рд░ рд╡рд┐рд╢реЗрд╖ рдореЗрдорд░реА рдЪреЗрдХ рдкреГрд╖реНрдареЗ (рдЧрд╛рд░реНрдб-рдкреЗрдЬреЗрд╕) рдмрджрд▓рд▓реА рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдмреНрд▓реЙрдХ рд╡рд┐рддрд░рдгрд╛рдЪреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХреАрдХрд░рдг рдЖрдгрд┐ рдореБрдХреНрдд рдмреНрд▓реЙрдХреНрд╕рдЪреНрдпрд╛ рд╕реВрдЪреАрдВрдЪреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рдЕрд╢рд╛ рдЙрдкрд╛рдпрд╛рдВрдореБрд│реЗ рдвреАрдЧ-рдЖрдзрд╛рд░рд┐рдд рдмрдлрд░ рдУрд╡реНрд╣рд░рдлреНрд▓реЛрдЪреЗ рд╢реЛрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рд╕рд╛рдорд╛рдиреНрдп рддрдВрддреНрд░реЗ рдЕрд╡рд░реЛрдзрд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рд╣реЛрддреЗ. рддреБрдореНрд╣реА рд╕реБрд░рдХреНрд╖рд┐рдд рдореЛрдб рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рддреЗрд╡реНрд╣рд╛, рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдЕрдВрджрд╛рдЬреЗ 3% рдХрдореА рд╣реЛрддреЗ.

рдорд┐рдореЕрд▓реЛрдХрдЪреНрдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдкреИрдХреА, рд╣реЗ рджреЗрдЦреАрд▓ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗ рдЬрд╛рддреЗ рдХреА рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╡рд┐рдЦрдВрдбрди рдЭрд╛рд▓реНрдпрд╛рдореБрд│реЗ рддреЗ рдмреНрд▓реЛрдЯрд┐рдВрдЧрдЪреНрдпрд╛ рд╕рдорд╕реНрдпреЗрд╕ рд╕рдВрд╡реЗрджрдирд╛рдХреНрд╖рдо рдирд╛рд╣реА. рд╕рд░реНрд╡рд╛рдд рд╡рд╛рдИрдЯ рдкрд░рд┐рд╕реНрдерд┐рддреАрдордзреНрдпреЗ, рдореЗрдорд░реА рд╡рд╛рдкрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛рд╕рд╛рдареА 0.2% рдиреЗ рд╡рд╛рдврддреЛ рдЖрдгрд┐ рд╡рд┐рддрд░рд┐рдд рдореЗрдорд░реАрд╕рд╛рдареА 16.7% рдкрд░реНрдпрдВрдд рдкреЛрд╣реЛрдЪреВ рд╢рдХрддреЛ. рд╕рдВрд╕рд╛рдзрдирд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛рдирд╛ рд╕рдВрдШрд░реНрд╖ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА, mimalloc рдлрдХреНрдд рдЕрдгреВ рдСрдкрд░реЗрд╢рдиреНрд╕ рд╡рд╛рдкрд░рддреЛ.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛