Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Συμπεριφορά του νέου GIL σε I/O φραγμένα νήματα

Συμπεριφορά του νέου GIL σε I/O φραγμένα νήματα 14 Χρόνια 2 Μήνες πριν #743

  • myle
  • Το Άβαταρ του/της myle
  • Αποσυνδεμένος
  • Admin
  • Δημοσιεύσεις: 467
  • Ληφθείσες Ευχαριστίες 15
** This thread discusses the content article: Συμπεριφορά του νέου GIL σε I/O φραγμένα νήματα **

Όπως ίσως να έχετε δει από παλιότερη ανάρτηση, έχει προταθεί η χρήση ενός νέου GIL (Global Interpreter Lock) στην Python 3.2. Μόλις χθες υποβλήθηκε ένα καινούργιο θέμα που προκύπτει με αυτόν τον GIL.

Επειδή ο χρόνος εκτέλεσης των I/O (Input/Output) λειτουργειών συνηθώς είναι αρκετά μεγάλος, όποτε αρχίζει μια τέτοια λειτουργία, ελευθερώνεται ο GIL ώστε να μπορούν να εκτελεστούν άλλα νήματα. Παρόλα αυτά υπάρχει ένας μεγάλος αριθμός από I/O λειτουργίες που εκτελούνται άμεσα, όπως για παράδειγμα η λειτουργία send() σε κάποιο socket όταν υπάρχει αρκετός χώρος στο buffer για να δεχθεί τα δεδομένα. Σε αυτές τις περιπτώσεις η απελευθέρωση του GIL για να εκτελεστεί κάποιο άλλο νήμα, επειδή περιμέναμε ότι η συγκεκριμένη λειτουργία θα έπαιρνε πολύ ώρα, είναι περιττή.

Ένα χαρακτηριστικό της καινούργιας υλοποίησης του GIL είναι ότι ο διερμηνευτής δεν ειδοποιεί περιοδικά τα νήματα που περιμένουν. Αντιθέτως, τα νήματα εναλλάσονται αφού περιμένουν ένα συγκεκριμένο χρονικό διάστημα. Αφού περάσει ένα συγκεκριμένο χρονικό διάστημα, ένα νήμα ειδοποιεί ότι θέλει τον GIL και τότε το νήμα που τον έχει μέχρι εκείνη την στιγμή υποχρεωούται να σταματήσει την λειτουργία του και να τον παραδώσει.

Αν και αυτή η ιδέα λύνει το πρόβλημα των νημάτων που είναι CPU-φραγμένα, εισάγει ένα καινούργιο πρόβλημα όταν αναμυγνείονται CPU-φραγμένα νήματα και I/O φραγμένα μαζί. Το πρόβλημα γίνεται εμφανές επειδή όταν το I/O φραγμένο νήμα εκτελεί μια I/O λειτουργία, απελευθερώνει πάντα τον GIL. Αφού ο GIL απελευθερώθηκε, ένα CPU φραγμένο νήμα είναι ελεύθερο να τον αποκτήσει και να τρέξει. Ωστόσο, αν η I/O λειτουργία σταματήσει αμέσως, τότε το I/O φραγμένο νήμα παγώνει μέχρι να επιστρέψει η κλήση συστήματος που αντιστοιχουσε την I/O λειτουργία. Για να πάρει το νήμα πίσω τον GIL, πρέπει να περιμένει αναγκαστικά να περάσει μια χρονική περίοδος, παρότι η λειτουργία του εκτελέστηκε σχεδόν ακαριαία.

Η ίδια συμπεριφορά παρουσιάζεται και στην Python 2, αλλά λόγω των μικρών χρονικών διαστημάτων στα οποία γίνεται ο έλεγχος, το I/O φραγμένο νήμα παίρνει πίσω τον GIL σχετικά γρήγορα.

