Στον σημερινό οδηγό θα δούμε κάποια χρήσιμα tweaks που θα βελτιώσουν την εμπειρία χρήσης του Linux στον υπολογιστή σας, ιδιαίτερα αν είναι χαμηλής μνήμης με κλασσικό δίσκο.

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

Είναι σημαντικό να ξεχωρίσετε στο μυαλό σας την έννοια Επίδοση με την Απόκριση (Performance – Responsiveness). Οι περισσότεροι ανησυχούν πρώτα για τις επιδόσεις στο Desktop και αυτό είναι λάθος. Το Linux είναι πολύ γρήγορο, αλλά δεν αισθάνεται έτσι όταν το έχουν στο Desktop.

Advertisements

Desktop vs Server | Responsive vs Performance

Κατά τη ρύθμιση ενός διακομιστή, θα θελήσετε να βελτιώσετε τις επιδόσεις του και να διασφαλίσετε ένα υψηλό throughput. Εκεί ακριβώς οι περισσότερες διαμορφώσεις των Linux διανομών κυριαρχούν έναντι του ανταγωνισμού (Windows Server).

Αλλά σε ένα Desktop PC θέλετε άλλη διαρρύθμιση του Linux. Για παράδειγμα, αντιγράφετε ένα αρχείο 20 GB σε USB ή αποσυμπιέστε ένα μεγάλο αρχείο ή έχετε στο παρασκήνιο να συγχρονίζει κάποιο λογισμικό gigabyte αρχείων απο-προς υπηρεσίες. Ή δεν κάνετε «τίποτα» (τουλάχιστον στο προσκήνιο), αλλά κάποια υπηρεσία Tracker ευρετηριάζει τα αρχεία σας στο παρασκήνιο και το Desktop σας, κολλάει για λίγα δευτερόλεπτα, ή δεν αποκρίνεται για κάποια λεπτά…

Άρα στην πραγματικότητα εκεί που το Linux είναι διαμορφωμένο να έχει επιδόσεις (για τις υπηρεσίες του συστήματος), σας κάνει την ζωή δύσκολη στο Desktop όσον αφορά το πόσο γρήγορα αποκρίνεται.

Desktop vs Server | Real Time Kernel

Ένας άλλος μύθος που έχω ακούσει είναι ότι θέλουμε κάποιο Real Time για να έχουμε απόκριση σε πραγματικό χρόνο ή άμεση απόκριση.

Το να είναι ο πυρήνας Linux Real Time δεν σημαίνει «έχω υπολογιστή εξαιρετικά γρήγορο», απλά σημαίνει «έχω διεργασίες που είναι προβλέψιμες». Εάν με άλλα λόγια, κάτι πρέπει να συμβεί σε μια συγκεκριμένη συχνότητα (Hz), δεν έχει σημασία εάν κάθε κύκλος διαρκεί 1 δευτερόλεπτο αρκεί να διαρκεί το ίδιο 1 δευτερόλεπτο σε όλες τις προθεσμίες (ιδιαίτερα σημαντικό στα transactions – συναλλαγές).

Εάν έχετε ένα «γρήγορο» μηχάνημα που κάνει υπολογισμούς στα 10 χιλιοστά του δευτερολέπτου σε κάθε κύκλο, αλλά που και που σκαλώνει τυχαία για μερικά χιλιοστά του δευτερολέπτου, αυτό δεν είναι Real Time. Αυτό θα ήταν σοβαρό πρόβλημα για όσους ασχολούνται με ήχο, βίντεο, πολυμέσα, ρομποτική κλπ.

Desktop σημαίνει θέλω responsiveness

Αυτό που θέλουμε από το Desktop μας είναι να το διαμορφώσουμε ώστε να αποκρίνεται (responsiveness) όσο πιο άμεσα γίνεται και αυτό δεν έχει να κάνει με «επιδόσεις» μόνο.

Όπως είχαμε δει και στον οδηγό Μνήμη RAM: Βελτίωση διαχείρισης με zram – zswap – zcache, όταν π.χ. ανοίγουμε τον bowser μας όλες οι ιστοσελίδες και υπηρεσίες είναι εν δυνάμει εφαρμογές που ένα κομμάτι τρέχει στο PC μας. Όταν πάμε λοιπόν να τρέξουμε αυτές τις «εφαρμογές 2020» σε PC του 2000 – 2010 και μνήμη μικρότερη των 3GB τότε θα έχουμε συχνό SWAPing με αποτέλεσμα η απόκριση του συστήματος να πιάνει πάτο.

