1018
|
1 <!--
|
|
2 Copyright (C) Igor Sysoev
|
|
3 Copyright (C) Nginx, Inc.
|
|
4 -->
|
|
5
|
|
6 <!DOCTYPE article SYSTEM "../../../dtd/article.dtd">
|
|
7
|
|
8 <article name="Messa a punto degli hash"
|
|
9 link="/it/docs/hash.html"
|
|
10 lang="it"
|
|
11 translator="Angelo Papadia"
|
|
12 rev="1">
|
|
13
|
|
14 <section>
|
|
15
|
|
16 <para>
|
|
17 Per processare rapidamente insiemi di dati, quali ad esempio
|
|
18 nomi di server, valori relativi alla direttiva
|
|
19 <link doc="http/ngx_http_map_module.xml" id="map"/>,
|
|
20 MIME type, stringhe di nomi di header di richiesta,
|
|
21 ngnix usa tabelle di hash.
|
|
22 Durante l'avvio ed in seguito ad ogni rilettura della configurazione,
|
|
23 nginx seleziona la minore dimensione possibile delle tabelle
|
|
24 di hash, tale che la dimensione del bucket che memorizza le chiavi
|
|
25 con identico valore hash non superi il relativo parametro configurato
|
|
26 (hash bucket size).
|
|
27 La dimensione di una tabella e' espressa in bucket; tale dimensione
|
|
28 viene regolata continuamente, sinche' la dimensione non eccede il
|
|
29 valore configurato (hash max size).
|
|
30 Molti hash dispongono di specifiche direttive che consentono la modifica
|
|
31 di tali parametri; ad esempio, per l'hash dei nomi dei server esistono
|
|
32 <link doc="http/ngx_http_core_module.xml" id="server_names_hash_bucket_size"/>
|
|
33 e <link doc="http/ngx_http_core_module.xml" id="server_names_hash_max_size"/>.
|
|
34 </para>
|
|
35
|
|
36 <para>
|
|
37 Il parametro hash bucket size e' allineato ad una dimensione
|
|
38 multipla di quella di una linea di cache del processore utilizzato;
|
|
39 nei moderni processori cio' riduce il numero di accessi alla memoria
|
|
40 e quindi il tempo necessario a ricercare la chiave di un hash.
|
|
41 Se la dimensione del bucket hash e' pari a quella di una linea di
|
|
42 cache, allora il numero di accessi alla memoria durante la ricerca di
|
|
43 una chiave sara' nel peggiore dei casi pari a due —uno per l'indirizzo
|
|
44 del bucket, l'altro durante la ricerca della chiave nel bucket.
|
|
45 Per tale ragione, se nginx mostra un messaggio che suggerisce
|
|
46 l'incremento o della dimensione massima dell'hash oppure della
|
|
47 dimensione del bucket hash, e' preferibile intervenire anzitutto
|
|
48 sul primo dei due parametri e non modificare per quanto possibile
|
|
49 il secondo.
|
|
50 </para>
|
|
51
|
|
52 </section>
|
|
53
|
|
54 </article>
|