Kernels and PPAs Update Vol5

Λόγω των τελευταίων εξελίξεων σχετικά με τον BFQ Scheduler και την ενσωμάτωση αυτού στις εκδόσεις πυρήνα 4.12+
το αποθετήριο Xenial αλλάζει υπόσταση.
(English Version Here)

Σχετικά με τον BFQ scheduler μπορείτε να διαβάσετε σε αυτή τη δημοσίευση. Σχετικά με την ενσωμάτωση του BFQ στις εκδόσεις πυρήνα 4.12+ μπορείτε να διαβάσετε σε αυτή ή αυτή τη δημοσίευση.

Όπως καταλαβαίνουμε δεν υπάρχει πλέον λόγος ύπαρξης του αποθετηρίου Xenial με τη σημερινή του μορφή. Ο v4.11.0-120-bfq, ο οποίος βασίζεται στον v4.11.12, είναι και ο τελευταίος πυρήνας που χτίστηκε με τα (legacy) patches του BFQ Scheduler. Τα (legacy) patches δεν υπάρχουν πλέον, αφού όπως αναφέραμε παραπάνω ο BFQ έχει ενσωματωθεί στις νέες εκδόσεις πυρήνα 4.12+

 

Ενεργοποίηση του BFQ ως default scheduler

Για να ενεργοποιήσει κάποιος τον BFQ ως τον default scheduler θα πρέπει να επεξεργαστεί μια γραμμή στο /etc/default/grub και να προσθέσει την παράμετρο scsi_mod.use_blk_mq=1.
Παράδειγμα:

 GRUB_CMDLINE_LINUX_DEFAULT="quiet scsi_mod.use_blk_mq=1"

έπειτα αποθηκεύει το αρχείο και τρέχει ένα update-grub.

 sudo update-grub

Έπειτα δημιουργεί έναν udev rule όπως τον παρακάτω

 gksudo gedit /etc/udev/rules.d/60-scheduler.rules

Προσθέτει μέσα τη παρακάτω γραμμή:

ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="bfq"

αποθηκεύει και τρέχει τις παρακάτω εντολές:

sudo udevadm control --reload
sudo udevadm trigger

Προσέξετε ότι η παλιά παράμετρος elevator=bfq δεν ισχύει πλέον. Οπότε και χρησιμοποιούμε τον παραπάνω τρόπο (udev rule) για να ενεργοποιήσουμε τον BFQ ως τον default scheduler.

Για να το επιβεβαιώσουμε τρέχουμε:

cat /sys/block/sd*/queue/scheduler

ή

sudo apt install tlp
 sudo tlp-stat -d|grep Sch

Αλλαγή μορφής του αποθετηρίου

Το αποθετήριο Xenial δεν θα κλείσει όμως. Θα συνεχίσει να διαθέτει τον τελευταίο σταθερό πυρήνα για το Ubuntu 16.04 LTS όπως αυτός έρχεται από το stable αποθετήριο του Linux Kernel.
Πλέον, ούτε κάποιο patch θα ενσωματώνεται στον πυρήνα, θα είναι ακόμη πιο «καθαρός» απ’ ότι ήταν, αφού όπως αναφέραμε ο BFQ είναι ήδη ενσωματωμένος.

 

Configuration

Αυτό που θα αλλάζει είναι το configuration του πυρήνα και αυτό έχει ως εξής:

1) Ενεργοποίηση του BFQ Scheduler ως built in module (ναι μεν είναι ενσωματωμένος, αλλά όχι και ενεργοποιημένος)
2) Το Preemption model σε low-latency desktop (για καλύτερη απόκριση) Voluntary Kernel Preemption (Desktop)
3) Το Timer Frequency σε 300HZ (θα το έκανα 1000ΗΖ αλλά η κατανάλωση μπαταρίας σε Laptop χτυπάει κόκκινο)
4) Ενεργοποίηση LZ4 compress – decompress (για όσους/ες θέλουν lz4 συμπίεση και αποσυμπίεση του πυρήνα). Υπάρχει σχετικό How To εδώ.

Ονοματολογία και Meta Packages

Στην ονοματολογία του πυρήνα στο ABI, το bfq θα αντικατασταθεί με το lz4.
Τα Meta Packages θα αντικατασταθούν με καινούρια. Το linux-bfq-git με το linux-lz4… κλπ.
Ο τίτλος του αποθετηρίου αλλάζει σε «Xenial Xerus latest Linux Kernel» , αφαιρείται δηλαδή το BFQ.
Όποιος συνεχίσει να χρησιμοποιεί αυτό το αποθετήριο, θα πρέπει να κάνει κάποιες ενέργειες προκειμένου να του έρθει αναβάθμιση στην έκδοση 4.12+ , με το Configuration που ήδη αναφέρθηκε παραπάνω.

Αντικατάσταση πυρήνων

Όπως αναφέραμε πρέπει κάποιος να κάνει κάποιες ενέργειες, όπως αυτές αναφέρονται παρακάτω, προκειμένου να συνεχίσει να έχει αναβαθμίσεις μέσω του αποθετηρίου Xenial.

Απομάκρυνση του παλιού πυρήνα και των meta-packages

Κάνουμε ένα reboot από έναν Official πυρήνα του Ubuntu και έπειτα εκτελούμε τις παρακάτω εντολές.