Για αυτές τις περιπτώσεις θα πρέπει πρώτα να δούμε π.χ. με τα 5 προγράμματα για πληροφορίες συστήματος Hardware στο Linux για να μάθουμε καλά το σύστημά μας και να δούμε επίσης με το Sysglance την τωρινή κατάσταση του συστήματος μας.

Στην συνέχεια θα κάνουμε κάποιες αλλαγές στο Linux σύστημά μας για να μην είναι τόσο αργό:

  • BFQ – Βελτίωση συστήματος
  • Tuned – Προφίλ επιδόσεων
  • Preload – Για να ανοίγουν ταχύτερα οι εφαρμογές
  • ZRAM – Για να χρησιμοποιείται η RAM πιο αποδοτικά
  • Ananicy – Για να δίνεται η βέλτιστη προτεραιότητα στις εφαρμογές μας
  • vm.* – Όλα στην RAM
Advertisements

BFQ | Βελτίωση συστήματος

Το BFQ από την έκδοση Linux kernel 4.12 διαθέτει τον BFQ ενσωματωμένο, αλλά όχι ενεργό. Το BFQ με λίγα λόγια καθορίζει τι προτεραιότητα έχει μια διεργασία στο δικαίωμα πρόσβασης στον δίσκο (βλέπε παλιό οδηγό: Linux με αναβολικά: Preemtive BFS και BFQ Linux kernel).

Ανοίγουμε τερματικό και δίνουμε :

grep "" /sys/block/sd*/queue/scheduler
mq-deadline [bfq] none

Στο παραπάνω βλέπετε ότι τα [ ] είναι στο bfq το σύστημά μου. Αν σε εσάς είναι κάπου αλλού, τότε θα πρέπει να φτιάξουμε έναν κανόνα «udev rule» για να το φορτώνει. Με τον αγαπημένο μας VIM ή NANO :

sudo vim /etc/udev/rules.d/60-ioschedulers.rules

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

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

Ενημερώνουμε το σύστημά μας :

sudo udevadm control --reload
sudo udevadm trigger

ή απλά κάνουμε μια επανεκκίνηση και ελέγχουμε αν είναι ενεργό :

grep "" /sys/block/sd*/queue/scheduler
mq-deadline [bfq] none

Tuned | Προφίλ επιδόσεων

To Tuned είναι μια υπηρεσία του Linux συστήματος το οποίο έχει δημιουργηθεί από μηχανικούς της RedHat ώστε ο εκάστοτε χρήστης να επιλέγει ένα προφίλ σύμφωνα με τις ανάγκες λειτουργίας του υπολογιστικού συστήματος (Desktop, Laptop, Server κλπ). 

Σε συστήματα Deb μπορείτε να το εγκαταστήσετε:

sudo apt install tuned

Σε συστήματα Rpm μπορείτε να το εγκαταστήσετε:

sudo yum install tuned

Αφού το κάνετε εγκατάσταση ενεργοποιείτε και το ξεκινάτε την υπηρεσία.

sudo systemctl enable --now tuned

Για να δείτε τα διαθέσιμα προφίλ

sudo tuned-adm list

Αν έχουμε Desktop επιλέγουμε κάποιο desktop προφίλ ενώ αν έχουμε Laptop επιλέγουμε τo αντίστοιχο με την παρακάτω εντολή:

sudo tuned-adm profile desktop

Για να κατανοήσετε περισσότερο το tuned αλλά και να δείτε πως δουλεύει, διαβάστε το Tuned και Tuned-adm: Επιλογή προφίλ επιδόσεων για Desktop, Laptop ή Server.

Preload | Για να ανοίγουν ταχύτερα οι εφαρμογές

Η προφόρτιση (Preload) είναι μια υπηρεσία του συστήματος που διατηρεί κάποιες βιβλιοθήκες συχνά ανοιγμένων εφαρμογών στη μνήμη RAM.

Το πλεονέκτημα είναι ότι οι εφαρμογές ξεκινούν γρηγορότερα επειδή η ανάγνωση από τη μνήμη RAM είναι πάντα πιο γρήγορη από ότι από τον σκληρό δίσκο. Ωστόσο, μέρος της μνήμης RAM σας θα αφιερωθεί σε αυτήν την εργασία, αλλά όχι περισσότερο εάν κρατήσετε την εφαρμογή ανοιχτή. Επομένως, η προφόρτιση χρησιμοποιείται καλύτερα με μεγάλες και συχνά χρησιμοποιούμενες εφαρμογές όπως Firefox, Chrome, Brave και LibreOffice.

