nedmalloc
Denis F. Latypoff
denis at gostats.ru
Thu Jul 16 18:59:20 MSD 2009
Hello Igor,
Thursday, July 16, 2009, 7:30:51 PM, you wrote:
> On Thu, Jul 16, 2009 at 05:03:26PM +0700, Denis F. Latypoff wrote:
>> Hello Kirill,
>>
>> Thursday, July 16, 2009, 4:23:29 PM, you wrote:
>>
>> > At Thu, 16 Jul 2009 04:38:23 +0400,
>> > Sergey Shepelev <temotor at gmail.com> wrote:
>> >>
>> >> Набрёл на nedmalloc.
>> >>
>> >> Автор заявляет, что аллокатор наибыстрейший в мире+лучше всех
>> >> скалируется на ядра.
>> >>
>> >> http://www.nedprod.com/programs/portable/nedmalloc/
>> >>
>> >> Мало ли, интересно будет.
>>
>> > спасибо, интересно.
>>
>> > Для nginx работа аллокатора на нескольких ядрах не интересна. Но в
>> > свою коллекцию включу :)
>>
>> Я попробывал их пулы, стало страшно:
>>
>> PID USER PR NI %CPU TIME+ %MEM VIRT RES SHR S COMMAND
>> 29142 root 20 0 67.0 0:03.50 1.1 407m 8696 572 R cag_rss_server
>>
>> С пулами из nginx'a все в порядке:
>>
>> 29641 root 20 0 60.7 0:03.47 1.0 9460 7548 548 R cag_rss_server
> А в nedmalloc есть пулы помимо malloc/free ?
nedmalloc - это поделка, нормальные пулы есть в dlmalloc:
typedef void* mspace;
mspace create_mspace(size_t capacity, int locked);
size_t destroy_mspace(mspace msp);
int mspace_track_large_chunks(mspace msp, int enable);
void *mspace_malloc(mspace msp, size_t bytes);
void mspace_free(mspace msp, void *mem);
void *mspace_realloc(mspace msp, void *mem, size_t newsize); /*(!)*/
void *mspace_calloc(mspace msp, size_t n_elements, size_t elem_size);
void *mspace_memalign(mspace msp, size_t alignment, size_t bytes);
size_t mspace_footprint(mspace msp);
int mspace_track_large_chunks (mspace msp, int enable);
/*
без этого большие чанки текут, цена включения опции - увеличение
фрагментации:
By default large chunks are not tracked,
which reduces fragmentation. However, such chunks are not
necessarily released to the system upon destroy_mspace. Enabling
tracking by setting to true may increase fragmentation, but avoids
leakage when relying on destroy_mspace to release all memory
allocated using this space
*/
void mspace_free(mspace msp, void *mem);
/*
в nginx'е освобождаются только large_block's, здесь - все блоки,
из-за этого футпринт в nginx'е маленько больше :)
*/
--
Best regards,
Denis mailto:denis at gostats.ru
More information about the nginx-ru
mailing list