sudo apt-get purge linux-bfq-git
 sudo apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }') 

Οι παραπάνω εντολές πρέπει να απομακρύνουν και τα meta-packages αλλά και τους πυρήνες bfq. Αν όχι, τότε μπορούμε να απομακρύνουμε τους πυρήνες με το χέρι.

Εγκατάσταση του νέου πυρήνα

sudo apt-get update
sudo apt-get install linux-lz4

Πλέον μπορούμε να κάνουμε επανεκκίνηση από τον νέο πυρήνα, έκδοσης 4.12+ με υποστήριξη lz4.
Για να θέσουμε τον BFQ ως τον default scheduler, δείξαμε παραπάνω τον τρόπο.

ΣΗΜΕΙΩΣΗ:
Για την ώρα, η έκδοση i386(32bit) αντιμετωπίζει κάποιο πρόβλημα με το build. Ενδεχομένως οφείλεται σε upstream κώδικα ο οποίος πιθανόν θα διορθωθεί σύντομα, σε επόμενη έκδοση. Αλλά και να μην διορθωθεί, δεν θα κάνω περαιτέρω debugging ψάχνοντας να βρω το commit, να το κάνω reverse …κλπ. Δεν αξίζει για την 32bit έκδοση.

Δεν επηρεάζεται προς το παρόν καθόλου το αποθετήριο Xenial Mub.



 

English Version

Due to the latest developments on BFQ Scheduler and its integration into Linux kernel versions 4.12+
the Xenial repository changes its status.

About the BFQ scheduler, you can read on the official site. About the integration of BFQ into the versions of Linux kernel 4.12+ you can read here.

As we understand, there is no longer any reason to have the Xenial repository in its current form. The v4.11.0-120-bfq, based on v4.11.12, is the latest kernel built with the (legacy) patches of BFQ Scheduler. Legacy patches no longer exist since, as mentioned above, BFQ has integrated into the new 4.12 kernel.


 

Enable BFQ as default scheduler

To enable BFQ as the default scheduler, you’ll need to edit a line in /etc/default/grub and add the scsi_mod.use_blk_mq = 1 parameter.

Example:

GRUB_CMDLINE_LINUX_DEFAULT = "quiet scsi_mod.use_blk_mq = 1"

Then save the file and run an update-grub.

sudo update-grub

Then create a udev rule like the one below

gksudo gedit /etc/udev/rules.d/60-scheduler.rules

Add the following line:

ACTION == "add | change", KERNEL == "sd [a-z]", ATTR {queue / scheduler} = "bfq"

Save the file and execute the following commands:

sudo udevadm control --reload
sudo udevadm trigger

Note that the old elevator = bfq parameter is no longer valid. So we use the above (udev rule) to enable BFQ as the default scheduler.

To confirm it, run:

cat/sys/block/sd */queue/scheduler

or

sudo apt install tlp
sudo tlp-stat -d | grep Sch

Changing the form of the repository

However, the Xenial repository will not close. It will continue to have the latest stable kernel for Ubuntu 16.04 LTS as it comes from the stable Linux Kernel repository.
Plus, no patch will be incorporated into the kernel, it will be even more «clean» than it was, since as mentioned BFQ is already integrated.

 

 

Configuration

What will change is the kernel configuration, and this is as follows:

1) Enable BFQ Scheduler as built in module (though it is integrated but not enabled)
2) Preemption model on low-latency desktop (better responsiveness) Voluntary Kernel Preemption (Desktop)
3) Timer Frequency at 300HZ (I would do 1000Hz but battery consumption on Laptops bites!)
4) Enable LZ4 compress – decompress (for those who want Linux Kernel lz4 compression – decompression). Check this bug report.

Naming Convention and Meta Packages

In the kernel ABI, the bfq will be replaced with lz4.
Meta Packages will be replaced with new ones. Linux-bfq-git with linux-lz4 etc.
The title of the repository changes to «Xenial Xerus latest Linux Kernel», which removes the BFQ from the title.
Anyone who continues to use this repository should take action to upgrade to version 4.12+ with the Configuration already mentioned above.

Kernel Replacement

As mentioned, one has to take some actions as listed below, to continue to receive upgrades through the Xenial repository.

Removing the old kernel and meta-packages

We do a reboot from an Official Ubuntu kernel and then run the following commands.

sudo apt-get purge linux-bfq-git
sudo apt-get purge $ (dpkg -l | awk '/ ^ rc / {print $ 2}')

The above commands must remove both meta-packages and bfq kernels. If not, then we should remove them manually.

Install the new kernel

sudo apt-get update
sudo apt-get install linux-lz4

Now we can reboot from the new 4.12 kernel, with lz4 support.
To set BFQ as the default scheduler, we showed a how to above.

NOTE:
For now, the i386 (32bit) version faces a build problem. It may be due to an upstream code that may be corrected shortly. But even if not, I won’t fix it; I will not do any further debugging to find the commit, reverse it etc. It’s not worth for the 32bit version.

The Xenial Mub repository is currently not affected at all.


Until next time …
Thanks for reading!

3 thoughts on “Kernels and PPAs Update Vol5

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

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

Λογότυπο WordPress.com

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

Φωτογραφία Twitter

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

Φωτογραφία Facebook

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

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

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

Σύνδεση με %s