[devel] q: glibc malloc s*cks?

Dmitry V. Levin =?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Вт Янв 16 02:19:45 MSK 2007


On Mon, Jan 15, 2007 at 11:33:03PM +0200, sr на altlinux.ru wrote:
> On Mon, Jan 15, 2007 at 05:13:42PM +0300, Dmitry V. Levin wrote:
> > Скажите sr@, что glibc malloc уже давно использует mmap.
> > См. тж. http://sourceware.org/ml/libc-alpha/2006-11/msg00061.html
> 
> Агащазблин.

Сергей, спорить со мной на моём минном поле - это довольно рискованное
мероприятие, можно одним неудачным словом подорвать свою репутацию.

$ cat malloc.c 
#include <stdlib.h>
int main(int ac, const char const **av)
{
	if (ac != 2) return 1;
	return !malloc(atoi(av[1]));
}


$ uname -m
i686
$ rpmquery glibc
glibc-2.5-alt3
$ gcc -O2 -Wall -Werror malloc.c -o malloc
$ strace -qce trace=brk,mmap2 ./malloc 1        
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
   nan    0.000000           0         3           brk
   nan    0.000000           0         6           mmap2
------ ----------- ----------- --------- --------- ----------------
100.00    0.000000                     9           total
$ strace -qce trace=brk,mmap2 ./malloc $((1024*1024))
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
   nan    0.000000           0         1           brk
   nan    0.000000           0         7           mmap2
------ ----------- ----------- --------- --------- ----------------
100.00    0.000000                     8           total


$ uname -m
x86_64
$ rpmquery glibc
glibc-2.5-alt3
$ gcc -O2 -Wall -Werror malloc.c -o malloc
$ strace -qce trace=brk,mmap ./malloc 1
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
   nan    0.000000           0         7           mmap
   nan    0.000000           0         3           brk
------ ----------- ----------- --------- --------- ----------------
100.00    0.000000                    10           total
$ strace -qce trace=brk,mmap ./malloc $((1024*1024))
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
   nan    0.000000           0         8           mmap
   nan    0.000000           0         1           brk
------ ----------- ----------- --------- --------- ----------------
100.00    0.000000                     9           total

$ strings /lib*/ld-2.5.so |fgrep MALLOC_MMAP
MALLOC_MMAP_MAX_
MALLOC_MMAP_THRESHOLD_

$ sed -n '/Update in 2006/,/\*\//p' glibc/malloc/malloc.c |wc -l
50

Сергей, будьте добры, прочтите эти несколько строк комментариев, после
чего, если хотите, можно вернуться к теме реализации malloc в glibc.


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20070116/2b25d989/attachment-0001.bin>


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