Trusty Πυρήνες με BFS/BFQ scheduler

...εγκαταστάσεις, αναβαθμίσεις, διαχείριση partitions, boot-loader, κλπ

Συντονιστής: adem1

Κανόνες Δ. Συζήτησης
Στην ενότητα αυτή γράφουμε θέματα/ προβλήματα μόνο για το UBUNTU ή τα παράγωγά του.

Trusty Πυρήνες με BFS/BFQ scheduler

Δημοσίευσηαπό Learner » 02 Μαρ 2015, 21:24

:arrow: ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

Brain Fųck Scheduler
Spoiler: show
Ο Brain Fųck 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
Spoiler: show
Ένας χρονοδρομολογητής I/O (Input/Output) είναι εκείνος ο οποίος αποφασίζει με ποια σειρά θα σταλούν οι διεργασίες στους τόμους αποθήκευσης. Συχνά αποκαλείται και “χρονοδρομολογητής δίσκου”.

Μερικές από τις εργασίες για τις οποίες είναι υπεύθυνος:
  • Ελαχιστοποιεί την σπατάλη χρόνου σε έναν σκληρό δίσκο κατά τη διάρκεια της αναζήτησης(seek).
  • Καθορίζει την προτεραιότητα των αιτημάτων ορισμένων διεργασιών.
  • Καθορίζει το μερίδιο κάθε διεργασίας που εκτελείται στο εύρος ζώνης του δίσκου.
  • Διασφαλίζει ότι ορισμένες αιτήσεις (διεργασιών) θα εκτελεστούν πριν από μια ορισμένη προθεσμία. Δηλαδή, θέτει αυτό που ονομάζουμε deadline.
O BFQ λοιπόν είναι ένας τέτοιος χρονοδρομολογητής ο οποίος, όπως αναφέρει ο δημιουργός του, υποστηρίζει και ιεραρχική χρονοδρομολόγηση καθώς και την κατανομή αναλογικού μεριδίου στις διεργασίες. Έχει δημιουργηθεί από τον Ιταλό 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.


Αποθετήρια
Spoiler: show
Εδώ και κάμποσο καιρό, διατηρώ δυο Online αποθετήρια στο Launchpad και ο σκοπός τους είναι να φιλοξενούν τους επίσημους πυρήνες του Linux (όχι του Ubuntu) με ενσωματωμένους όμως τους δυο χρονοδρομολογητές. Τα αποθετήρια υποστηρίζουν την έκδοση του Ubuntu 14.04 LTS με κωδική ονομασία Trusty Tahr.
Τη διαφορά του Ubuntu πυρήνα με εκείνον που ονομάζουμε upstream Linux μπορείτε να τη διαβάσετε παρακάτω.
Το ένα αποθετήριο φιλοξενεί τον εκάστοτε stable (και όχι mainline) πυρήνα Linux με ενσωματωμένο μόνο τον BFQ Scheduler, ενώ το άλλο τον εκάστοτε LTS πυρήνα (τον νεότερο από τους LTS πυρήνες) με ενσωματωμένα τα BFQ και BFS patches.


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


Λήψη , Ενσωμάτωση, Ανέβασμα, Χτίσιμο και Διάθεση
Spoiler: show
Μέσω Linux Git λοιπόν γίνεται και η λήψη αλλά και η ενσωμάτωση των χρονοδρομολογητών BFQ και BFS. Κατόπιν, ανεβαίνει ο πηγαίος κώδικας στο Launchpad και οι εικονικές μηχανές κατασκευής πακέτων του Launchpad (Launchpad Builders) αναλαμβάνουν να χτίσουν τα .deb πακέτα εγκατάστασης. Μόλις ολοκληρωθεί με επιτυχία η δημιουργία των πακέτων, αυτά γίνονται διαθέσιμα μέσω των αποθετηρίων.


Ονοματολογία πυρήνων
Spoiler: show
Η ονοματολογία των πυρήνων είναι διαφορετική επί σκοπόν. Ο σκοπός είναι να μην αντικαταστήσει ο πυρήνας του αποθετηρίου εκείνον της διανομής, αλλά να προστεθεί ως ένα έξτρα πακέτο. Η ονοματολογία ακολουθεί τη φιλοσοφία του Ubuntu και έτσι έχουμε για παράδειγμα:

→linux-image-4.5.0-50-bfq . Βασισμένος στον 4.4.5 upstream
→inux-image-4.4.0-110-bb . Βασισμένος στον 4.4.11 LTS upstream

Αρκεί να αφαιρέσετε τα τελευταία ψηφία από το ABI και Version Number, ώστε να ανακαλύψετε σε ποιον είναι βασισμένος.


Changelog
Spoiler: show
Οι αλλαγές που κάνω στους συγκεκριμένους πυρήνες είναι σχεδόν μηδενικής αναφορικής αξίας, αλλά καθότι αλλαγές οφείλω να τις επισημάνω. Φυσικά αναφέρονται σε κάθε changelog, αλλά τις αναφέρω κι εδώ:

Κώδικας: Επιλογή όλων

* Timer Frequency: 300Hz
* Preemption Model: Low-Latency Desktop

Στοχεύω σε Low Latency για καλύτερο Responsiveness, ενώ ανεβάζω κατά 50Hz το timer frequency (από 250 που έχει το Ubuntu). Το Arch πάντως με 300 έρχεται από default.
Αν και δεν χρειάζεται να το αναφέρω ξανά, ωστόσο μιας και αποτελεί και αυτό changelog, οι δυο έξτρα schedulers είναι προεπιλογή. Προσέξτε ότι γράφω έξτρα, πράγμα που σημαίνει ότι δεν αντικαθιστούν κάποιον άλλο scheduler.


