* [devel] q: glibc malloc s*cks? @ 2007-01-15 13:59 Michael Shigorin 2007-01-15 14:13 ` Dmitry V. Levin 2007-01-15 19:19 ` Денис Смирнов 0 siblings, 2 replies; 13+ messages in thread From: Michael Shigorin @ 2007-01-15 13:59 UTC (permalink / raw) To: devel Здравствуйте. Тут нашлось неожиданное применение недавно пробегавшему http://mr.himki.net/index-alloc.html: в процессе раскапывания проблемы с время-от-времени замерзающими терминалами под LTSP (PIII/64M/ATI, diskless) было замечено, что причиной является распухающий Xorg, которого надувает при хождении по страничкам с картинками (менее -- с Flash) Firefox. Примерные цифры RSS Xorg (сборки LTSP4.2u4) при использовании в качестве среды firefox-1.0.8 из ALC3.0: * загружен dm -- ~10M * загружен firefox -- чуть больше 10M * пяток табов, один с историей до десятка страниц (новостной сайт, куча картинок) -- 20--25M * закрыли браузер -- ~15M При этом надувается процесс достаточно уверенно и односторонне, до ~45--50M или когда там начинает заканчиваться память -- за несколько часов добраться более чем возможно. Свопа нет и подключить его запросто не получилось (будто бы в LTSP'шном ядре не хватает CONFIG_NFS_DIRECTIO -- огребаем при swapon /своп/файлик/на/nfs: "swapfile has holes"). Пришла мысль попробовать запустить firefox под другим аллокатором, хотя предполагалось, что запускать надо Xorg (на терминале, т.е. ещё собирать в схожем с LTSP окружении). Попробовали. Оказалось, что помогает __Xorg__ и довольно радикально -- пока по наблюдениям sinister@ выходит, что: - в среднем с тем же firefox и теми же страничками Xorg потребляет меньше памяти; - при закрытии таба с историей в firefox на TS Xorg на терминале также "сдувается" в некоторой мере; - при закрытии firefox RSS Xorg возвращается к значению до запуска браузера, а не как минимум на несколько Мб большему. Странно, но факт. Не будучи в курсе того, как именно выделяется/распределяется память (и какое происходит взаимодействие с Xorg, а также какого тот замерзает, а не пытается высвободить закэшированные пиксмапы, при нехватке памяти) -- сказали sr@, который кратко охарактеризовал glibc malloc как "deprecated, поскольку brk() был объявлен таким ещё около 2.0.29". Отсюда вопросы. 1) кому ещё интересно тестирование такого malloc() -- мож его опакетить для удобства? 2) кому может быть интересно развитие в упоминаемом направлении -- с использованием mmap()? 3) интересно ли это команде в дистрибутивном плане? 4) каковы шансы переубедить libc-alpha@ в том, что текущая реализация является рабочей, а не сломанной? -- ---- WBR, Michael Shigorin <mike@altlinux.ru> ------ Linux.Kiev http://www.linux.kiev.ua/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] q: glibc malloc s*cks? 2007-01-15 13:59 [devel] q: glibc malloc s*cks? Michael Shigorin @ 2007-01-15 14:13 ` Dmitry V. Levin 2007-01-15 18:01 ` Michael Shigorin 2007-01-15 21:33 ` sr 2007-01-15 19:19 ` Денис Смирнов 1 sibling, 2 replies; 13+ messages in thread From: Dmitry V. Levin @ 2007-01-15 14:13 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 641 bytes --] On Mon, Jan 15, 2007 at 03:59:34PM +0200, Michael Shigorin wrote: [...] > Не будучи в курсе того, как именно выделяется/распределяется > память (и какое происходит взаимодействие с Xorg, а также > какого тот замерзает, а не пытается высвободить закэшированные > пиксмапы, при нехватке памяти) -- сказали sr@, который кратко > охарактеризовал glibc malloc как "deprecated, поскольку brk() > был объявлен таким ещё около 2.0.29". Скажите sr@, что glibc malloc уже давно использует mmap. См. тж. http://sourceware.org/ml/libc-alpha/2006-11/msg00061.html > Отсюда вопросы. Вопросы эти исходят из ложной посылки. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] q: glibc malloc s*cks? 2007-01-15 14:13 ` Dmitry V. Levin @ 2007-01-15 18:01 ` Michael Shigorin 2007-01-15 21:33 ` sr 1 sibling, 0 replies; 13+ messages in thread From: Michael Shigorin @ 2007-01-15 18:01 UTC (permalink / raw) To: ALT Devel discussion list On Mon, Jan 15, 2007 at 05:13:42PM +0300, Dmitry V. Levin wrote: > > Не будучи в курсе того, как именно выделяется/распределяется > > память (и какое происходит взаимодействие с Xorg, а также > > какого тот замерзает, а не пытается высвободить > > закэшированные пиксмапы, при нехватке памяти) -- сказали sr@, > > который кратко охарактеризовал glibc malloc как "deprecated, > > поскольку brk() был объявлен таким ещё около 2.0.29". > Скажите sr@, что glibc malloc уже давно использует mmap. > См. тж. http://sourceware.org/ml/libc-alpha/2006-11/msg00061.html Посмотрел в 2.3.5 из 3.0 и 2.5 из сизифа -- отличия, помимо изменений по тредовой части и обновления копирайтов, для меня неочевидны; а, хотя нужный кусок процитирован здесь и это 2006: http://sourceware.org/ml/libc-alpha/2006-03/msg00033.html Бишь с одной стороны -- давно (<5 лет, судя по winehq) используется mmap, но с другой -- только недавно он перестал быть отдельной причиной как минимум тормозов на временных аллокациях. > > Отсюда вопросы. > Вопросы эти исходят из ложной посылки. Дим, как же тогда пояснить наблюдаемое и изложенное в первом письме? Пока костылик, залитый как openbsd-malloc, решил вполне ощутимую проблему в случае использования 3.0. Ещё погоняем, но пока похоже на то. -- ---- WBR, Michael Shigorin <mike@altlinux.ru> ------ Linux.Kiev http://www.linux.kiev.ua/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] q: glibc malloc s*cks? 2007-01-15 14:13 ` Dmitry V. Levin 2007-01-15 18:01 ` Michael Shigorin @ 2007-01-15 21:33 ` sr 2007-01-15 22:37 ` Michael Shigorin 2007-01-15 23:19 ` [devel] q: " Dmitry V. Levin 1 sibling, 2 replies; 13+ messages in thread From: sr @ 2007-01-15 21:33 UTC (permalink / raw) To: ALT Devel discussion list 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 Агащазблин. $ echo "int main() { return malloc( 1) ? 0 : 1; }" > 1.c $ gcc 1.c $ strace ./a.out execve("./a.out", ["./a.out"], [/* 49 vars */]) = 0 brk(0) = 0x804a000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=62887, ...}) = 0 mmap2(NULL, 62887, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7f82000 close(4) = 0 open("/lib/libc.so.6", O_RDONLY) = 4 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\232b\1"..., 512) = 512 fstat64(4, {st_mode=S_IFREG|0755, st_size=1167868, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f81000 mmap2(NULL, 1173764, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0xb7e62000 mmap2(0xb7f7b000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x119) = 0xb7f7b000 mmap2(0xb7f7e000, 10500, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f7e000 close(4) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e61000 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7e616c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 mprotect(0xb7f7b000, 4096, PROT_READ) = 0 munmap(0xb7f82000, 62887) = 0 brk(0) = 0x804a000 brk(0x806b000) = 0x806b000 exit_group(0) = ? Process 6119 detached $ rpm -q glibc glibc-2.5-alt3 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] q: glibc malloc s*cks? 2007-01-15 21:33 ` sr @ 2007-01-15 22:37 ` Michael Shigorin 2007-01-15 23:18 ` sr 2007-01-15 23:19 ` [devel] q: " Dmitry V. Levin 1 sibling, 1 reply; 13+ messages in thread From: Michael Shigorin @ 2007-01-15 22:37 UTC (permalink / raw) To: ALT Devel discussion list On Mon, Jan 15, 2007 at 11:33:03PM +0200, sr@altlinux.ru wrote: > > Скажите sr@, что glibc malloc уже давно использует mmap. > > См. тж. http://sourceware.org/ml/libc-alpha/2006-11/msg00061.html > Агащазблин. Скажем так -- "умеет использовать mmap", посмотри "Update in 2006:" по второй ссылке на libc-alpha@ (или в malloc.c@~1480) для уточнения нынешнего изменения порога между mmap и brk. > $ echo "int main() { return malloc( 1) ? 0 : 1; }" > 1.c > $ gcc 1.c > $ strace ./a.out [...] > brk(0) = 0x804a000 > brk(0x806b000) = 0x806b000 > exit_group(0) = ? > Process 6119 detached $ echo "int main() { return malloc( 2000000 ) ? 0 : 1; }" > 2.c $ gcc 2.c 2.c: In function 'main': 2.c:1: warning: incompatible implicit declaration of built-in function 'malloc' $ strace ./a.out execve("./a.out", ["./a.out"], [/* 71 vars */]) = 0 brk(0) = 0x804a000 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f0f000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=135213, ...}) = 0 mmap2(NULL, 135213, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7eed000 close(3) = 0 open("/lib/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\232b\1"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1171776, ...}) = 0 mmap2(NULL, 1177860, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dcd000 mmap2(0xb7ee7000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11a) = 0xb7ee7000 mmap2(0xb7eea000, 10500, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7eea000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7dcc000 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7dcc6c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 mprotect(0xb7ee7000, 4096, PROT_READ) = 0 munmap(0xb7eed000, 135213) = 0 mmap2(NULL, 2002944, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7be3000 exit_group(0) = ? Process 10194 detached > $ rpm -q glibc > glibc-2.5-alt3 ditto, i586 -- ---- WBR, Michael Shigorin <mike@altlinux.ru> ------ Linux.Kiev http://www.linux.kiev.ua/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] q: glibc malloc s*cks? 2007-01-15 22:37 ` Michael Shigorin @ 2007-01-15 23:18 ` sr 2007-01-16 1:26 ` Dmitry V. Levin 0 siblings, 1 reply; 13+ messages in thread From: sr @ 2007-01-15 23:18 UTC (permalink / raw) To: ALT Devel discussion list On Tue, Jan 16, 2007 at 12:37:28AM +0200, Michael Shigorin wrote: > Date: Tue, 16 Jan 2007 00:37:28 +0200 > From: Michael Shigorin <mike@osdn.org.ua> > To: ALT Devel discussion list <devel@lists.altlinux.org> > Mail-Followup-To: ALT Devel discussion list <devel@lists.altlinux.org> > Subject: Re: [devel] q: glibc malloc s*cks? > > On Mon, Jan 15, 2007 at 11:33:03PM +0200, sr@altlinux.ru wrote: > > > Скажите sr@, что glibc malloc уже давно использует mmap. > > > См. тж. http://sourceware.org/ml/libc-alpha/2006-11/msg00061.html > > Агащазблин. > > Скажем так -- "умеет использовать mmap", Не так, "не умеет использовать mmap", потому что mmap()/mremap()/munmap() не может использоваться в прямую для malloc()/realloc()/free(), это сразу дыры между vm_area_struct, т.е. фрагментацию на уровне юзерспэйса они заменяют фрагментацией в ядре, хотя и в юзерспэйсе фрагментация не отменяется. А там это таки так для больших кусков памяти. Собственно, этот, простите, аллокатор ничем не отличается от такого же с dietlibc. Но почему он такой в diet понятно, почему он такой же в glibc мне не понятно. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] q: glibc malloc s*cks? 2007-01-15 23:18 ` sr @ 2007-01-16 1:26 ` Dmitry V. Levin 2007-01-16 9:35 ` Michael Shigorin 2007-01-16 17:46 ` [devel] [JT] " Денис Смирнов 0 siblings, 2 replies; 13+ messages in thread From: Dmitry V. Levin @ 2007-01-16 1:26 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 1355 bytes --] On Tue, Jan 16, 2007 at 01:18:00AM +0200, sr@altlinux.ru wrote: > On Tue, Jan 16, 2007 at 12:37:28AM +0200, Michael Shigorin wrote: > > On Mon, Jan 15, 2007 at 11:33:03PM +0200, sr@altlinux.ru wrote: > > > > Скажите sr@, что glibc malloc уже давно использует mmap. > > > > См. тж. http://sourceware.org/ml/libc-alpha/2006-11/msg00061.html > > > Агащазблин. > > > > Скажем так -- "умеет использовать mmap", > > Не так, "не умеет использовать mmap", потому что mmap()/mremap()/munmap() > не может использоваться в прямую для malloc()/realloc()/free(), это > сразу дыры между vm_area_struct, т.е. фрагментацию на уровне юзерспэйса они > заменяют фрагментацией в ядре, хотя и в юзерспэйсе фрагментация не отменяется. > А там это таки так для больших кусков памяти. Это openbsd malloc целиком построен на mmap. А glibc malloc имени Wolfram Gloger/Doug Lea по прежнему использует brk для размещения объектов малого размера. Так в чём вопрос был? Как минимизировать фрагментацию памяти долгоживущего приложения, у которого средний размер размещаемого объёкта около 24 байт? Полагаю, что эффект от использования специализированного allocator'а будет больше чем от замены универсального malloc'а. Другое дело что внедрить такой allocator в чужой софт немалого размера может оказаться даже сложнее чем поменять malloc. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] q: glibc malloc s*cks? 2007-01-16 1:26 ` Dmitry V. Levin @ 2007-01-16 9:35 ` Michael Shigorin 2007-01-16 17:46 ` [devel] [JT] " Денис Смирнов 1 sibling, 0 replies; 13+ messages in thread From: Michael Shigorin @ 2007-01-16 9:35 UTC (permalink / raw) To: ALT Devel discussion list; +Cc: Alexey Beleckiy On Tue, Jan 16, 2007 at 04:26:32AM +0300, Dmitry V. Levin wrote: > Так в чём вопрос был? Как минимизировать фрагментацию памяти > долгоживущего приложения, у которого средний размер > размещаемого объёкта около 24 байт? Полагаю, что эффект от > использования специализированного allocator'а будет больше чем > от замены универсального malloc'а. Другое дело что внедрить > такой allocator в чужой софт немалого размера может оказаться > даже сложнее чем поменять malloc. Мой вопрос был в том, поймал ли кто конкретно с нашими сборками мозиллообразных проблемы с тем аллокатором и если нет -- то осмысленно ли как-то дистрибутивно его подтыкать под приложения, на которых есть заметное улучшение по части потребления памяти. По ходу разбирательства он плавно перетёк в "надо бы проверить, как это на текущем сизифе" -- который у меня на системах с 512+M памяти, где гораздо менее критично (память наращивалась или подбиралась не в последнюю очередь из-за mozilla-like, btw...). 2 sinister: можешь попробовать посмотреть, что получается с glibc-2.5? -- ---- WBR, Michael Shigorin <mike@altlinux.ru> ------ Linux.Kiev http://www.linux.kiev.ua/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* [devel] [JT] glibc malloc s*cks? 2007-01-16 1:26 ` Dmitry V. Levin 2007-01-16 9:35 ` Michael Shigorin @ 2007-01-16 17:46 ` Денис Смирнов 1 sibling, 0 replies; 13+ messages in thread From: Денис Смирнов @ 2007-01-16 17:46 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 789 bytes --] On Tue, Jan 16, 2007 at 04:26:32AM +0300, Dmitry V. Levin wrote: DVL> Так в чём вопрос был? Как минимизировать фрагментацию памяти DVL> долгоживущего приложения, у которого средний размер размещаемого объёкта DVL> около 24 байт? Полагаю, что эффект от использования специализированного DVL> allocator'а будет больше чем от замены универсального malloc'а. Другое DVL> дело что внедрить такой allocator в чужой софт немалого размера может DVL> оказаться даже сложнее чем поменять malloc. /me представил себе что начнется, если оторвать от glibc mеmory allocation в отдельную либу... В -- С уважением, Денис http://freesource.info ---------------------------------------------------------------------------- <Vitls> *** Опечатка дня: [root@mw:~]# apt-get upadet *** [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] q: glibc malloc s*cks? 2007-01-15 21:33 ` sr 2007-01-15 22:37 ` Michael Shigorin @ 2007-01-15 23:19 ` Dmitry V. Levin 1 sibling, 0 replies; 13+ messages in thread From: Dmitry V. Levin @ 2007-01-15 23:19 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 2771 bytes --] 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 [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] q: glibc malloc s*cks? 2007-01-15 13:59 [devel] q: glibc malloc s*cks? Michael Shigorin 2007-01-15 14:13 ` Dmitry V. Levin @ 2007-01-15 19:19 ` Денис Смирнов 2007-01-15 21:38 ` sr 1 sibling, 1 reply; 13+ messages in thread From: Денис Смирнов @ 2007-01-15 19:19 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 1240 bytes --] On Mon, Jan 15, 2007 at 03:59:34PM +0200, Michael Shigorin wrote: MS> 1) кому ещё интересно тестирование такого malloc() MS> -- мож его опакетить для удобства? MS> 2) кому может быть интересно развитие в упоминаемом MS> направлении -- с использованием mmap()? MS> 3) интересно ли это команде в дистрибутивном плане? MS> 4) каковы шансы переубедить libc-alpha@ в том, что MS> текущая реализация является рабочей, а не сломанной? Вообще-то мне кажется что подобный аллокатор есть смысл собрать с _другим_ именем функций, и собирать отдельные пакеты с использованием именно этого аллокетора. Видимо он более грамотно работает в ситуации со множеством выделений небольших блоков памяти. И вообще-то вполне логично для такой цели использовать специфический аллокатор. А если совсем честно, то выделение malloc'ом большого количества маленьких кусков памяти это мягко говоря свинство. Давным-давно была хорошая практика для крупных приложений использовать специфические аллокаторы. Странно что эта практика была полностью забыта. -- С уважением, Денис http://freesource.info ---------------------------------------------------------------------------- Программерское: Какие красивые, длинные логи! [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] q: glibc malloc s*cks? 2007-01-15 19:19 ` Денис Смирнов @ 2007-01-15 21:38 ` sr 2007-01-15 22:22 ` Konstantin A. Lepikhov 0 siblings, 1 reply; 13+ messages in thread From: sr @ 2007-01-15 21:38 UTC (permalink / raw) To: ALT Devel discussion list On Mon, Jan 15, 2007 at 10:19:21PM +0300, Денис Смирнов wrote: > Date: Mon, 15 Jan 2007 22:19:21 +0300 > From: Денис Смирнов <mithraen@altlinux.ru> > To: devel@lists.altlinux.org > Subject: Re: [devel] q: glibc malloc s*cks? > > On Mon, Jan 15, 2007 at 03:59:34PM +0200, Michael Shigorin wrote: > > MS> 1) кому ещё интересно тестирование такого malloc() > MS> -- мож его опакетить для удобства? > MS> 2) кому может быть интересно развитие в упоминаемом > MS> направлении -- с использованием mmap()? > MS> 3) интересно ли это команде в дистрибутивном плане? > MS> 4) каковы шансы переубедить libc-alpha@ в том, что > MS> текущая реализация является рабочей, а не сломанной? > > Вообще-то мне кажется что подобный аллокатор есть смысл собрать с _другим_ > именем функций, и собирать отдельные пакеты с использованием именно этого > аллокетора. > > Видимо он более грамотно работает в ситуации со множеством выделений > небольших блоков памяти. И вообще-то вполне логично для такой цели > использовать специфический аллокатор. > > А если совсем честно, то выделение malloc'ом большого количества маленьких > кусков памяти это мягко говоря свинство. > > Давным-давно была хорошая практика для крупных приложений использовать > специфические аллокаторы. Странно что эта практика была полностью забыта. Как раз для софта аля мозилка имеет смысл вообще использовать аллокаторы типа виндового HeapCreate(), HeapAlloc(), HeapDestroy(). По крайне мере дырок не будет, хип для следующей большой транзакции заново создать можно и грохнуть всем скопом, когда не нужно. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] q: glibc malloc s*cks? 2007-01-15 21:38 ` sr @ 2007-01-15 22:22 ` Konstantin A. Lepikhov 0 siblings, 0 replies; 13+ messages in thread From: Konstantin A. Lepikhov @ 2007-01-15 22:22 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 387 bytes --] Hi sr! Monday 15, at 11:38:41 PM you wrote: <skip> > Как раз для софта аля мозилка имеет смысл вообще использовать аллокаторы > типа виндового HeapCreate(), HeapAlloc(), HeapDestroy(). По крайне мере > дырок не будет, хип для следующей большой транзакции заново создать можно > и грохнуть всем скопом, когда не нужно. разве не для этого nspr придумали? :) -- WBR et al. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2007-01-16 17:46 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2007-01-15 13:59 [devel] q: glibc malloc s*cks? Michael Shigorin 2007-01-15 14:13 ` Dmitry V. Levin 2007-01-15 18:01 ` Michael Shigorin 2007-01-15 21:33 ` sr 2007-01-15 22:37 ` Michael Shigorin 2007-01-15 23:18 ` sr 2007-01-16 1:26 ` Dmitry V. Levin 2007-01-16 9:35 ` Michael Shigorin 2007-01-16 17:46 ` [devel] [JT] " Денис Смирнов 2007-01-15 23:19 ` [devel] q: " Dmitry V. Levin 2007-01-15 19:19 ` Денис Смирнов 2007-01-15 21:38 ` sr 2007-01-15 22:22 ` Konstantin A. Lepikhov
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git