Οι αργές γραμμές περιλαμβάνουν τα modems, το ISDN, και πιθανότατα άλλες συνδέσεις μακρών αποστάσεων.
Αυτό το τμήμα βασίζεται σε γνώσεις σχετικά με τα χρησιμοποιούμενα πρωτόκολλα, αλλά όχι σε πραγματικές πειραματικές δοκιμές. Παρακαλώ, ενημερώστε με, αν δοκιμάσετε τα παρακάτω! ;-)
Το πρώτο πράγμα που πρέπει να θυμάστε, είναι πως το NFS είναι αργό πρωτόκολλο. Έχει μεγάλη εισαγωγή. Το να χρησιμοποιείς το NFS γιά να μεταφέρεις αρχεία, είναι σχεδόν σα να χρησιμοποιείς το πρωτόκολλο kermit. Είναι αργό. Σχεδόν οποιοδήποτε άλλο είναι ταχύτερο του NFS. Το FTP είναι ταχύτερο. Το HTTP είναι ταχύτερο. Τα rcp και ssh είναι ταχύτερα.
Ακόμη αποφασισμένοι να δοκιμάσετε; Ok.
Οι default παράμετροι του NFS είναι γιά σχετικά γρήγορες γραμμές, με μικρό χρόνο αναμονής. Αν χρησιμοποιήσετε αυτές τις default παραμέτρους σε αργές γραμμές υψηλής αναμονής, θα κάνουν το NFS να βγάζει μηνύματα λαθών σχετικά με τις εργασίες του, να σας λέει ότι τα αρχεία είναι μικρότερα απ' όσο πραγματικά είναι, και να κάνει διάφορα άλλα μυστήρια πράγματα.
Το πρώτο πράγμα που πρέπει να κάνετε, είναι να μην χρησιμοποιήσετε
την επιλογή soft
mount. Αυτή θα κάνει τα timeouts να επιστρέφουν
κώδικες λαθών στο software, πράγμα που πιθανότατα δεν θα είναι καθόλου
καλός χειρισμός της κατάστασης. Αυτός είναι ωραίος τρόπος γιά να κερδίσετε
μυστηριώδη κολλήματα. αντίθετα, χρησιμοποιείστε την hard
mount option.
Όταν η hard
είναι ενεργοποιημένη, τα timeouts προκαλούν άπειρες
προσπάθειες επαναλειτουργίας, αντί να παρατήσουν ό,τι προσπαθούσε το
software να κάνει. Και πραγματικά, αυτό είναι αυτό ακριβώς που θέλετε.
Το επόμενο πράγμα που πρέπει να κάνετε, είναι να σκαλίσετε τις επιλογές
του mount timeo
και retrans
. Αυτές περιγράφονται στη man σελίδα
nfs(5), αλλά πάρτε κι ένα αντίγραφο εδώ :
timeo=n Η τιμή σε δέκατα του δευτερολέπτου, πριν σταλεί η πρώτη επανεκπομπή μετά από ένα RPC timeout. Η default τιμή είναι 7 δέκατα του δευτερολέπτου. Μετά το πρώτο timeout, το timeout διπλασιάζεται διαδοχικά, μέχρις ότου φτάσουμε σ' ένα μέγιστο timeout των 60 δευτερολέπτων, ή έχουν συμβεί αρκετές επανεκπομπές, ώστε να προκαλέσουν ένα μείζον time- out. Τότε, αν το filesystem είναι hard mounted, κάθε νέα διαδοχή timeouts ξαναρχίζει με διπλάσια αρχική τιμή της προηγούμενης σειράς, και ξανά διπλασιάζεται με κάθε επανεκπομπή. Το μέγιστο timeout είναι πάντα 60 δευτερόλεπτα. Μπορούμε να επιτύχουμε καλύτερη συνολική απόδοση, αυξάνοντας το timeout σ' ένα δίκτυο με φόρτο εργασίας, σ' έναν αργό server, ή μέσω πολλών routers ή gateways. retrans=n Ο αριθμός των μικρών timeouts και επανεκπομπών που πρέπει να συμβούν, πριν εμφανιστεί ένα μείζον timeout. Η default τιμή είναι 3 timeouts. Όταν εμφανιστεί ένα μείζον timeout, είτε εγκαταλείπεται η εργασία που γίνεται πάνω στο αρχείο, ή εμφανίζεται στην κονσόλα ένα μήνυμα "server not responding" (ο server δεν αποκρίνεται).
Μ' άλλα λόγια : Αν μιά απάντηση δεν έρθει μέσα στον χρόνο του timeout των 0.7 δευτερολέπτων (700ms), ο NFS client θα επαναλάβει την αίτηση, και θα διπλασιάσει το timeout σε 1.4 δευτερόλεπτα. Εάν η απάντηση δεν φανεί μέσα σε 1.4 δευτερόλεπτα, η αίτηση θα επαναληφθεί, και το timeout θα επαναδιπλασιαστεί στα 2.8 δευτερόλεπτα.
Η ταχύτητα μιας γραμμής μπορεί να μετρηθεί με ping ενός πακέτου με το ίδιο μέγεθος με τα rsize/wsize.
$ 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
Εδώ, ο χρόνος αναφέρεται στο πόσο έκανε το πακέτο του ping, γιά να πάει
μπρος-πίσω στο lugulbanda. (Τα 15ms είναι αρκετά γρήγορα.) Σε μιά γραμμή
28 kbps μπορείτε να περιμένετε κάτι σαν 4000-5000ms, και αν η γραμμή είναι
φορτωμένη, αυτός ο χρόνος θα είναι ακόμη μεγαλύτερος - πολύ εύκολα φτάνει
στη διπλάσια τιμή. Όταν αυτός ο χρόνος είναι μεγάλος, τότε λέμε ότι
υπάρχει "υψηλή αναμονή". Γενικά, γιά μεγαλύτερα πακέτα και γιά
περισσότερο φορτωμένες γραμμές, η αναμονή αυξάνεται. Αυξήστε κατάλληλα το
timeo
γιά τη γραμμή και το φορτίο σας. Και, μιά που η αναμονή
αυξάνεται, όταν χρησιμοποιείτε τη γραμμή και γιά άλλες δουλειές : Αν ποτέ
θελήσετε να χρησιμοποιήσετε τα FTP και NFS ταυτόχρονα, πρέπει να δοκιμάσετε
να μετρήσετε τους χρόνους ping ενώ χρησιμοποιείτε το FTP γιά μεταφορά
αρχείων, και ν' αυξήσετε το timeo
ώστε να ταιριάζει με την αναμονή της
γραμμής σας.