Εγκατάσταση και δοκιμή
Για να εγκαταστήσετε και να δοκιμάσετε στο σύστημά σας κάποιον από τους πυρήνες, θα πρέπει να προσθέσετε το αποθετήριο που σας ενδιαφέρει και να εγκαταστήσετε το meta package που σας ενδιαφέρει. Αυτό, θα τραβήξει όλες τις απαιτούμενες εξαρτήσεις ώστε να έχετε και το image αλλά και τους headers του πυρήνα και ότι άλλο χρειάζεται.
Για το PPA trusty4 (μόνο με BFQ)
Κώδικας: Επιλογή όλων

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


Για το PPA trusty4-ck (με BFQ και BFS)
Κώδικας: Επιλογή όλων

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


Για άλλες εκδόσεις
Αν χρησιμοποιείτε κάποια άλλη έκδοση εκτός του trusty, (πχ 15.10, 16.04), ακόμη και άλλη διανομή βασισμένη στο Ubuntu, μπορείτε να δοκιμάσετε με τις παρακάτω εντολές

Για το PPA trusty4 (μόνο με BFQ)
Κώδικας: Επιλογή όλων

echo "deb http://ppa.launchpad.net/nick-athens30/trusty4/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/nick-athens30-trusty4.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F56AC5FABE7E0CA1
sudo apt-get update
sudo apt-get install linux-bfq-git


Για το PPA trusty4-ck (με BFQ και BFS)
Κώδικας: Επιλογή όλων

echo "deb http://ppa.launchpad.net/nick-athens30/trusty4-ck/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/nick-athens30-trusty4-ck.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F56AC5FABE7E0CA1
sudo apt-get update
sudo apt-get install linux-bb


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

dmesg | grep -i scheduler

Το αποτέλεσμα θα πρέπει να είναι περίπου όπως το παρακάτω
έγραψε:
[ 2.106924] io scheduler noop registered
[ 2.106928] io scheduler deadline registered
[ 2.106963] io scheduler cfq registered
[ 2.106991] io scheduler bfq registered (default)
[ 2.106992] BFQ I/O-scheduler: v7r11
[ 2.106996] BFS CPU scheduler v0.467 by Con Kolivas


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


Άδεια Χρήσης
Το παρόν διατίθεται υπό την άδεια: Creative Commons BY-SA 4.0 Διεθνής
Εικόνα

Πηγές
Spoiler: show
Παρακάτω δημοσιεύονται οι πηγές από τις οποίες αντλήθηκαν οι πληροφορίες για την συγγραφή του παρόντος:
  • http://en.wikipedia.org/wiki/Brain_Fuck_Scheduler
  • http://en.wikipedia.org/wiki/I/O_scheduling
  • http://algo.ing.unimo.it/people/paolo/disk_sched
  • https://launchpad.net/~nick-athens30/+archive/ubuntu/trusty-ck
  • http://ck.kolivas.org/patches/bfs/bfs-faq.txt
  • https://lkml.org/lkml/2014/5/27/314
  • http://wp.me/p3HF9I-ya
Τελευταία επεξεργασία από Learner και 22 Μάιος 2016, 02:58, έχει επεξεργασθεί 4 φορά/ες συνολικά
Αιτία: Ενημέρωση λόγω αλλαγών στα αποθετήρια
About Me
NickTux@GitHub

Spoiler: show
1. Ubuntu 18.04 LTS
2. Intel Core i3 CPU M 380 2.53GHz ‖ RAM 6GB ‖ Acer Aspire 5733
3. Intel Integrated Graphics [8086:0046] {i915}
4. wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Άβαταρ μέλους
Learner
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 9766
Εγγραφή: 08 Νοέμ 2010, 21:24
Τοποθεσία: Αθήνα
Launchpad: nicktux
IRC: NickTux
Εκτύπωση

Trusty Πυρήνες με BFS/BFQ scheduler - 4.6 Mainline

Δημοσίευσηαπό Learner » 22 Μάιος 2016, 02:32

Στο testing repo, ο 4.6 mainline για όσους/ες θέλουν να τον δοκιμάσουν. Φυσικά με ενσωματωμένο BFQ.

Εγκατάσταση
Κώδικας: Επιλογή όλων

echo "deb http://ppa.launchpad.net/nick-athens30/linux-dev/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/nick-athens30-linux-dev.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F56AC5FABE7E0CA1
sudo apt-get update
sudo apt-get install linux-image-4.6.0-00-bfq linux-headers-4.6.0-00-bfq
sudo rm /etc/apt/sources.list.d/nick-athens30-linux-dev.list


Απεγκατάσταση
Κώδικας: Επιλογή όλων

sudo apt-get remove linux-image-4.6.0-00-bfq linux-headers-4.6.0-00*
About Me
NickTux@GitHub

Spoiler: show
1. Ubuntu 18.04 LTS
2. Intel Core i3 CPU M 380 2.53GHz ‖ RAM 6GB ‖ Acer Aspire 5733
3. Intel Integrated Graphics [8086:0046] {i915}
4. wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Άβαταρ μέλους
Learner
Συντονιστής
Συντονιστής
 
Δημοσιεύσεις: 9766
Εγγραφή: 08 Νοέμ 2010, 21:24
Τοποθεσία: Αθήνα
Launchpad: nicktux
IRC: NickTux
Εκτύπωση


Επιστροφή στο Λειτουργικό Σύστημα