Για να το κάνετε εγακτάσταση:

sudo apt install preload
sudo systemctl enable --now preload

ZRAM | Για να χρησιμοποιείται η RAM πιο αποδοτικά

Στην ανάλυση που είχαμε κάνει σχετικά με την μνήμη RAM στο άρθρο Απομυθοποιώντας τη διαχείριση μνήμης στο Linux, είδαμε πόσο έξυπνα γίνεται η διαχείριση της RAM στο Linux.

Το zram (παλαιότερα ονομαζόταν compcache) του πυρήνα Linux, παρέχει μια συμπιεσμένη συσκευή στη μνήμη RAM.

Στην περίπτωση όμως που θέλουμε να έχουμε μια πιο αποδοτική χρήση του για Desktop σε αργούς υπολογιστές μπορούμε να χρησιμοποιήσουμε το Zramswap.

sudo apt install zram-tools
sudo systemctl enable --now zramswap

Για να μάθετε περισσότερα για το Zram διαβάστε Zramswap | Βελτίωση απόκρισης σε PC με λίγη RAM.

Ananicy | Βέλτιστη προτεραιότητα στις εφαρμογές μας

Μια διεργασία με υψηλή προτεραιότητα έχει χαμηλότερο nice level επειδή παίρνει περισσότερο από τον χρόνο της CPU, ο οποίος αφήνει λιγότερο για οτιδήποτε άλλο. Εναλλακτικά, μια διεργασία με χαμηλή προτεραιότητα (υψηλό nice level) του δίνει χρόνο ο επεξεργαστής μόνο μετά από την ολοκλήρωση άλλων διεργασιών με υψηλότερη προτεραιότητα.

Το Ananicy (ANother Auto NICe daemon) – είναι μια υπηρεσία που δημιουργήθηκε για τη διαχείριση των προτεραιοτήτων των διεργασιών I/O και της CPU, με ένα σύνολο κανόνων που παρέχεται από την κοινότητα Linux για δημοφιλείς εφαρμογές που χρησιμοποιούμε στο Desktop.

Για να το εγκαταστήσουμε σε Deb στήματα:

cd /tmp/
git clone https://github.com/Nefelim4ag/Ananicy.git
./Ananicy/package.sh debian
sudo apt install ./Ananicy/ananicy-*.deb
sudo systemctl enable --now ananicy

Αν δώσετε systemctl status ananicy θα δείτε π.χ. η προταιρεότητα του browser σας να αυξάνει μειώνοντας το nice level. Έτσι βελτιώνεται και αποφεύγονται συνθήκες που μπορεί κάτι στο παρασκήνιο να lagαρει την περιήγησή μας.

Για να μάθετε περισσότερα μπορείτε να δείτε το αποθετήριο του στο Github.

Advertisements

vm.* – Όλα στην RAM

Το άλλο πράγμα που πρέπει να λάβετε υπόψη είναι ότι το Linux έρχεται προρυθμισμένο για να εξισορροπεί την εκφόρτωση των δεδομένων των εφαρμογών μας στην SWAP και με το ZRAM εξασφαλίσαμε ότι αυτό θα γίνεται το λιγότερο δυνατόν.

Παρόλα αυτά το σύστημα θα προσπαθεί να φιλοξενήσει την προσωρινή μνήμη συστήματος αρχείων στην RAM και να αδειάζει τα δεδομένα των εφαρμογών μας στην SWAP. Παράδειγμα, εάν αποσυμπιέζετε ένα μεγάλο αρχείο, ορισμένα από αυτά τα δεδομένα θα μεταβούν στην μνήμη cache της RAM και τα δεδομένα των εφαρμογών (π.χ. browser) θα μετακινηθούν στο δίσκο. Αφού ολοκληρώσετε την αποσυμπίεση, πάτε π.χ. με Alt+Tab στις εφαρμογές σας και τσάααααακ…. η εφαρμογή δεν αποκρίνεται.

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

sudo tee -a /etc/sysctl.d/99-sysctl.conf <<-EOF
vm.swappiness=10 
vm.vfs_cache_pressure=50
EOF

Κάνουμε μια επανεκκίνηση και ελέγχουμε αν έχει ενεργοποιηθεί:

sudo sysctl -a | grep -i vm.vfs
vm.vfs_cache_pressure = 50

sudo sysctl -a | grep -i vm.swap
vm.swappiness = 10

Επίλογος

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

Μοιραστείτε την δική σας εμπειρία στα σχόλια απο κάτω.

Παραπομπές: