Μέτρηση ταχύτητας δικτύου με τα sch-scripts

Ξεκίνησε από alkisg, 14 Οκτ 2010, 01:12:40 ΠΜ

« προηγούμενο - επόμενο »

alkisg

edit 29/03/2013: διορθωμένη μέθοδος που κάνει σωστά τις μετρήσεις


Τα sch-scripts εγκαθιστούν αυτόματα στον εικονικό δίσκο των τερματικών το πρόγραμμα iperf για μέτρηση της ταχύτητας του τοπικού δικτύου.
Μπορείτε να κάνετε μια μέτρηση κάνοντας τα παρακάτω βήματα, ενόσω βέβαια οι clients δεν ασχολούνται με άλλα πράγματα, γιατί αν π.χ. κάποιος thin client μετακινεί απλά ένα παράθυρο τρώει bandwidth το οποίο δεν θα φαίνεται στη μέτρηση.

Ανοίξτε ένα τερματικό στο server και τρέξτε την εντολή
Κώδικας: shell
iperf -s -xS

Το -s σημαίνει server mode, και το -xS να μην εμφανίσει τα settings για να έχουμε λιγότερο output.

Μέσα από τον Επόπτη (ή τα παλιά sch-scripts της 10.04) πατήστε το κουμπί Εκτέλεση από τη γραμμή εργαλείων, και γράψτε:
Κώδικας: shell
sudo iperf -c server -r


Το -c σημαίνει client mode και το -r σημαίνει "-r, --tradeoff: Do a bidirectional test individually". Δηλαδή να κάνει δύο συνεχόμενα τεστ, ένα με αποστολή και ένα με λήψη δεδομένων.
Στη συνέχεια κοιτάμε την έξοδο του τερματικού στο server. Θα βγάλει δύο ομάδες με outputs.
Η πρώτη αφορά την αποστολή δεδομένων από τους clients στο server, και δεν θα πρέπει να επηρεάζεται από το flow control. Δεν είναι όμως σημαντική για το LTSP.
Η δεύτερη αφορά την αποστολή δεδομένων από το server στους clients και επηρεάζεται από το flow control. Είναι αυτή που μας ενδιαφέρει.

Παράδειγμα εξόδου με δύο clients:
Παράθεση

$ iperf -s -xS
[  4] local 10.160.200.11 port 5001 connected with 10.160.200.242 port 32833
[  5] local 10.160.200.11 port 5001 connected with 10.160.200.155 port 43712
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec   112 MBytes  94.0 Mbits/sec
[  5]  0.0-10.0 sec   112 MBytes  93.9 Mbits/sec
[  4] local 10.160.200.11 port 48337 connected with 10.160.200.242 port 5001
[  5] local 10.160.200.11 port 45048 connected with 10.160.200.155 port 5001
[  5]  0.0-10.0 sec   110 MBytes  92.6 Mbits/sec
[  4]  0.0-10.0 sec  74.8 MBytes  62.5 Mbits/sec


Δηλαδή αυτά που ΔΕΝ μας ενδιαφέρουν είναι τα 94.0, 93.9, και αυτά που μας ενδιαφέρουν τα 92.6, 62.5. Βεβαιωθείτε ότι τα νούμερα της δεύτερης ομάδας είναι όλα πάνω από 50 Mbits/sec και προσθέστε τα για να βρείτε το συνολικό bandwidth του server, το οποίο θα πρέπει να είναι πάνω από 500 Mbits/sec.

Wizard

Άλκη, γα να δούμε τι συμβαίνει με το flow control, πρέπει η μέτρηση που αναφέρεις να γίνει ταυτόχρονα σε όλα τα τερματικά; Δηλαδή, στον server θα το iperf θα εμφανίσει συνολικό bandwidth ή θα εμφανιστεί το κάθε τερματικό ξεχωριστά;

alkisg

#2
Στην εκτέλεση εντολής μέσω sch-scripts, αν δεν έχουμε διαλέξει κανένα τερματικό, τότε η εντολή εκτελείται σε όλα.

Επιλέγουμε λοιπόν είτε όλα τα τερματικά είτε εντελώς κανένα, και έτσι σε όλα μαζί κάνουμε εκτέλεση της παραπάνω εντολής.
Με αυτόν τον τρόπο το iperf θα εκτελεστεί ταυτόχρονα σε όλους τους clients και θα δούμε το συνολικό εύρος του δικτύου.
Στο server το ένα και μοναδικό iperf που τρέχουμε θα μας εμφανίσει για κάθε connection ξεχωριστά το bandwidth, αλλά δεν μας πειράζει εφόσον εκτελούνται ταυτόχρονα.
Στη συνέχεια προσθέτουμε όλα τα bandwidth που εμφανίστηκαν.

