Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεΚῆρες Χριστόπουλος Τροποποιήθηκε πριν 8 χρόνια
1
Διπλωματική Εργασία Τροποποίηση της υλοποίησης διαδικτυακών πρωτοκόλλων λειτουργικού συστήματος για την εκμετάλλευση πολλαπλών επεξεργαστικών μονάδων
2
Επισκόπηση ● Πολλαπλοί επεξεργαστές ● Fine-grained locking ● Στοιβα πρωτοκόλλων BSD ● Οργάνωση της στοίβας πρωτοκόλλων στο DragonFlyBSD ● Ζητήματα ● Μετρήσεις
4
Το πρώτο βήμα: η BGL ● Ένα μόνο νήμα στον πυρήνα κάθε φορά
5
Το πρώτο βήμα: η BGL ● Ένα μόνο νήμα στον πυρήνα κάθε φορά ● Κλιμάκωση μόνο για αμιγώς υπολογιστικές εφαρμογές
6
Το επόμενο βήμα: περισσότερα κλειδώματα ● 1Ζ Εντοπισμός συχνά διεκδικούμενου κλειδώματος ● 2. Αντικατάσταση με περισσότερα κλειδώματα
7
Προβλήματα ● LOR
8
Προβλήματα ● LOR ● Κλιμάκωση προς τα κάτω ● Bus contention
9
Οργάνωση της στοίβας πρωτοκόλλων στο DragonFlyBSD Η πρώτη ύλη
10
Η στοίβα πρωτοκόλλων στο BSD ● Αρκετά γρήγορο
11
Η στοίβα πρωτοκόλλων στο BSD ● Αρκετά γρήγορο ● Αξιόπιστο
12
Η στοίβα πρωτοκόλλων στο BSD ● Αρκετά γρήγορο ● Αξιόπιστο ● Τεκμηριωμένο
13
Η στοίβα πρωτοκόλλων στο BSD ● Αρκετά γρήγορο ● Αξιόπιστο ● Τεκμηριωμένο ● 20+ χρόνια ανάπτυξης (το τελευταίο δεν είναι απαραίτητα καλό)
14
tcp_input() ● 4.4BSD (Net/2 Release): 1100 SLOC
15
tcp_input() ● 4.4BSD (Net/2 Release): 1100 SLOC ● DragonFly 1.0: 1900+ SLOC
16
tcp_input() ● 4.4BSD (Net/2 Release): 1100 SLOC ● DragonFly 1.0: 1900+ SLOC ● 2η σε κυκλωματική πολυπλοκότητα σε όλο τον πυρήνα ● Πολύ εύθραυστη
17
Οργάνωση της στοίβας πρωτοκόλλων στο DragonFlyBSD Αλλαγές στο DragonFly
18
Τα νήματα
19
Επικοινωνία με τα νήματα πρωτοκόλλου ● abort ● accept ● attach ● bind ● connect ● connect2 ● control ● detach ● disconnect ● listen ● peeraddr ● recvd ● recvoob ● send ● κλπ
20
Λήψη δεδομένων
21
Αποστολή δεδομένων
22
Ζητήματα (1) Το PCB
23
Protocol Control Block
24
TCP hash
25
UDP hash
26
Λύσεις για το UDP ● Χρήση μόνο της τοπικής πόρτας
27
Λύσεις για το UDP ● Χρήση μόνο της τοπικής πόρτας ● Migration + tombstones
28
Λύσεις για το UDP ● Χρήση μόνο της τοπικής πόρτας ● Migration + tombstones ● Inpcb replication ● NxN?
29
Ζητήματα (2) Sockbuf
30
● Ενταμιευτής αποστολής (MPSC) ● Ενταμιευτής λήψης (SPMC)
31
Draw me a picture
32
Lamport
34
+/-Κυκλικού Ενταμιευτή ● Υπέρ ● Ελάχιστο cacheline thrashing ● Απλή υλοποίηση
35
+/-Κυκλικού Ενταμιευτή ● Υπέρ ● Ελάχιστο cacheline thrashing ● Απλή υλοποίηση ● Κατά ● Σπαταλά μνήμη
36
+/-Κυκλικού Ενταμιευτή ● Υπέρ ● Ελάχιστο cacheline thrashing ● Απλή υλοποίηση ● Κατά ● Σπαταλά μνήμη ● Προοπτική ● Μόνο με δυναμική αλλαγή μεγέθους
37
M_CORAL (1)
38
M_CORAL (2)
39
M_CORAL (3)
40
+/- M_CORAL ● Υπέρ ● Δυναμικό μέγεθος ● Δεν σπαταλά μνήμη για ανενεργά sockbuf ● Cache-friendly
41
+/- M_CORAL ● Υπέρ ● Δυναμικό μέγεθος ● Δεν σπαταλά μνήμη για ανενεργά sockbuf ● Cache-friendly ● Κατά ● Τα mbuf clusters είναι μεγάλα (2K) ● Περίπλοκο CFG
42
+/- M_CORAL ● Υπέρ ● Δυναμικό μέγεθος ● Δεν σπαταλά μνήμη για ανενεργά sockbuf ● Cache-friendly ● Κατά ● Τα mbuf clusters είναι μεγάλα (2K) ● Περίπλοκο CFG ● Προοπτική ● Θα χρησιμοποιηθεί μόλις λυθεί το πρόβλημα με τα mbuf clusters
43
cupholders
44
+/- cupholders ● Υπέρ ● Δυναμικό μέγεθος ● Απλός κώδικας
45
+/- cupholders ● Υπέρ ● Δυναμικό μέγεθος ● Απλός κώδικας ● Κατά ● Δέσμευση μνήμης ● Larger cache footprint
46
+/- cupholders ● Υπέρ ● Δυναμικό μέγεθος ● Απλός κώδικας ● Κατά ● Δέσμευση μνήμης ● Larger cache footprint ● Προοπτική ● Θα μείνουν για λίγο ακόμα
47
Απροσδιοριστία των δεδομένων ● «Πόσα bytes περιέχονται στο sockbuf;»
48
Απροσδιοριστία των δεδομένων ● «Πόσα bytes περιέχονται στο sockbuf;» ● Δεν μπορούμε να δώσουμε ένα νούμερο, αλλά μόνο ένα άνω ή κάτω όριο
49
Ζητήματα (3) Races
50
● Κάποια races τα αφήνουμε να εξελιχθούν ● π.χ socket options
51
Races ● Κάποια races τα αφήνουμε να εξελιχθούν ● π.χ socket options ● Κάποια άλλα είναι επικίνδυνα ● π.χ SS_CANTRCVMORE
52
Χαμένη αφύπνιση get_mplock(); […] again: if (have_data) break; if (exception) break; sleep_on_sockbuf(); goto again; again: if (have_data) break; if (exception) break; syncmsg(notify_me); goto again;
53
Μετρήσεις ● Θεωρητικά εύκολο να δείξουμε την κλιμάκωση, αλλά...
54
Μετρήσεις ● Θεωρητικά εύκολο να δείξουμε την κλιμάκωση, αλλά... ● Ιδέες: ● Πολλές συνδέσεις με μικρή ροή δεδομένων
55
Μετρήσεις ● Θεωρητικά εύκολο να δείξουμε την κλιμάκωση, αλλά... ● Ιδέες: ● Πολλές συνδέσεις με μικρή ροή δεδομένων ● loopback + hacks
56
Μετρήσεις ● Θεωρητικά εύκολο να δείξουμε την κλιμάκωση, αλλά... ● Ιδέες: ● Πολλές συνδέσεις με μικρή ροή δεδομένων ● loopback + hacks ● Χρήση 10G
57
10G ● mxge(4) ● + HW csum, vlan tagging ● - RSS, TSO, jumbo frames
58
Αποτελέσματα
59
Στό μέλλον ● Instrumentation ● mxge RSS / jumbo frames ● Ειδοποιήσεις και BGL
60
Τέλος
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.