Hello! On Thu, Jan 16, 2020 at 03:00:31PM +0300, Михаил Монашёв wrote:
> > То есть если мы не смогли построить хэш в рамках заданных > > ограничений на максимальное количество бакетов (max size) и размер > > одного бакета (bucket size), то мы построим хэш с максимально > > разрешённым количеством бакетов, игнорируя ограничене на размер > > одного бакета. > > Понятно, т.е. эти настройки фактически про экономию оперативки... Нет. Эти настройки - про скорость работы. В идеале - один бакет должен помещаться в cache line процессора, а бакетов - должно быть минимальное количество, чтобы их адресация также не занимала больших объёмов памяти и легко влезала в кэш процессора. Про это есть статья тут: http://nginx.org/ru/docs/hash.html > А где описано максимально разрешённое количество? Размер одного бакета ограничен значением 64k, так как для отслеживания размеров бакета в процессе построения хеша используется тип short. Ограничение на максимального количество бакетов можно поставить любое. > Это оно http://hg.nginx.org/nginx/file/tip/src/core/ngx_hash.h#l68 ? > #define NGX_HASH_LARGE_ASIZE 16384 > #define NGX_HASH_LARGE_HSIZE 10007 Нет, это константы, используемые при выделении различных внутренних структур для хэшей большого размера. Они ни коим образом ничего не ограничивают. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru