ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re[2]: nedmalloc



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@xxxxxxxxx> 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@xxxxxxxxxx




 




Copyright © Lexa Software, 1996-2009.