Αν είναι πάνω από 100 (π.χ. 500), σημαίνει ότι ο server δουλεύει κανονικά σε gigabit και δεν ασχολούμαστε άλλο μαζί του.
Αν είναι λιγότερο από 100, τότε έχουμε πρόβλημα και πρέπει να κοιτάξουμε το θέμα του flow control.

Να ξαναπώ κι εδώ ότι ο έλεγχος για το flow control έχει νόημα μόνο στην περίπτωση που ο server συνδέεται με το switch με gigabit ταχύτητα και οι clients με 100 Mbps ταχύτητα. Σε άλλες περιπτώσεις δεν μας απασχολεί.


edit: χμμμ ίσως τελικά η παραπάνω μέθοδος να μην μας δείχνει αυτό που θέλουμε, αφού έτσι τα τερματικά στέλνουν δεδομένα στο server, ενώ εμείς θέλουμε να μετρήσουμε το αντίθετο, ο server να στέλνει στα τερματικά (νομίζω ότι το δεύτερο είναι που επηρεάζεται από το flow control ενώ το πρώτο όχι). Με την πρώτη ευκαιρία που θα βρεθώ σε ΣΕΠΕΗΥ μικτής ταχύτητας θα κάνω μετρήσεις για να δω αν μας κάνει αυτή η μέθοδος ή αν πρέπει να εκτελεστεί ανάποδα, με τα τερματικά σε server mode.

alkisg

Παράθεση από: alkisg στις 25 Οκτ 2010, 08:42:18 ΜΜ
edit: χμμμ ίσως τελικά η παραπάνω μέθοδος να μην μας δείχνει αυτό που θέλουμε, αφού έτσι τα τερματικά στέλνουν δεδομένα στο server, ενώ εμείς θέλουμε να μετρήσουμε το αντίθετο, ο server να στέλνει στα τερματικά (νομίζω ότι το δεύτερο είναι που επηρεάζεται από το flow control ενώ το πρώτο όχι). Με την πρώτη ευκαιρία που θα βρεθώ σε ΣΕΠΕΗΥ μικτής ταχύτητας θα κάνω μετρήσεις για να δω αν μας κάνει αυτή η μέθοδος ή αν πρέπει να εκτελεστεί ανάποδα, με τα τερματικά σε server mode.

Όντως τελικά δεν μετράει αυτό που θέλουμε αλλά το ανάποδο.
Με τον mkassapakis μετρήσαμε με την παραπάνω μέθοδο και έβγαινε 90 Mbps σε κάθε τερματικό,
ενώ με την ορθή μέθοδο ήταν 90 Mbps συνολικά.

Επίσης με τη δοκιμή φάνηκε ότι οι κάρτες Realtek ακόμα δεν κάνουν για τον server όταν το δίκτυο είναι μεικτής ταχύτητας. Δεν υποστηρίζουν απενεργοποίηση του flow control.

Περιγράφω εν συντομία μια μέθοδο για σωστή μέτρηση, αλλά επειδή δεν είναι ιδιαίτερα εύκολη θα δω μήπως μπορεί να αυτοματοποιηθεί με τα sch-scripts.
1) Μέσα από τα sch-scripts τρέχουμε σε όλους τους clients "sudo iperf -s" ώστε να τρέξουν το iperf σε server mode.
2) Μέσα από τα sch-scripts βλέπουμε τις IP τους
3) Στον server τρέχουμε:
iperf -c 10.160.31.130 & iperf -c 10.160.31.131 & iperf -c 10.160.31.132

Το & σημαίνει ότι θα τρέξουν όλα ταυτόχρονα.

Αν κάθε client πιάσει από 90 Mbps, όλα καλά.
Αν όλοι μαζί πιάσουν λιγότερα από 100 Mbps, τότε υπάρχει πρόβλημα.

aspd

Παράθεση από: alkisg στις 27 Οκτ 2010, 12:12:30 ΜΜ
Tρέχουμε σε όλους τους clients "sudo iperf -s" ώστε να τρέξουν το iperf σε server mode.
Στον server τρέχουμε:
iperf -c 10.160.31.130 & iperf -c 10.160.31.131 & iperf -c 10.160.31.132

Παραθέτω τις μετρήσεις που έδωσε το iperf στο εργαστήριο του σχολείου μου με 9 fat clients.  Υποθέτω ότι είναι όλα εντάξει. Οι μετρήσεις έγιναν με idle fat clients.

alkisg

aspd μια χαρά φαίνονται όλα, αλλά προφανώς εσύ έχεις gigabit παντού, και στον server και στο switch και στους clients, οπότε δεν χρειάζεται να ασχολείσαι με μετρήσεις...

