[devel] фрагментация памяти

Alexander Bokovoy =?iso-8859-1?q?ab_=CE=C1_altlinux=2Eorg?=
Ср Ноя 28 23:39:08 MSK 2007


Kirill A. Shutemov пишет:
> On [Wed, 28.11.2007 21:56], Alexander Bokovoy wrote:
>> Обратной стороной является некоторое падение производительности: до
>> 3% процентов в общем случае при использовании glibc's malloc() в
>> качестве "драйвера" для talloc(3). Для специфических ситуаций вроде
>> распределения большого количества малых фрагментов памяти --
>> коротких строк, конкатенации большого количества малых фрагментов и
>> тому подобное, можно выбрать другие распределители. Например, можно
>> использовать распределитель, основанный на анонимной mmap-памяти,
>> написанный Andrew Tridgell-ом:
>> http://samba.org/~tridge/junkcode/alloc_mmap/. Этот распределитель
>> снижает расход памяти в Samba4 приблизительно на 10-15% на
>> соединение и работает быстрее.
> 
> Это за счёт фрагментации? glibc'ный malloc ведь тюнить можно.
> Сталкнувшись с фрагментацией на проекте, сделал
> mallopt(M_MMAP_THRESHOLD, 32) -- т.е. для кусков > 32 использовать
> mmap для распределения. Помогло. Единственное, что озадачивает
> M_MMAP_THRESHOLD равный 128k по умолчанию. Зачем так много?
шаблоны распределения памяти могут достаточно сильно варьироваться от
программы к программе и поэтому к системному распределителю
предъявляются консервативные требования вести себя хорошо на большинстве
ситуаций.

-- 
/ Alexander Bokovoy
Samba Team                      http://www.samba.org/
ALT Linux Team                  http://www.altlinux.org/
Midgard Project Ry              http://www.midgard-project.org/




Подробная информация о списке рассылки Devel