Le linee lente includono Modem, ISDN e tutte le altre connessioni su lunga distanza.
Questa sezione si basa sulla conoscenza dei protocolli usati, ma non su prove reali poiché non ho modo di verificarli. Fatemi sapere le vostre esperienze se avete la possibilità di provare ;-)
La prima cosa da ricordare è che NFS è un protocollo lento. Ha un grosso overhead di sistema. Usare NFS è come usare il kermit per trasferire i file. È veramente lento. Quasi tutto è più veloce di NFS. FTP, HTTP, rcp e ssh sono più veloci.
Siete ancora convinti di volerlo provare? OK.
I parametri predefiniti di NFS sono per linee veloci e con bassa latenza. Se usate questi parametri su linee ad alta latenza si potrebbero verificare errori, operazioni non portate a termine, file che risultano essere più corti di quanto siano in realtà e altri fatti misteriosi.
La prima cosa da fare è di non usare l'opzione per il
mount soft
. Questo potrebbe fare in modo che i timeout restituiscano
errori alle applicazioni, che potrebbero non gestirli correttamente.
Quella appena descritta potrebbe essere la causa di misteriosi fallimenti.
Usate invece l'opzione hard
. Quando l'opzione hard
è attiva, i
timeout generano infiniti tentativi invece di terminare l'operazione
che il software voleva effettuare. Ed è ciò di cui avete bisogno.
La prossima cosa da fare è ingannare le opzioni timeo
e
retrans
. Sono descritte nella pagina man nfs(5), che è
qui riportata [tradotta NdT]:
timeo=n Il valore, in decimi di secondo prima di tentare una ritrasmissione dopo un RPC timeout. Il valore di default è di 7 decimi di secondo. Dopo il primo timeout, il timeout viene raddoppiato dopo ogni successivo timeout fino a un massino di 60 secondi oppure nel caso avvenga un timeout maggiore. Inoltre, se il filesystem è montato in modo hard, ogni nuovo timeout avrà come valore di partenza, il doppio del valore di partenza della sequenza di timeout precedente, che si raddoppia a ogni ritrasmissione. Il massimo timeout rimane di 60 secondi. Le migliori presta- zioni si raggiungono incrementando il valo- re di timeout quando si monta un disco su una rete lenta, su un server lento oppure attraverso router e gateway. retrans=n Il numero di timeout minori e ritrasmis- sioni che si devono verificare prima che si verifichi un timeout maggiore. Il valo- re di default è di 3 timeout. Quando si verifica un timeout maggiore, viene bloc- cata l'operazione sul file e sulla console appare "server not responding".
In altre parole: se non viene ricevuta una risposta entro il timeout di 0,7 secondi (700ms) il client NFS ripeterà la richiesta raddoppiando il timeout a 1,4 secondi. Se non si riceve risposta entro 1,4 secondi la richiesta viene ripetuta ancora e il timeout viene raddoppiato ancora a 2,8 secondi.
La velocità di una linea può essere misurata con un ping con le dimensioni del pacchetto e di rsize/wsize uguali.
$ ping -s 8192 lugulbanda PING lugulbanda.uio.no (129.240.222.99): 8192 data bytes 8200 bytes from 129.240.222.99: icmp_seq=0 ttl=64 time=15.2 ms 8200 bytes from 129.240.222.99: icmp_seq=1 ttl=64 time=15.9 ms 8200 bytes from 129.240.222.99: icmp_seq=2 ttl=64 time=14.9 ms 8200 bytes from 129.240.222.99: icmp_seq=3 ttl=64 time=14.9 ms 8200 bytes from 129.240.222.99: icmp_seq=4 ttl=64 time=15.0 ms --- lugulbanda.uio.no ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max = 14.9/15.1/15.9 ms
Il tempo qui è quanto impiega il pacchetto del ping ad andare
avanti e indietro da lugulbanda. 15 ms è abbastanza veloce. Su
una linea a 28.800 bps ci si può aspettare qualcosa come 4000-5000ms,
e se la linea è molto carica questo tempo sarà ancora più alto,
anche doppio. Quando il tempo è elevato, si dice che la linea ha
elevata latenza. Generalmente per pacchetti più grandi e per linee
cariche, il tempo tende ad aumentare. Aumentate il parametro timeo
per adattarlo alla velocità della linea e al carico. E poiché
la latenza aumenta se si usa la linea per altre operazioni, se volete provare
FTP e NFS allo stesso momento, provate a misurare i tempi del ping
mentre usate NFS e FTP per trasferire i file e aumentare timeo
perché
corrisponda alla latenza della linea.