Για περισσότερες λεπτομέρειες:
bugs.python.org/issue7946
«Αν υποθέσουμε ότι αυτό είναι δυνατό, (να μεταδώσουμε τη σοφία παντού) τότε ειλικρινά ο τρόπος ζωής των θεών θα περάσει στους ανθρώπους. Τα πάντα θα είναι γεμάτα...
Τελευταία διόρθωση: 14 Χρόνια 2 Μήνες πριν από myle.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ:Συμπεριφορά του νέου GIL σε I/O φραγμένα νήματα 14 Χρόνια 2 Μήνες πριν #755

  • myle
  • Το Άβαταρ του/της myle
  • Αποσυνδεμένος
  • Admin
  • Δημοσιεύσεις: 467
  • Ληφθείσες Ευχαριστίες 15
Και μια πολύ ενδιαφέρουσα παρουσίαση από αυτόν που ύπεβαλε την συγκεκριμένη αναφορά θέματος, στο PyCon που γίνεται αυτές τις μέρες στην Atlanta.
www.dabeaz.com/python/UnderstandingGIL.pdf
«Αν υποθέσουμε ότι αυτό είναι δυνατό, (να μεταδώσουμε τη σοφία παντού) τότε ειλικρινά ο τρόπος ζωής των θεών θα περάσει στους ανθρώπους. Τα πάντα θα είναι γεμάτα...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ:Συμπεριφορά του νέου GIL σε I/O φραγμένα νήματα 14 Χρόνια 1 Μήνας πριν #760

  • myle
  • Το Άβαταρ του/της myle
  • Αποσυνδεμένος
  • Admin
  • Δημοσιεύσεις: 467
  • Ληφθείσες Ευχαριστίες 15
Μια ιδέα για την μερική λύση του προβλήματος που εμφανίστηκε:
www.dabeaz.com/blog/2010/02/revisiting-t...orities-and-new.html
«Αν υποθέσουμε ότι αυτό είναι δυνατό, (να μεταδώσουμε τη σοφία παντού) τότε ειλικρινά ο τρόπος ζωής των θεών θα περάσει στους ανθρώπους. Τα πάντα θα είναι γεμάτα...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ:Συμπεριφορά του νέου GIL σε I/O φραγμένα νήματα 14 Χρόνια 1 Μήνας πριν #764

  • myle
  • Το Άβαταρ του/της myle
  • Αποσυνδεμένος
  • Admin
  • Δημοσιεύσεις: 467
  • Ληφθείσες Ευχαριστίες 15
Ενδιαφέρον ίσως να είναι για όσους δεν μπόρεσαν να παρεβρεθούν στην παρουσίαση σήμερα, να δουν τις διαφάνειες για τον καινούργιο GIL που συνοψίζουν πολλά από τα παραπάνω και βασίζονται ιδιαίτερα στη δουλειά που έχει κάνει ο David Beazley για την παρουσίαση του στο PyCon πριν λίγες εβδομάδες.

taspython.eu/index.php?option=com_phocad...reter-lock&Itemid=58
«Αν υποθέσουμε ότι αυτό είναι δυνατό, (να μεταδώσουμε τη σοφία παντού) τότε ειλικρινά ο τρόπος ζωής των θεών θα περάσει στους ανθρώπους. Τα πάντα θα είναι γεμάτα...
Τελευταία διόρθωση: 14 Χρόνια 1 Μήνας πριν από myle.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απ:Συμπεριφορά του νέου GIL σε I/O φραγμένα νήματα 14 Χρόνια 1 Μήνας πριν #787

  • myle
  • Το Άβαταρ του/της myle
  • Αποσυνδεμένος
  • Admin
  • Δημοσιεύσεις: 467
  • Ληφθείσες Ευχαριστίες 15
Άλλο ένα patch για τον GIL που εξελίσσεται με αρκετά γρήγορους ρυθμούς συγκριτικά.
bugs.python.org/issue7946#msg101612
«Αν υποθέσουμε ότι αυτό είναι δυνατό, (να μεταδώσουμε τη σοφία παντού) τότε ειλικρινά ο τρόπος ζωής των θεών θα περάσει στους ανθρώπους. Τα πάντα θα είναι γεμάτα...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.262 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου