I/O: Λίγη θεωρία ουρών, RAID
Ορολογία Δίσκων Καθυστέρηση δίσκου = Queuing Time + Seek Time + Rotation Time + Xfer Time Τάξη μεγέθους (χρόνοι) για μεταφορές 4K byte: Seek: 12 ms Rotate: 4.2 ms @ 7200 rpm (8.3 ms @ 3600 rpm ) Xfer: 1 ms @ 7200 rpm (2 ms @ 3600 rpm)
Review Η βιομηχανία δίσκων βελτιώνεται γρήγορα, αυξάνοντας: bandwidth 40%/έτος, Επιφανειακή πυκνότητα 60%/έτος, $/MB faster? Χρόνος: queue + controller + seek + rotate + transfer Διαφημιζόμενος μέσος χρόνος seek για μετροπρογράμματα αρκετά μεγαλύτερος από τον μέσο χρόνο seek στην πράξη Response time vs. Bandwidth tradeoffs Αξία ταχύτερου response time: 0.7sec μείωση του response εξοικονομεί 4.9 sec & 2.0 sec (70%) συνολικού χρόνου ανά transaction => μεγαλύτερη παραγωγικότητα Καθένας επιτυγχάνει περισσότερα με γρηγορότερο response, αλλά ο άπειρος με γρήγορο response = expert με αργότερο Processor Interface:
Απόδοση I/O Δίσκου
Εισαγωγή σε θεωρία ουρών Ενδιαφέρον για την κατάσταση σε μεγάλο χρόνο, steady state αντί για startup => Arrivals = Departures Νόμος του Little: Μέσος αριθμός εργασιών στο σύστημα = ρυθμός αφίξεων x μέσος χρόνος response Παρατηρείται από πολλούς, ο Little το απέδειξε πρώτος Ισχύει για οποιοδήποτε σύστημα σε ισορροπία, εφόσον τίποτα μέσα στο μαύρο κουτί δεν δημιουργεί ή καταστρέφει εργασίες
Ορολογία Τα μοντέλα ουρών θεωρούν κατάσταση ισορροπίας: ρυθμός εισόδου (input rate) = ρυθμός εξόδου (output rate) Σύμβολα: r μέσος αριθμός αφίξεων πελατών/second Tser μέσος χρόνος για εξυπηρέτηση πελάτη (τυπικά, μ = 1/ Tser ) u server utilization (0..1): u = r x Tser (ή u = r / Tser ) Tq μέσος χρόνος /πελάτη στην ουρά Tsys μέσος χρόνος / πελάτη στο σύστημα: Tsys = Tq + Tser Lq μέσο μήκος ουράς: Lq = r x Tq Lsys μέσος μήκος συστήματος: Lsys = r x Tsys Νόμος του Little: Lengthsystem = rate x Timesystem (Μέσος αριθμός πελατών = ρυθμός αφίξεων x μέσος χρόνος εξυπηρέτησης)
Λίγη θεωρία ουρών Ολοκληρώσεις service time vs. waiting time για απασχολημένο εξυπηρετητή: γεγονός που καταφθάνει τυχαία μπαίνει στην ουρά τυχαίου μήκους όταν ο server είναι απασχολημένος, αλλιώς εξυπηρετείται αμέσως Απλοποίηση: ουρές απείρου μήκους Μία ουρά single server : συνδιασμός serving facility που εξυπηρετεί 1 πελάτη κάθε φορά (server) + χώρος αναμονής (queue): μαζί ονομάζονται σύστημα (system) Ο εξυπηρετητής αφιερώνει μεταβλητό (variable) χρόνο στους πελάτες; Πως χαρακτηρίζετε την μεταβλητότητα? Κατανομή τυχαίας μεταβλητής: ιστόγραμμα? καμπύλη?
Λίγη θεωρία ουρών Ο εξυπηρετητής αφιερώνει μεταβλητό (variable) χρόνο στους πελάτες Weighted mean m1 = (f1 x T1 + f2 x T2 +...+ fn x Tn)/F (F=f1 + f2...) variance = (f1 x T12 + f2 x T22 +...+ fn x Tn2)/F m12» Πρέπει να θυμόμαστε την μονάδα μέτρησης (100 ms2 vs. 0.1 s2 ) Squared coefficient of variance: C = variance/m12» Καθαρός αριθμός (100 ms2 vs. 0.1 s2) Εκθετική κατανομή C = 1 : τα περισσότερα μικρά είναι σχετικά με το average, λίγα άλλα μεγάλα. 90% < 2.3 x average, 63% < average Υπο-εκθετική κατανομή C < 1 : τα περισσότερα κοντά στο average, C=0.5 => 90% < 2.0 x average, μόνο 57% < average Υπερ-εκθετική κατανομή C > 1 : πιο μακριά από το average C=2.0 => 90% < 2.8 x average, 69% < average
Λίγη θεωρία ουρών Ο εξυπηρετητής αφιερώνει μεταβλητό χρόνο στους πελάτες Weighted mean m1 = (f1xt1 + f2xt2 +...+ fnxtn)/f (F=f1+f2+...) Squared coefficient of variance C Χρόνοι απόκρισης δίσκων C - 1.5 (πλειοψηφία των seeks < average) Παρ όλα αυτά, συνήθως επιλέγουμε C = 1.0 για απλότητα Άλλη χρήσιμη τιμή είναι ο μέσος χρόνος αναμονής για τον server να τελειώσει την εργασία: m1(z) Όχι απλά το 1/2 x m1 γιατί δεν πιάνει την διασπορά Καλύτερο: m1(z) = 1/2 x m1 x (1 + C) No variance => C= 0 => m1(z) = 1/2 x m1
Λίγη θεωρία ουρών Υπολογίζοντας τον μέσο χρόνο αναμονής στην ουρά Tq Εάν υπάρχει κάτι στον server, χρειάζεται κατά μέσο όρο m1(z) Πιθανότητα να είναι απασχολημένος ο server = u; Η μέση καθυστέρηση είναι u x m1(z) Όλοι οι πελάτες στην ουρά πρέπει να τελειώσουν; Καθένας κατά μέσο όρο Tser Tq = u xm1(z) + Lq x Ts er= 1/2 x u x Tser x (1 + C) + Lq x Ts er Tq = 1/2 x u x Ts er x (1 + C) + r x Tqx Ts er Tq = 1/2 x u x Ts er x (1 + C) + u x Tq Tq x (1 u) = Ts er x u x (1 + C) /2 Tq = Ts er x u x (1 + C) / (2 x (1 u)) Συμβολισμός: r μέσος αριθμός αφίξεων πελατών/second Tser μέσος χρόνος να εξυπηρετηθεί ένας πελάτης u server utilization (0..1): u = r x Tser Tq μέσος χρόνος/πελάτη στην ουρά Lq μέσο μήκος ουράς:lq= r x Tq
Λίγη θεωρία ουρών: M/G/1 & M/M/1 Υποθέσεις μέχρι τώρα: Το σύστημα σε ισορροπία Τυχαίος χρόνος μεταξύ δύο αφίξεων Ο server μπορεί να εξυπηρετήσει τον επόμενο πελάτη αμέσως μόλις τελειώσει ο προηγούμενος Άπειρη ουρά: δουλεύει First-In-First-Out Όλοι οι πελάτες πρέπει να τελειώσουν. Ο καθένας με μέσο χρόνο Tser Περιγράφεται ως memoryless ή Markovian αφίξεις αιτήσεων (M για C=1 εκθετικά τυχαία), General service κατανομή (χωρίς περιορισμούς), 1 server: M/G/1 queue Όταν οι χρόνοι service έχουν C = 1, M/M/1 queue Tq = Tser x u x (1 + C) /(2 x (1 u)) = Tser x u / (1 u) Tser μέσος χρόνος εξυπηρέτησης πελάτη u server utilization (0..1): u = r x Tser
Λίγη θεωρία ουρών: Παράδειγμα Ο επεξεργαστής στέλνει 10 x 8KB disk I/Os ανά second, requests & service με εκθετική κατανομή, μέσο disk service = 20 ms Κατά μέσο όρο, πως χρησιμοποιείται ο δίσκος? Ποιός είναι ο αριθμός αιτήσεων (requests) στην ουρά? Ποιός είναι ο μέσος χρόνος αναμονής στην ουρά? Ποιός είναι ο μέσος χρόνος απόκρισης (average response time) μιας αίτησης στον δίσκο? Σύμβολα: r μέσος αριθμός αφίξεων πελατών/second = 10 Tser μέσος χρόνος εξυπηρέτησης πελάτη = 20 ms (0.02s) u server utilization (0..1): u = r x Tser= 10/s x.02s = 0.2 Tq μέσος χρόνος/πελάτη στην ουρά = Tser x u / (1 u) = 20 x 0.2/(1-0.2) = 20 x 0.25 = 5 ms (0.005s) Tsys μέσος χρόνος/πελάτη στο σύστημα: Tsys =Tq +Tser= 25 ms Lq μέσο μήκος ουράς: Lq= r x Tq = 10/s x.005s = 0.05 αιτήσεις στην ουρά Lsys μέσος # εργασιών στο σύστημα: Lsys = r x Tsys = 10/s x.025s = 0.25
Λίγη θεωρία ουρών: Άλλο παράδειγμα Ο επεξεργαστής στέλνει 20 x 8KB disk I/Os ανά sec, requests & service με εκθετική κατανομή, μέσο disk service = 12 ms Κατά μέσο όρο, πως χρησιμοποιείται ο δίσκος? Ποιός είναι ο αριθμός αιτήσεων (requests) στην ουρά? Ποιός είναι ο μέσος χρόνος αναμονής στην ουρά? Ποιός είναι ο μέσος χρόνος απόκρισης (average response time) μιας αίτησης στον δίσκο? Σύμβολα: r μέσος αριθμός αφίξεων πελατών/second = 20 Tser μέσος χρόνος εξυπηρέτησης πελάτη = 12 ms u server utilization (0..1): u = r x Tser= /s x. s = Tq μέσος χρόνος/πελάτη στην ουρά = Ts er x u / (1 u) = x /( ) = x = ms Tsys μέσος χρόνος/πελάτη στο σύστημα : Tsys =Tq +Tser= 16 ms Lq =μ έ σο /μsή xκ ο ς ουsρ =ά ςαι:τlήqσ= εrι ςx σtτqην ουρά Lsys μέσος # εργασιών στο σύστημα : Lsys = r x Tsys = /s x s =
Λίγη θεωρία ουρών: Άλλο παράδειγμα Ο επεξεργαστής στέλνει 20 x 8KB disk I/Os ανά sec,requests & service με εκθετική κατανομή, μέσο disk service = 12 ms Κατά μέσο όρο, πως χρησιμοποιείται ο δίσκος? Ποιός είναι ο αριθμός αιτήσεων (requests) στην ουρά? Ποιός είναι ο μέσος χρόνος αναμονής στην ουρά? Ποιός είναι ο μέσος χρόνος απόκρισης (average response time) μιας αίτησης στον δίσκο? Σύμβολα: r μέσος αριθμός αφίξεων πελατών/second = 20 Tser μέσος χρόνος εξυπηρέτησης πελάτη = 12 ms u server utilization (0..1): u = r x Tser= 20/s x.012s = 0.24 Tq μέσος χρόνος/πελάτη στην ουρά = Ts er x u / (1 u) = 12 x 0.24/(1-0.24) = 12 x 0.32 = 3.8 ms Tsys μέσος χρόνος/πελάτη στο σύστημα : Tsys =Tq +Tser= 15.8 ms Lq =μ έ2σ0ο/sμ xή κ.0ο0ς3ο8sυ ρ=ά 0ς.0:L7q6= α rι τxή Tσqεις στην ουρά Lsys μέσος # εργασιών στο σύστημα : Lsys = r x Tsys = 20/s x.016s = 0.32
Λίγη θεωρία ουρών: κι άλλο παράδειγμα Υποθέστε ότι ο επεξεργαστής στέλνει 10 x 8KB disk I/Os ανά second, squared coef. var.(c) = 1.5, μέσο disk service time = 20 ms Κατά μέσο όρο, πως χρησιμοποιείται ο δίσκος? Ποιός είναι ο αριθμός αιτήσεων (requests) στην ουρά? Ποιός είναι ο μέσος χρόνος αναμονής στην ουρά? Ποιός είναι ο μέσος χρόνος απόκρισης (average response time) μιας αίτησης στον δίσκο? Σύμβολα : r μέσος αριθμός αφίξεων πελατών/second = 10 Tser μέσος χρόνος εξυπηρέτησης πελάτη = 20 ms u server utilization (0..1): u = r x Tser= 10/s x.02s = 0.2 Tq μέσος χρόνος/πελάτη στην ουρά = Tser x u x (1 + C) /(2 x (1 u)) = 20 x 0.2(2.5)/2(1 0.2) = 20 x 0.32 = 6.25 ms Tsys μέσος χρόνος/πελάτη στο σύστημα : Tsys = Tq +Tser= 26 ms Lq μέσο μήκ=ο 1ς0ο/sυ ρxά.0ς0:6lsq= = r 0 x.0 T6q αιτήσεις στην ουρά Lsys μέσος # εργασιών στο σύστημα :Lsys = r x Tsys = 10/s x.026s = 0.26
NAS: Network Attached Storage
Κατασκευαστικά πλεονεκτήματα Disk Arrays
Αντικατάσταση μικρού # μεγάλων δίσκων με μεγάλο # μικρών δίσκων! (Δίσκοι 1988 )
Αξιοπιστία Array Αξιοπιστία N δίσκων = Αξιοπιστία 1 δίσκου N 50,000 Hours 70 disks = 700 hours MTTF συστήματος δίσκων: πέφτει από 6 χρόνια σε 1 μήνα! Arrays (χωρίς πλεονασμό) πολύ αναξιόπιστοι! Τα hot spares υποστηρίζουν επανα-κατασκευή Δεδομένωνre παράλληλα με πρόσβαση: μπορεί να επιτευχθεί πολύ υψηλό media availability
Πλεονάζοντες Disk Arrays Τα αρχεία χωρίζονται σε "strips" σε πολλαπλούς δίσκους Ο πλεονασμός οδηγεί σε υψηλό data availability Δίσκοι θα αποτύχουν Τα περιεχόμενα ανα-κατασκευάζονται από πλεονάζοντα δεδομένα που αποθηκεύονται στο array
Redundant Arrays of Disks RAID 1: Disk Mirroring/Shadowing Κάθε δίσκος έχει αντιγραφεί σε "shadow" Μπορεί να επιτευχθεί υψηλή διαθεσιμότητα Θυσιάζεται Bandwidth στο write: Logical write = two physical writes Μπορούν να βελτιστοποιηθούν τα Reads Η πιο ακριβή λύση: 100% capacity overhead Στοχεύει σε περιβάλλοντα για υψηλό ρυθμό I/O, υψηλή διαθεσιμότητα
RAID 3: Parity Disk Το Parity υπολογίζεται στο recovery group για να προστατεύσει από αποτυχίες δίσκων κόστος 33% capacity για το parity στο παραπάνω πιο ευρεία arrays μειώνουν το κόστος capacity, μειώνουν την αναμενόμενη διαθεσιμότητα, αυξάνουν τον χόνο ανα-κατασκευής Οι βραχίονες είναι λογικά συγχρονισμένοι, οι δίσκοι rotationally Συγχρονισμένοι λογικά ένα μοναδικό υψηλό capacity, υψηλός ρυθμός μεταφοράς Στοχεύει εφαρμογές υψηλού bandwidth: επιστημονικές, Image Processing
RAID 5+: High I/O Rate Parity
Προβλήματα των Disk Arrays: Μικρά Writes