Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Διπλωματική Εργασία Τροποποίηση της υλοποίησης διαδικτυακών πρωτοκόλλων λειτουργικού συστήματος για την εκμετάλλευση πολλαπλών επεξεργαστικών μονάδων.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Διπλωματική Εργασία Τροποποίηση της υλοποίησης διαδικτυακών πρωτοκόλλων λειτουργικού συστήματος για την εκμετάλλευση πολλαπλών επεξεργαστικών μονάδων."— Μεταγράφημα παρουσίασης:

1 Διπλωματική Εργασία Τροποποίηση της υλοποίησης διαδικτυακών πρωτοκόλλων λειτουργικού συστήματος για την εκμετάλλευση πολλαπλών επεξεργαστικών μονάδων

2 Επισκόπηση ● Πολλαπλοί επεξεργαστές ● Fine-grained locking ● Στοιβα πρωτοκόλλων BSD ● Οργάνωση της στοίβας πρωτοκόλλων στο DragonFlyBSD ● Ζητήματα ● Μετρήσεις

3

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

33

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 Τέλος


Κατέβασμα ppt "Διπλωματική Εργασία Τροποποίηση της υλοποίησης διαδικτυακών πρωτοκόλλων λειτουργικού συστήματος για την εκμετάλλευση πολλαπλών επεξεργαστικών μονάδων."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google