 | Edit 03/02/2016: μετά από διάφορες βελτιώσεις στα sch-scripts, πλέον δεν χρειάζεται ιδιαίτερη προσοχή στην αγορά switch και καρτών δικτύου, μπορείτε να αγοράσετε ό,τι μάρκα θέλετε, οπότε αγνοήστε το παρόν μήνυμα και διαβάστε τη σύνοψή του εδώ. |
Η ταχύτητα του τοπικού δικτύου είναι πάρα πολύ σημαντική στο LTSP. Παρακάτω περιγράφεται ένα πιθανό πρόβλημα το οποίο μπορεί να κάνει το δίκτυό σας 10 φορές πιο αργό αν δεν προσέξετε κατά την αγορά switch και κάρτας δικτύου για το server.
Το πρόβλημα είναι ανεξάρτητο από το λειτουργικό σύστημα, δηλαδή αν έχετε Windows και θέλετε να προβάλλετε την οθόνη του καθηγητή στους μαθητές ή να τους στείλετε μεγάλα αρχεία, καλό θα ήταν να διαβάσετε κι εσείς το παρόν θέμα.
Ποιους επηρεάζει το πρόβλημα:Server | Switch | Clients | Προσοχή; | Συνολική ταχύτητα δικτύου |
Gigabit | Πλήρως gigabit | Gigabit | Όχι | Gigabit |
Gigabit | Πλήρως gigabit | 100 Mbps | Ναι | 100 Mbps ή gigabit |
Gigabit | Μόνο 1-2 θύρες gigabit | 100 Mbps | Ναι | 100 Mbps ή gigabit |
100 Mbps | 100 Mbps | 100 Mbps | Όχι | 100 Mbps |
Αν είστε στις δύο μεσαίες κατηγορίες συνεχίστε το διάβασμα για να αποφύγετε το πρόβλημα που δημιουργεί το flow control, καθώς αν δεν προσέξετε θα κάνει το δίκτυό σας 10 φορές πιο αργό, δηλαδή 100 Mbps αντί για Gigabit, με τεράστιες επιπτώσεις στην ταχύτητα του LTSP.
Αν είστε στην πρώτη ή την τελευταία κατηγορία, αδιαφορήστε.
Θεωρία:Το flow control είναι μια δυνατότητα του ethernet κατά την οποία αν μια γρήγορη συσκευή (ο server) στέλνει πολλά δεδομένα σε μια αργή συσκευή (το switch), τότε αυτή ειδοποιεί τον server να κάνει παύση και να μη στέλνει άλλα δεδομένα για λίγο.
Όταν για παράδειγμα ο gigabit server προσπαθήσει να στείλει μια εικόνα στον 100 Mbps client1, τότε ο buffer του switch θα γεμίσει και αυτό θα στείλει σήμα παύσης στον server να σταματήσει για λίγο να στέλνει δεδομένα.
Δυστυχώς ο server θα σταματήσει εντελώς, και δεν θα στέλνει ούτε στους άλλους clients. Αυτό είναι το πρόβλημα και λέγεται "head of line blocking".
Λύσεις:Υπάρχουν δύο τρόποι να λυθεί:
- Ένα καλό switch καταλαβαίνει ότι ο server μπορεί να θέλει να στείλει και σε άλλους clients, και έτσι δεν του στέλνει σήματα παύσης.
Μερικά switch είναι managed και σ' αυτά ο υπεύθυνος ΣΕΠΕΗΥ θα πρέπει να μπει στο web interface τους και να τα ρυθμίσει κατάλληλα. - Η κάρτα δικτύου του server μπορεί να υποστηρίζει την απενεργοποίηση του flow control, και επομένως να αγνοεί τα σήματα παύσης που του στέλνει το switch.
Τα sch-scripts απενεργοποιούν το flow control σε όσες κάρτες το υποστηρίζουν, επομένως δεν χρειάζεται να κάνει κάτι ο υπεύθυνος ΣΕΠΕΗΥ που τα χρησιμοποιεί. Οι χρήστες Windows θα πρέπει να απενεργοποιήσουν το flow control από τις ιδιότητες της κάρτας δικτύου στον device manager.
Καλά switch:Προβληματικά switch:Καλές κάρτες δικτύου:Εδώ να αναγράφουμε όποιες κάρτες δικτύου επιβεβαιωμένα υποστηρίζουν την απενεργοποίηση του flow control.
Να επισημάνω ότι οι κάρτες δικτύου των clients δεν έχουν σχέση με το πρόβλημα, ενδιαφερόμαστε μόνο για την κάρτα δικτύου του server.
Επίσης, θέλουμε είτε καλό switch είτε καλή κάρτα δικτύου στον server, δεν χρειάζονται και τα δύο.
Κάποιες Intel, Broadcom και Marvell που δοκίμασα υποστήριζαν την απενεργοποίηση του flow control.
Επιβεβαιωμένα καλές:
03:00.0 Ethernet controller [0200]: Intel Corporation 82541PI Gigabit Ethernet Controller [8086:107c] (rev 05)
Subsystem: Intel Corporation PRO/1000 GT Desktop Adapter [8086:1376]
Kernel driver in use: e1000
00:0b.0 Ethernet controller [0200]: D-Link System Inc DGE-530T Gigabit Ethernet Adapter (rev 11) [1186:4b01] (rev 11)
Subsystem: D-Link System Inc DGE-530T Gigabit Ethernet Adapter (rev 11) [1186:4b01]
Kernel driver in use: skge
03:01.0 Ethernet controller [0200]: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller [11ab:4320] (rev 12)
Subsystem: Standard Microsystems Corp [SMC] EZ Card 1000 (SMC9452TXV.2) [10b8:b452]
Kernel driver in use: skge
08:00.0 Ethernet controller [0200]: Broadcom Corporation NetLink BCM5787M Gigabit Ethernet PCI Express [14e4:1693] (rev 02)
Kernel driver in use: tg3
Kernel modules: tg3
00:0a.0 Ethernet controller [0200]: nVidia Corporation MCP77 Ethernet [10de:0760] (rev a2)
Kernel driver in use: forcedeth
Kernel modules: forcedeth
Για laptop που έχουν 100ρα κάρτα δικτύου, η
παρακάτω PCMCIA gigabit κάρτα αναφέρθηκε να δουλεύει καλά:
03:00.0 Ethernet controller [0200]: LSI Corporation ET-131x PCI-E Ethernet Controller [11c1:ed00] (rev 02)
Subsystem: LSI Corporation ET-131x PCI-E Ethernet Controller [11c1:ed00]
Kernel driver in use: et131x
Προβληματικές κάρτες δικτύου:Εδώ να αναγράφουμε όποιες κάρτες δικτύου επιβεβαιωμένα δεν υποστηρίζουν την απενεργοποίηση του flow control.
Όσες έχω δοκιμάσει που να βασίζονται σε τσιπάκι Realtek δεν υποστηρίζουν απενεργοποίηση του flow control, παρόλα αυτά από 12.04 και μετά φαίνεται να μην έχουν σοβαρό πρόβλημα.
Αντίθετα, οι Atheros όχι μόνο δεν υποστηρίζουν απενεργοποίηση του flow control, αλλά αντιδρούν τόσο χάλια στα σήματα pause, που πάνε πιο αργά και από 100 Mbps κάρτα.
01:00.0 Ethernet controller [0200]: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0)
Subsystem: ASUSTeK Computer Inc. Device [1043:831c]
Kernel driver in use: ATL1E
Μέθοδος επιβεβαίωσης:Εύρεση μοντέλου κάρτας:
$ lspci -nn -k | grep -A 2 Ethernet
08:00.0 Ethernet controller [0200]: Broadcom Corporation NetLink BCM5787M Gigabit Ethernet PCI Express [14e4:1693] (rev 02)
Kernel driver in use: tg3
Kernel modules: tg3
Απενεργοποίηση του flow control:
$ sudo ethtool --pause eth0 autoneg on rx off
Επιβεβαίωση ότι έχει απενεργοποιηθεί:
$ sudo ethtool --show-pause eth0
Pause parameters for eth0:
Autonegotiate: on
RX: off
TX: on