Очень долгий запуск на AMD64...
Igor Sysoev
is at rambler-co.ru
Fri Mar 31 16:49:36 MSD 2006
On Fri, 31 Mar 2006, Igor Sysoev wrote:
> On Fri, 31 Mar 2006, Andrei Nigmatulin wrote:
>
>> On Friday 31 March 2006 16:08, Igor Sysoev wrote:
>>> On Fri, 31 Mar 2006, Alexey N. Kovyrin wrote:
>>>> Igor Sysoev пишет:
>>>>>>> Нужно собрать nginx с профилированием.
>>>>>>> Для gprof это делается примерно так:
>>>>>>>
>>>>>>> ./configure --with-cc-opt="-pg -g" --with-ld-opt="-pg" ...
>>>>>>>
>>>>>>> Потом запускается nginx, получаем файл nginx.gmon.
>>>>>>> Потом запускаем gprof nginx, вывод присылаем мне.
>>>>>
>>>>> А если попробовать без профилирования
>>>>> ./configure --with-cc-opt="-D NGX_ALIGNMENT=16" ...
>>>>
>>>> Эффект абсолютно нулевой... :-(
>>>> Какие есть еще варианты кроме "выкинуть процессор"? :-)
>>>
>>> Кажется, я понял, в чём проблема.
>>
>> Если не секрет в чем же ? У меня аналогичные проблемы...
>
> Судя по gprof, в данном конкрентном случае делается 30620 включений
> файлов. Для каждого включения nginx делает выделяет 4K через malloc(),
> а потом free(). У меня были подозрения на обработку free() внутри
> nginx'а, но пока я не увидел там узких мест. На данный момент у меня
> есть подозрение, что проблемы в libc.
Предлагается собрать и запустить такую программку:
------------
#include <unistd.h>
main()
{
int i;
void *p;
for (i = 0; i < 30000; i++) {
p = malloc(SIZE);
free(p);
}
}
------------
Собрать нужно в трёх вариантах:
cc -DSIZE=4096 -o t t.c
cc -DSIZE=65536 -o t t.c
cc -DSIZE=1048576 -o t t.c
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list