Οι μετρήσεις είναι μόνο για όσους έχουν gigabit σύνδεση server <=> switch ενώ αντίθετα η σύνδεση switch <=> clients είναι μόνο 100 Mbps. Και ο στόχος των μετρήσεων είναι να βεβαιωθούν ότι δεν έχουν πρόβλημα με το flow control.

Υ.Γ. το ίδιο ισχύει και σε Windows εργαστήρια, δηλαδή αν κάποιος έχει ένα κοινόχρηστο φάκελο στο server και πει στους μαθητές να κατεβάσουν κάποιο πρόγραμμα ή αρχείο από εκεί, το flow control μπορεί να κάνει τη μεταφορά 10 φορές πιο αργή.

aspd

ναι, έχω gigabit παντού, και τα λαμπάκια στο switch είναι όλα πορτοκαλί.

tallis

Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 10.20.25.7 port 5001 connected with 10.20.25.182 port 35440
[  5] local 10.20.25.7 port 5001 connected with 10.20.25.129 port 56431
[  6] local 10.20.25.7 port 5001 connected with 10.20.25.186 port 59202
[  7] local 10.20.25.7 port 5001 connected with 10.20.25.184 port 49995
[  8] local 10.20.25.7 port 5001 connected with 10.20.25.183 port 59589
[  9] local 10.20.25.7 port 5001 connected with 10.20.25.144 port 33814
[ 10] local 10.20.25.7 port 5001 connected with 10.20.25.145 port 38504
[ 11] local 10.20.25.7 port 5001 connected with 10.20.25.146 port 55611
[ 12] local 10.20.25.7 port 5001 connected with 10.20.25.185 port 46859
[ 13] local 10.20.25.7 port 5001 connected with 10.20.25.175 port 35342
[ 14] local 10.20.25.7 port 5001 connected with 10.20.25.187 port 47228
[ 15] local 10.20.25.7 port 5001 connected with 10.20.25.128 port 60834
[ 16] local 10.20.25.7 port 5001 connected with 10.20.25.181 port 33539
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  89.2 MBytes  74.8 Mbits/sec
[  5]  0.0-10.0 sec  84.7 MBytes  71.0 Mbits/sec
[  6]  0.0-10.0 sec  86.5 MBytes  72.4 Mbits/sec
[  7]  0.0-10.0 sec  84.7 MBytes  71.0 Mbits/sec
[  8]  0.0-10.0 sec  87.9 MBytes  73.7 Mbits/sec
[  9]  0.0-10.0 sec  83.7 MBytes  70.2 Mbits/sec
[ 10]  0.0-10.0 sec  89.3 MBytes  74.9 Mbits/sec
[ 11]  0.0-10.0 sec  85.3 MBytes  71.5 Mbits/sec
[ 12]  0.0-10.0 sec  86.0 MBytes  72.1 Mbits/sec
[ 13]  0.0-10.0 sec  89.3 MBytes  74.8 Mbits/sec
[ 14]  0.0-10.0 sec  85.8 MBytes  71.9 Mbits/sec
[ 15]  0.0-10.0 sec  89.1 MBytes  74.7 Mbits/sec
[ 16]  0.0-10.0 sec  85.8 MBytes  71.9 Mbits/sec


Απόστολος Γιόκας
ΠΕ20 - ΕΠΑΛ Ορεστιάδας


tallis

Όντος μια χαρά! ... στο άμεσο μέλλον θα δοκιμάσω να μετρήσω ταυτόχρονα και από τα 3 interfaces.
Απόστολος Γιόκας
ΠΕ20 - ΕΠΑΛ Ορεστιάδας

gidarakos

Σύνθεση:
LTSP (quad core 8g ram)+11 thin (p4 256M ram)+switch 1port 1000Mb (server), 16port 100Mb(thin).
Στον server (gigabit κάρτα) απενεργοποιημένο το flow control.

Δοκίμασα το test για την ταχύτητα και παρατήρησα συνολικά πάνω από 300Mb αλλά σε κάθε client γύρω στα 30Mb.

Έχουμε θέμα;

alkisg

Δεν φαίνεται να έχεις πρόβλημα flow control, ίσως όμως μπορείς να βελτιώσεις την ταχύτητα και να πιάσεις γύρω στα 900.
300 έπιασαν και οι 11 clients ταυτόχρονα; Αν δοκιμάσεις έναν μόνο client πόσο πιάνει; Αν δοκιμάσεις δύο;

