Linux Kernel (-ck) με BFS και BFQ schedulers

ΣΗΜΕΙΩΣΗ: ΑΥΤΗ Η ΔΗΜΟΣΙΕΥΣΗ ΕΝΗΜΕΡΩΘΗΚΕ ΣΤΙΣ 16 ΣΕΠΤΕΜΒΡΙΟΥ 2016


 

ΠΕΡΙΕΧΟΜΕΝΑ

Brain Fuck Scheduler

Ο Brain Fuck Scheduler (BFS) είναι ένας χρονοδρομολογητής διεργασιών. Ο χρονοδρομολογητής διεργασιών(task scheduler) είναι εκείνος που επιλέγει ποιες από τις διεργασίες που έχουν υποβάλει οι χρήστες στο σύστημα, θα περάσουν στην ουρά αναμονής προς εκτέλεση από την ΚΜΕ(CPU). Ονομάζεται και μακροχρόνιος χρονοδρομολογητής.

Ο BFS ο οποίος σχεδιάστηκε για τον πυρήνα Linux τον Αύγουστο του 2009 είναι ένας εναλλακτικός χρονοδρομολογητής αντί του Completely Fair Scheduler (CFS). O BFS σχεδιάστηκε από έναν βετεράνο του πυρήνα Linux ονόματι Con Kolivas.
Ο σκοπός του BFS, σε σύγκριση με άλλους χρονοδρομολογητές, είναι να παρέχει μια χρονοδρομολόγηση διεργασιών βασισμένη σε έναν απλό αλγόριθμο που δεν απαιτεί προσαρμογή των ευρετικών(heuristics) ή κάποια ρύθμιση παραμέτρων για να προσαρμόζει την απόδοσή του σε έναν συγκεκριμένο τύπο φόρτου εργασίας. Ο δημιουργός του BFS υποστήριξε ότι οι ρυθμιστικές παράμετροι ήταν δύσκολες για τον μέσο χρήστη να τις αντιληφθεί, ιδίως σε ότι αφορά τις αλληλεπιδράσεις αυτών με άλλες, καθώς υποστήριξε επίσης ότι η χρήση τέτοιων παραμέτρων ρύθμισης θα μπορούσε να οδηγήσει στην βελτίωση των επιδόσεων σε ένα συγκεκριμένο τύπο υπολογισμών, με κόστος όμως την χειρότερη απόδοση σε γενικού τύπου χρήση.
Έχει αναφερθεί πως ο BFS βελτιώνει την ανταπόκριση συστημάτων, σε ειδικού τύπου κινητές συσκευές (light-NUMA) με Linux, καθώς και σε υπολογιστικά συστήματα τα οποία διαθέτουν λιγότερους από 16 πυρήνες.
Λίγο μετά την παρουσίαση του, και όπως πιθανών ήταν αναμενόμενο, ο νέος χρονοδρομολογητής έγινε αντικείμενο συζήτησης στην κοινότητα Linux. Όχι μόνο αντικείμενο συζήτησης, αλλά όπως ήταν φυσικό ξεκίνησαν αμέσως και οι συγκριτικές αξιολογήσεις (benchmarks). Παρά το γεγονός ότι υπήρξαν ποικίλες θετικές αναφορές και αξιολογήσεις για την αύξηση των επιδόσεων αλλά και της ανταπόκρισης του συστήματος ο Con Kolivas δεν προτίθεται να ενσωματώσει τον χρονοδρομολογητή στον κύριο(mainline) πυρήνα Linux.

Υιοθέτηση

Ο BFS έχει υιοθετηθεί από κάποιες διανομές Linux και χρησιμοποιείται ως ο βασικός χρονοδρομολογητής διεργασιών.
Μερικές από αυτές είναι:

  • Sabayon Linux
  • PCLinuxOS
  • Manjaro Linux

Ενώ σε άλλες διανομές υπάρχει ως εναλλακτική λύση. Στην διανομή Arch Linux για παράδειγμα, υπάρχει αποθετήριο ονόματι repo-ck που παρέχει τον mainline πυρήνα(ο οποίος είναι και ο πυρήνας που χρησιμοποιεί το Arch Linux) με ενσωματωμένο τον BFS.

Budget Fair Queueing

Πίσω στα περιεχόμενα →
Ένας χρονοδρομολογητής I/O (Input/Output) είναι εκείνος ο οποίος αποφασίζει με ποια σειρά θα σταλούν οι διεργασίες στους τόμους αποθήκευσης. Συχνά αποκαλείται και “χρονοδρομολογητής δίσκου”.
Μερικές από τις εργασίες για τις οποίες είναι υπεύθυνος:

  • Ελαχιστοποιεί την σπατάλη χρόνου σε έναν σκληρό δίσκο κατά τη διάρκεια της αναζήτησης(seek)
  • Καθορίζει την προτεραιότητα των αιτημάτων ορισμένων διεργασιών.
  • Καθορίζει το μερίδιο κάθε διεργασίας που εκτελείται στο εύρος ζώνης του δίσκου.
  • Διασφαλίζει ότι ορισμένες αιτήσεις (διεργασιών) θα εκτελεστούν πριν από μια ορισμένη προθεσμία. Δηλαδή, θέτει αυτό που ονομάζουμε deadline.

O BFQ λοιπόν είναι ένας τέτοιος χρονοδρομολογητής ο οποίος, όπως αναφέρει ο δημιουργός του, υποστηρίζει και ιεραρχική χρονοδρομολόγηση καθώς και τη κατανομή αναλογικού μεριδίου στις διεργασίες. Έχουμε αναφερθεί ξανά στον BFQ I/O scheduler ο οποίος έχει δημιουργηθεί από τον Ιταλό Paolo Valente και εν αντιθέσει με τον Con Kolivas, είναι μέσα στα σχέδια του δημιουργού να συμπεριληφθεί στον κυρίως(mainline) πυρήνα Linux.
Συγκριτικές δοκιμές που έχουν γίνει από την ομάδα του BFQ δείχνουν μια σημαντική διαφορά στην απόδοση του συστήματος, όταν αυτό εκτελεί πολλές διεργασίες παράλληλα και βρίσκεται κάτω από βαρύ φόρτο εργασίας. Μια από αυτές τις δοκιμές έχει δημοσιευτεί ως βίντεο στο youtube και μπορείτε να την παρακολουθήσετε στην παρακάτω διεύθυνση:
https://www.youtube.com/watch?v=KhZl9LjCKuU

Υιοθέτηση

Πίσω στα περιεχόμενα →
Ο BFQ έχει υιοθετηθεί από μερικές διανομές Linux ως ο βασικός χρονοδρομολογητής. Μερικές από αυτές είναι:

  • Manjaro Linux
  • OpenMadriva
  • Sabayon Linux

Ενώ σε άλλες διανομές υπάρχει ως εναλλακτικός χρονοδρομολογητής: Arch Linux, PCLinuxOS, Gentoo.

Xenial PPAs

Πίσω στα περιεχόμενα →
Στο Launchpad, έχουν δημιουργηθεί δυο νέα αποθετήρια για το Xenial (Ubuntu 16.04 LTS) και ο σκοπός τους είναι να φιλοξενούν πυρήνες με ενσωματωμένους τους δυο χρονοδρομολογητές.
Τα αποθετήρια διαθέτουν τον τελευταίο διαθέσιμο σταθερό πυρήνα Linux και τον τελευταίο διαθέσιμο LTS πυρήνα Linux. Δείτε περισσότερα σχετικά με τις εκδόσεις.

Επισκεφτείτε τα αποθετήρια:

Upstream πυρήνας και Ubuntu πυρήνας

Πίσω στα περιεχόμενα →
Θα πρέπει να γίνει εδώ ένας διαχωρισμός μεταξύ του Upstream και του Ubuntu πυρήνα.
Η λογική είναι απλή:
Παίρνουμε τον κυρίως πυρήνα(upstream) και αφού γνωρίζουμε πως, του ενσωματώνουμε κάποιον κώδικα (patches) έτσι ώστε να λειτουργεί καλύτερα με την διανομή που θέλουμε (στην παρούσα περίπτωση το Ubuntu).
Οπότε, αυτόν τον πυρήνα (με τον ενσωματωμένο από το Ubuntu κώδικα) τον ονομάζουμε Ubuntu Kernel. Είναι ο πυρήνας που προτείνεται για χρήση, ενώ ο upstream είναι διαθέσιμος χωρίς τα pathces του Ubuntu όπως ακριβώς διατίθεται από το επίσημο Linux Kernel Repository.
Ο upstream πυρήνας φιλοξενείται και αναπτύσσεται στο Git.

Πυρήνες Xenial και Xenial-ck

Πίσω στα περιεχόμενα →
Μέσω Git λοιπόν γίνεται και η λήψη αλλά και η ενσωμάτωση των χρονοδρομολογητών BFQ και BFS. Κατόπιν, ανεβαίνει ο πηγαίος κώδικας στο Launchpad και οι εικονικές μηχανές κατασκευής πακέτων του Launchpad αναλαμβάνουν να χτίσουν τα .deb πακέτα εγκατάστασης. Μόλις ολοκληρωθεί με επιτυχία η δημιουργία των πακέτων αυτά γίνονται διαθέσιμα μέσω των αποθετηρίων (Xenial και Xenial-ck).

Ονοματολογία πυρήνων

Η ονοματολογία των πυρήνων είναι διαφορετική επί σκοπόν. Χρησιμοποιούνται ξεχωριστά flavors τα οποία ονομάζονται -bfq και -bb (δηλαδή BFQ only και BFS/BFQ, αντίστοιχα).
Έτσι, δε θα αντικατασταθεί ο Official πυρήνας που χρησιμοποιεί κάποιος, απλά θα προστεθεί άλλος ένας από τον οποίο μπορεί να εκκινήσει το σύστημά του.

Εγκατάσταση και δοκιμή

Πίσω στα περιεχόμενα →
Για να εγκαταστήσετε και να δοκιμάσετε στο σύστημά σας τους πυρήνες, θα πρέπει να προσθέσετε το ανάλογο αποθετήριο και να εγκαταστήσετε ένα πακέτο το οποίο αναφέρεται ως meta package. Αυτό, θα «τραβήξει» όλα τα απαιτούμενα προς εγκατάσταση πακέτα.
Για την εγκατάσταση πληκτρολογήστε τις παρακάτω εντολές σε ένα τερματικό:

Για τον πυρήνα Xenial με υποστήριξη BFQ.

sudo add-apt-repository ppa:nick-athens30/xenial
sudo apt-get update
sudo apt-get install linux-bfq-git

Για τον πυρήνα Xenial-ck με υποστήριξη BFS και BFQ.

sudo add-apt-repository ppa:nick-athens30/xenial
sudo apt-get update
sudo apt-get install linux-bb

Μπορείτε να δοκιμάσετε τον νέο πυρήνα κάτω από φόρτο εργασίας και να δείτε πως αντιδρά.
Για να σιγουρευτείτε πως οι δυο χρονοδρομολογητές είναι οι προεπιλεγμένοι και λειτουργούν σωστά, πληκτρολογήστε σε ένα τερματικό την παρακάτω εντολή:

dmesg | grep -i scheduler

Το αποτέλεσμα θα πρέπει να είναι περίπου όπως το παρακάτω:

io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered
io scheduler bfq registered (default)
BFQ I/O-scheduler version: v7r7 
BFS CPU scheduler v0.456 by Con Kolivas

ΑΠΟΜΑΚΡΥΝΣΗ ΠΥΡΗΝΑ ΚΑΙ ΑΠΟΘΕΤΗΡΙΟΥ

Αν για οποιονδήποτε δικό σας λόγο θέλετε να απομακρύνετε τον πυρήνα και το αποθετήριο μαζί, έχει δημιουργηθεί μια εντολή γι’αυτό το σκοπό.
Πρώτα κάνετε επανεκκίνηση από τον Official πυρήνα και έπειτα τρέχετε τη παρακάτω εντολή:

dpkg --get-selections | grep "linux*" | grep  -e "...bfq" -e "...bb" |  awk '{print $1}' | egrep -v "linux-image-$(uname -r)"

Εφόσον σας επιστρέψει τα επιθυμητά αποτελέσματα, τα οποία πρέπει να είναι μόνον πυρήνες bfq ή και bfs (αναλόγως τι έχετε εγκαταστήσει), τότε εκτελείτε τις εντολές απομάκρυνσης οι οποίες είναι οι παρακάτω:

sudo apt-get remove $(dpkg --get-selections | grep "linux*" | grep  -e "...bfq" -e "...bb" |  awk '{print $1}' | egrep -v "linux-image-$(uname -r)")
sudo apt-get --purge autoremove

Για την απομάκρυνση των αποθετηρίων απλά εκτελέστε (αναλόγως το αποθετήριο που έχετε προσθέσει)

sudo add-apt-repository -r ppa:nick-athens30/xenial
sudo apt-key del F56AC5FABE7E0CA1
sudo add-apt-repository -r ppa:nick-athens30/xenial-ck
sudo apt-key del F56AC5FABE7E0CA1

Αποποίηση Ευθυνών

Πίσω στα περιεχόμενα →
Θα πρέπει να αναφέρουμε ότι αν και ο συγκεκριμένος πυρήνας γίνεται λήψη από το επίσημο αποθετήριο του Linux μέσω του Git, ο κώδικας που προστίθεται σε αυτόν (για την ενσωμάτωση των δυο χρονοδρομολογητών) είναι αρκετός ώστε να τον μετατρέψει σε έναν ανεπίσημο πυρήνα.
Ως αποτέλεσμα αυτού, δεν μπορείτε να αναφέρετε σφάλματα γι’ αυτόν τον πυρήνα με τον συνήθη τρόπο(μέσω Launchpad), ενώ πάντα υπάρχει το ενδεχόμενο δυσλειτουργίας(ακόμη και στον κυρίως και επίσημο πυρήνα του Linux υπάρχει τέτοιο ενδεχόμενο).
Ο πυρήνας εξάλλου είναι ένα από τα σημαντικότερα κομμάτια, αν όχι το σημαντικότερο, του λειτουργικού συστήματος και είναι υπεύθυνος για την εύρυθμη λειτουργία του. Επίσης, είναι εκείνο το κομμάτι λογισμικού που επικοινωνεί άμεσα με το υλικό και διαχειρίζεται τις συσκευές του συστήματος.

Πηγές

Παρακάτω δημοσιεύονται οι πηγές από τις οποίες αντλήθηκαν οι πληροφορίες για την συγγραφή του παρόντος:

5 thoughts on “Linux Kernel (-ck) με BFS και BFQ schedulers

  1. Πολύ ωραίο, απλό και αναλυτικό άρθρο!
    Ευχαριστούμε, χάρις εσένα μαθαίνουμε κάποια πράγματα πάνω στο linux. :)

  2. Έλεγα να δοκιμάσω κάποιον απο τους πυρηνες που προτείνεις. Απλά ήθελα να σε ρωτησω 2-3 πραγματάκια πρώτα.

    1) Ποιον προτείνεις? Τον Xenial-BFQ ή τον Xenial-ck …? Και γιατί? Θα δω διαφορά σε ενα laptop με intel Core2Duo, 4gb ram, Αti3700 GPU, SSD?
    2) Αν κατι δεν μου δουλεψει σωστά, απλά και ευκολα γυρίζω στον επίσημο πυρηνα? Τον Xenial-BFQ ή Xenial-ck πως τον σβήνω εντελως μαζί με το ppa?
    3) Αν ολα μου δουλευουν σωστα και ειμαι ευχαριστημένος, η αναβαθμιση του θα γινεται αυτοματα μέσω του ppa?

    Θενξ.

      1. Διαφορά με το μάτι δεν θα δεις. Προσωπικά δεν έχω δει εμφανή διαφορά (με το μάτι) σε οτιδήποτε και αν έχω δοκιμάσει, εκτός της αναβάθμισης από HDD σε SSD. Υπάρχουν όμως δημοσιευμένα benchmarks. Άλλοι πάλι προσθέτουν τα αποθετήρια και κάνουν την αναβάθμιση για να έχουν τη τελευταία έκδοση πυρήνα(PPA xenial), ή LTS πυρήνα (PPA xenial-ck), γιατί ούτως ή άλλως πρόκειται για τον πυρήνα Linux ανέπαφο. Το μόνο που έχει προστεθεί είναι ένας (ή δυο) επιπλέον schedulers. Ειδικά στον BFQ πυρήνα, μπορείς να αλλάξεις και οn the fly τον scheduler στον default cfq.
        Θα το θέσω ως εξής: Ο BFQ πυρήνας (πάντα o τελευταίος σταθερός, αποθετήριο xenial), είναι πιο «καθαρός» από τον BFS/BFQ πυρήνα (πάντα ο τελευταίος LTS, αποθετήριο xenial-ck).
      2. Έχεις δίκιο σε ότι αφορά τη διαδικασία απομάκρυνσης. Έκανα (άλλη μια) ενημέρωση και προστέθηκε στην ενότητα «Εγκατάσταση και δοκιμή» (https://goo.gl/eEGLnC)
      3. Εφόσον κάνεις εγκατάσταση το meta package (όπως αναφέρεται και στη δημοσίευση), ναι θα γίνεται αναβάθμιση αυτόματα μέσω του PPA.
    1. Με το συγκεκριμένο δεν αλλάζεις πυρήνα. Νομίζω ότι το γράφω ξεκάθαρα. Δεν αντικαθιστάς τον επίσημο πυρήνα του Ubuntu, απλά εγκαθιστάς άλλον έναν.

Συμβάλετε κι εσείς με ένα σχόλιο

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s