Tuning di NFS

Essendo NFS un servizio basato sull'architettura client/server, il tuning, per ottimizzare le performance del servizio può avvenire sia lato server che lato client.

Ottimizzazione della velocità di trasferimento dati
Tramite le opzioni del comando mount rsize e wsize è possibile specificare la dimensione dei blocchi di dati in lettura e scrittura a livello di client, i valori che si possono indicare dipendono dalla release del kernel e della versione del protocollo NFS utilizzato.
Il protocollo NFS v2 prevede un limite di 8k (Con le patch per implementare NFS over TCP per il kernel 2.4.x si può arrivare fino a 32k), mentre per il protocollo NFS v3 il limite risiede lato server e specificato dalla costante NFSSVC_MAXBLKSIZE.
[neo@dido neo]$ cat /usr/src/linux/include/linux/nfsd/const.h |grep -i nfs
[...]
#define NFSSVC_MAXVERS        3
#define NFSSVC_MAXBLKSIZE    8192
#ifndef NFS_SUPER_MAGIC
# define NFS_SUPER_MAGIC    0x6969
[...]


NFS over TCP
Dal kernel 2.4.20 è possibile selezionare l'opzione "NFS over TCP" dal menu config per l'abilitazione di tale feature con la compilazione del kernel. Il fatto di utilizzare TCP al posto di UDP permette di aggiungere tutti i vantaggi di questo protocollo come la possibilità di ritrasmettere il singolo pacchetto perso piuttosto che tutta l'intera richiesta RPC oltre ad non essere un protocollo stateless come UDP.
In linea di massima questo vantaggio si ha solo in caso di una network non del tutto performante dove per qualche motivo gli errori di trasmissione sono elevati; in caso di una network performante ove gli errori di trasmissione e malformazione dei pacchetti è ridotto al minimo il protocollo UDP può risultare ancora una scelta sensata poichè tale protocollo prevede un tempo di latenza inferiore al protocollo TCP.

Numero istanze di NFSD
La configurazione standard (RedHat) prevede 8 istanze di nfsd, ed è possibile modificare questo valore modificando una variabile (RPCNFSDCOUNT) nello script di gestione del servizio: /etc/rc.d/init.d/nfs:
[root@dido linux]# grep RPCNFSDCOUNT /etc/rc.d/init.d/nfs
RPCNFSDCOUNT=8

Indicativamente il numero di istanze dovrebbe essere maggiore nei server nfs che devono sopportare molto traffico da client diversi e ridotto in quelli che subiscono un trafico minore.

General TIPS
Oltre al tuning specifico di NFS occorre ottimizzare anche tutte quei aspetti non strettamente legati al servizio come la velocità di lettura e di scrittura su disco oppure utilizzare apparati di rete e cablaggio ottimizzati e performanti.

Privacy Policy