Очень долгий запуск на 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