Next Previous Contents

5. NFS over trege linjer

Trege linjer inkluderer modemer, ISDN og sansynligvis andre lang- distanse forbindelser.

Denne delen er baserert på viten om protokoller som er i bruk, men ingen faktiske eksperimenter. Min egen datamaskin har vært nede i 6 måneder (dårlig harddisk, lite penger) så jeg har ikke hatt noen modemforbindelse å teste dette med. Hør gjerne fra deg hvis du prøver dette :-)

Det første du må huske er at NFS er et tregt protokoll. Det har høyt overhode (overhead). Å bruke NFS er nesten som å bruke kermit til å overføre filer. Det er tregt. Nesten alt er raskere enn NFS. FTP er raskere HTTP er raskere. rcp er raskere. ssh er raskere.

Fortsatt bestemt på å prøve det? Ok.

NFS sine standard valg er for ganske raske linjer. Hvis du bruker disse valgene på linjer med høy belastning (high latency) kan det forårsake NFS til å rapportere feil, stoppe operasjoner, late som om filer er kortere enn de virkelig er, og operere merkelig på andre måter.

Det første som må gjøres er å ikke bruke soft mount valg. Dette vil forårsake timeouter til å returnere feil til programvaren, som mest sansynlig ikke vil takle situasjonen godt i det hele tatt. Det er en god måte å få merkelige feil. Istedet bruk hard valget. Når hard er aktiv fortsettes det uendelig når timeout kommer istedet for å stoppe det programvaren ønsket å gjøre. Dette er det du ønsker. Virkelig.

Det neste som må gjøres er å tweake timeo og retrans mount valgene. Disse er forklart i nfs(5) man siden, men her er en kopi: (Oversatt til norsk (GE))


         timeo=n        Verdien i tideler av et sekund før første
                        re-sending foretaes etter en RPC timeout.
                        Standardverien er 7 tideler av et sekund.
                        Etter første timeout, dobbles timeout etter
                        hver timeout inntil et maksimum på 60
                        sekunder nåes eller nok re-sendinger har
                        blitt foretatt til å forårsake en stor
                        timeout. Da, hvis filsystemet er hard
                        montert, hver nye timeout kaskade restarter
                        på doble start verdi av forrige kaskade,
                        som igjen dobler ved hver re-sending. Maks
                        timeout er alltid 60 sekunder. Bedre total
                        ytelse kan oppnåes ved å øke timeouten ved
                        montering over et opptatt nettverk, for å
                        roe serveren, eller gjennom flere routere
                        eller gatewayer.

         retrans=n      Antallet mindre timeout og re-sendinger
                        som må oppstå før en stor timeout oppstår.
                        Standarden er 3 timeouter. Når en stor 
                        timeout oppstår, vil filoperasjonen enten
                        stoppe eller en "server not responding"
                        melding vil bli skrevet i konsollen.
 

Med andre ord: Hvis et svar ikke er mottatt innen 0.7 sekunder (700ms) vil NFS klienten fortsette å gjenta ønsket og doble timeout tiden til 1.4 sekunder. Hvis ikke et svar dukker opp innen de 1.4 sekundene, gjentas ønsket med en ny dobling sv timeouten (2.8 sekunder).

En linjes fart kan måles med ping med samme pakke størrelse som dine rsize/wsize valg.


$ 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

Tiden her er tida ping pakken brukte på å dra fram og tilbake til lugulbanda. 15ms er ganske raskt. Over en 28.000 bps linje kan du regne med noe som 4000-5000ms, og hvis linjen på andre måter er belastet vil denne tiden økes, og lett dobles. Når denne tiden er høy sier vi at det er 'high latency'. Generelt, for større pakker og for mer belastede linjer vil latencyen ofte øke. Øk timeo nok for din linje og belastning. Og siden latency øker når du bruker linjen til andre ting: Hvis du ønsker å bruke FTP og NFS samtidig bør du måle med ping mens du bruker FTP til å overføre filer.


Next Previous Contents