Mercurial > hg > nginx-site
view xml/en/docs/hash.xml @ 733:7f8e85a50845
Renamed OX X to Mac OS X for uniformity.
author | Sergey Budnevitch <sb@waeme.net> |
---|---|
date | Tue, 16 Oct 2012 12:55:23 +0000 |
parents | af3f38e349eb |
children | d1446e47d17d |
line wrap: on
line source
<!-- Copyright (C) Igor Sysoev Copyright (C) Nginx, Inc. --> <!DOCTYPE article SYSTEM "../../../dtd/article.dtd"> <article name="Setting Up Hashes" link="/en/docs/hash.html" lang="en" rev="1"> <section> <para> To quickly process static sets of data such as server names, <link doc="http/ngx_http_map_module.xml" id="map"/> directive’s values, MIME types, names of request header strings, nginx uses hash tables. During the start and each re-configuration nginx selects the minimum possible sizes of hash tables such that the bucket size that stores keys with identical hash values does not exceed the configured parameter (hash bucket size). The size of a table is expressed in buckets. The adjustment is continued until the table size exceeds the hash max size parameter. Most hashes have the corresponding directives that allow to change these parameters, for example, for the server names hash they are <link doc="http/ngx_http_core_module.xml" id="server_names_hash_max_size"/> and <link doc="http/ngx_http_core_module.xml" id="server_names_hash_bucket_size"/>. </para> <para> The hash bucket size parameter is aligned to the size that is a multiple of the processor’s cache line size. This speeds up key search in a hash on modern processors by reducing the number of memory accesses. If hash bucket size is equal to one processor’s cache line size then the number of memory accesses during the key search will be two in the worst case—first to compute the bucket address, and second during the key search inside the bucket. Therefore, if nginx emits the message requesting to increase either hash max size or hash bucket size then the first parameter should first be increased. </para> </section> </article>