Τι κάρτες δικτύου έχουν; Κάνε «Εκτέλεση → Άνοιγμα κονσόλας →  Διαχειριστή, τοπικά» μέσα από τα sch-scripts και τρέξε
lspci -nn -k | grep -A 2 Ethernet

gidarakos

#12
Να ξεκαθαρίσουμε κάτι:
Για τη δοκιμή ακολούθησα τα εξής βήματα:
1. Από sch-scripts επέλεξα όλα τα τερματικά
2. Από μενού sch-scripts: Τερματικά->Εκτέλεση->Εκτέλεση και Εκτέλεση εντολής: sudo iperf -s
3. Ανοίγω την εφαρμογή τερματικό (του Ubuntu) στο server και εκτελώ μία μεγάλη εντολή της μορφής iperf -c 10.x.y.z & iperf -c 10.x.y.z & ... (όπου x.y.z η IP του κάθε client)

Ερωτήσεις:
Α. Σωστά όλα αυτά;
Β. Μήπως το 2 βήμα έπρεπε να γίνει με Τερματικά->Εκτέλεση->Άνοιγμα κονσόλας->Διαχειριστή, τοπικά;
Γ. Γενικά τι διαφορά υπάρχει στο Τερματικά->Εκτέλεση->Εκτέλεση με τις 3 (τρεις) επιλογές του Τερματικά->Εκτέλεση->Άνοιγμα κονσόλας;
Δ. Οπτικά βλέπω τις διαφορές αλλά πότε χρησιμοποιούμε αυτές τις επιλογές;
Ε. Το iperf φαίνεται να εκτελείται συνέχεια στους client. Πρέπει να το διακόψουμε με κάποιο τρόπο, μετά τη δοκιμή;

Υ.Γ. Επειδή στο συγκεκριμένο εργαστήριο δεν κάνω μάθημα, με την πρώτη ευκαιρία θα δοκιμάσουμε αυτά που προτείνεις..

alkisg

Μια χαρά τα έκανες.
Το iperf -s όντως θα λειτουργεί ως την επόμενη επανεκκίνηση των clients. Μπορείτε να το κλείσετε με "sudo killall iperf" μέσα από τα sch-scripts, αλλά και να το αφήσετε δεν ενοχλεί.

Το τερματικό του Ubuntu τρέχει στον server.
Τα τερματικά που μπορούμε να τρέξουμε μέσα από τα sch-scripts όμως όλα τρέχουν στον client, και είναι:

  • Διαχειριστή, απομακρυσμένα. Αυτό μας δίνει πρόσβαση root στον client, αλλά πρέπει να σηκωθούμε από τον server και να κάτσουμε στον client για να το δουλέψουμε.
  • Διαχειριστή, τοπικά. Αυτό πάλι μας δίνει πρόσβαση root στον client, αλλά το βλέπουμε στον server χωρίς να σηκωθούμε.
  • Χρήστη, τοπικά. Αυτό μας δίνει πρόσβαση στο μαθητή, και το βλέπουμε στον server χωρίς να σηκωθούμε.
Το "χρήστη, απομακρυσμένα" δεν υπάρχει, γιατί είναι ισοδύναμο με το να καθήσουμε στον client και να ανοίξουμε ένα τερματικό από τα μενού.

gidarakos

Από τις μετρήσεις παρατηρήσαμε ότι ενώ μέχρι 2 thin είχαμε στο καθένα γύρω στα 90Mbit μετά το τρίτο thin άρχισε να πέφτει η ταχύτητα έτσι ώστε να μας την κρατάει γύρω στα 300Mbit αθροιστικά!
Φαίνεται ότι μετά το δεύτερο thin επειδή πλησιάζουμε τα 300Mbit (αθροιστικά) για κάποιο λόγο ρίχνει την ταχύτητα στα thin έτσι ώστε να είμαστε γύρω στα 300Mbit. Σαν να έχει όριο ο server τα 300Mbit!

Σκέφτομαι με την κάρτα δικτύου του server μήπως έχουμε θέμα...
Δεν έχουμε χρησιμοποιήσει την onboard (http://www.e-shop.gr/show_per.phtml?id=PER.522820) που είναι 1000αρα αλλά μία pci (http://www.e-shop.gr/show_per.phtml?id=PER.616203) επίσης 1000αρα. Αυτό έγινε χωρίς να υπάρχει κάποιος συγκεκριμένος λόγος!

Αύριο αν βρεθεί χρόνος θα προσπαθήσουμε και με την onboard.. Μέχρι τότε κάθε συμβουλή καλοδεχούμενη..

Υ.Γ. Τα thin αν δεν κάνω λάθος έχουν lan realtek.. Αν χρειάζονται λεπτομέρειες για το μοντέλο μπορούμε να το δούμε αύριο και αυτό..