Kernel Optimization - Αυτόματη δημιουργία βελτιστοποιημένου...

3
osarena.net http://osarena.net/hacks-guides/kernel-optimization-aftomati-dimiourgia-veltistopiimenou-pirina.html Kernel Optimization: Αυτόματη δημιουργία βελτιστοποιημένου πυρήνα Οι περισσότεροι χρήστες χρησιμοποιούν τον πυρήνα που έρχεται από τις διανομές τους και αυτό είναι καλό. Αλλά μερικοί δείξατε ιδιαίτερο ενδιαφέρον με το προηγούμενο άρθρο όπου παρουσίασα το πως να συνθέσετε το δικό σας πυρήνα σε 10 απλά βήματα. Μέχρι στιγμής η σειρά οδηγών που έχουμε καλύψει για την βελτιστοποίηση της διανομής Ubuntu, έχουν ως εξής : Σήμερα θα δούμε μια μέθοδο την οποία επιθυμούν σίγουρα πολύ από αυτούς που διάβασαν τα προηγούμενα άρθρα. Να σημειώσω εδώ ότι το μόνο άρθρο που χρειάζεται να διαβάσετε είναι το 3o, διότι ο σημερινός οδηγός είναι ουσιαστικά μια επέκταση του 5του βήματος. Με άλλα λόγια η τεχνική που θα περιγράψω εδώ έχει εφαρμογή αμέσως μετά το cd linux-x.x.x cp -vi /boot/config-`uname -r` .config Η τεχνική έχει να κάνει με ένα μαγικό εργαλείο που είναι ενσωματωμένο στον πυρήνα : make localmodconf ig Μια μικρή Ιστοριούλα… Επιτρέψτε μου να σας μεταφέρω την ιστορία του εργαλείου, την οποία έμαθα από τον προγραμματιστή τους: Έγραψα το streamline_conf ig.pl πριν πολλά χρόνια (2005) καθώς ανέπτησσα τον πυρήνα linux σε πολλούς υπολογιστές και έπρεπε να μειώσω τον χρόνο μεταγλώττισης του. Δεν είχα χρόνο να ψάχνω ποιους drivers (modules) χρειάζομαι για κάθε μηχάνημα και ποια όχι οπότε το να τα απενεργοποιώ από το xconf ig ήταν χρονοβόρα διαδικασία. Κάπου το 2008, στο συνέδριο “Kernel Summit” ( Σύνοδο Κορυφής Linux Kernel ), προέκυψε μια συζήτηση σε ένα βασικό θέμα που μας προβλημάτιζε για χρόνια. Το θέμα λοιπόν ήταν ότι όταν κάποιος αναφέρει ένα bug σε κάποιο κομμάτι του πυρήνα και ο κύριος προγραμματιστής του συγκεκριμένου έργου ζητάει από το χρήστη που αναφέρει το bug να εκτελέσει μια ανασκόπηση στο git για να βρει την αλλαγή στον κώδικα που προκαλούσε το πρόβλημα, ο χρήστης ήταν απρόθυμος. Πως να μην ήταν άλλωστε αφού διέθετε μόνο ένα αρχείο config που προερχόταν από την διανομή του και δεν γνώριζε αρκετά για το πως να του αφαιρέσει όσα module δεν είναι απαραίτητα. Σκεφτείτε ότι μια ανασκόπηση στο git συνήθως διαρκεί 13 πλήρεις μεταγλωττίσεις του πυρήνα !. Αυτό θα μπορούσε να πάρει μια εβδομάδα για κάποιον με ένα παλιό μηχάνημα και ένα conf ig που έρχεται από μια διανομή. Τότε είναι που ο Linus Torvalds τα’χασε και άρχισε να ουρλιάζει στους προγραμματιστές, ρωτώντας γιατί δεν έχουμε κάτι που μπορεί να τακτοποιήσει και να πετσοκόψει το config για να επιταχύνει την μεταγλώττιση του πυρήνα για τους απλούς χρήστες. Ένας από τους προγραμματιστές τότε, που χρησιμοποιεί το streamline_config.pl που είχα γράψει, απάντησε λέγοντας «Εμείς το κάνουμε με το streamline_conf ig του Steve Rostedt”. Ο Linus, στη συνέχεια εκνευρισμένος, ρώτησε γιατί δεν είναι ήδη

Transcript of Kernel Optimization - Αυτόματη δημιουργία βελτιστοποιημένου...

Page 1: Kernel Optimization - Αυτόματη δημιουργία βελτιστοποιημένου πυρήνα

o sarena.net http://osarena.net/hacks-guides/kernel-optimization-aftomati-dimiourgia-veltistopiimenou-pirina.html

Kernel Optimization: Αυτόματη δημιουργίαβελτιστοποιημένου πυρήνα

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

Μέχρι στ ιγμής η σειρά οδηγών που έχουμε καλύψει για την βελτ ιστοποίηση της διανομής Ubuntu, έχουνως εξής :

Σήμερα θα δούμε μια μέθοδο την οποία επιθυμούν σίγουρα πολύ από αυτούς που διάβασαν ταπροηγούμενα άρθρα. Να σημειώσω εδώ ότ ι το μόνο άρθρο που χρειάζεται να διαβάσετε είναι το 3o,διότ ι ο σημερινός οδηγός είναι ουσιαστ ικά μια επέκταση του 5του βήματος. Με άλλα λόγια η τεχνικήπου θα περιγράψω εδώ έχει εφαρμογή αμέσως μετά το

cd linux-x.x.x

cp -vi /boot/config-`uname -r` .config

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

make localmodconf ig

Μια μικρή Ιστοριούλα…

Επιτρέψτε μου να σας μεταφέρω την ιστορία του εργαλείου, την οποία έμαθα από τον προγραμματ ιστήτους:

Έγραψα το streamline_conf ig.pl πριν πολλά χρόνια (2005) καθώς ανέπτησσα τον πυρήνα linux σεπολλούς υπολογιστές και έπρεπε να μειώσω τον χρόνο μεταγλώττ ισης του. Δεν είχα χρόνο να ψάχνωποιους drivers (modules) χρειάζομαι για κάθε μηχάνημα και ποια όχι οπότε το να τα απενεργοποιώ απότο xconf ig ήταν χρονοβόρα διαδικασία.

Κάπου το 2008, στο συνέδριο “Kernel Summit” ( Σύνοδο Κορυφής Linux Kernel ), προέκυψε μιασυζήτηση σε ένα βασικό θέμα που μας προβλημάτ ιζε για χρόνια. Το θέμα λοιπόν ήταν ότ ι όταν κάποιοςαναφέρει ένα bug σε κάποιο κομμάτ ι του πυρήνα και ο κύριος προγραμματ ιστής του συγκεκριμένουέργου ζητάει από το χρήστη που αναφέρει το bug να εκτελέσει μια ανασκόπηση στο git για να βρει τηναλλαγή στον κώδικα που προκαλούσε το πρόβλημα, ο χρήστης ήταν απρόθυμος. Πως να μην ήτανάλλωστε αφού διέθετε μόνο ένα αρχείο conf ig που προερχόταν από την διανομή του και δεν γνώριζεαρκετά για το πως να του αφαιρέσει όσα module δεν είναι απαραίτητα. Σκεφτείτε ότ ι μια ανασκόπησηστο git συνήθως διαρκεί 13 πλήρεις μεταγλωττ ίσεις του πυρήνα !. Αυτό θα μπορούσε να πάρει μιαεβδομάδα για κάποιον με ένα παλιό μηχάνημα και ένα conf ig που έρχεται από μια διανομή.

Τότε είναι που ο Linus Torvalds τα’χασε και άρχισε να ουρλιάζει στους προγραμματ ιστές, ρωτώνταςγιατ ί δεν έχουμε κάτ ι που μπορεί να τακτοποιήσει και να πετσοκόψει το conf ig για να επιταχύνει τηνμεταγλώττ ιση του πυρήνα για τους απλούς χρήστες. Ένας από τους προγραμματ ιστές τότε, πουχρησιμοποιεί το streamline_conf ig.pl που είχα γράψει, απάντησε λέγοντας «Εμείς το κάνουμε με τοstreamline_conf ig του Steve Rostedt”. Ο Linus, στη συνέχεια εκνευρισμένος, ρώτησε γιατ ί δεν είναι ήδη

Page 2: Kernel Optimization - Αυτόματη δημιουργία βελτιστοποιημένου πυρήνα

ενσωματωμένο στον πυρήνα. Έτσι κατέληξε στον πυρήνα…

Τι μας προσφέρει το LocalModConf ig;

Οι περισσότεροι δεν θέλουν να αρκεστούν με το να δηλώσουν απλά τον επεξεργαστή τους και ναεπωφεληθούν πλήρως από τ ις δυνατότητες του. Πολλοί θέλουν να εξειδικεύσουν μέχρι “αηδίας” τονπυρήνα τους σύμφωνα με τ ις προδιαγραφές του υπολογιστή τους. Με άλλα λόγια θέλουν ο πυρήναςτους να είναι κομμένος και ραμμένος αλλά και να διαθέτει drivers μόνο για τ ις συσκευές που διαθέτει ουπολογιστής τους.

Αν δείτε με το xconf ig για πόσα πράγματα διαθέτει το Linux drivers θα εκπλαγείτε. Χιλιάδες modules ταοποία ποτέ δεν θα τα χρειαστείτε. Βέβαια αυτά τα modules δεν πρόκειται να ενεργοποιηθούν ποτέ ανδεν έχετε συσκευές που τ ις χρειάζονται οπότε και έτσι να τα αφήσετε δεν θα έχετε κανένα πρόβλημα.

Όμως, επειδή είμαστε ανήσυχα μυαλά και θέλουμε το Linux να διαθέτει μόνο στοιχεία που υπάρχουνστον υπολογιστή μας αλλά και να μειώσουμε τον χρόνο μεταγλώττ ισης του σε μερικά λεπτά (όχι 2ώρες), τότε θα πρέπει να αφαιρέσουμε ότ ι είναι περιττό.

Αν όμως το προσπαθήσετε να το κάνετε χειροκίνητα στο xconf ig και βγάζετε ένα-ένα τα στοιχεία πουδεν υπάρχουν στον υπολογιστή σας τότε θα έρθει η Δευτέρα Παρουσία και ακόμα δεν θα έχετετελειώσει!

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

Δραματ ική μείωση του χρόνου μεταγλώττ ισης

Ένας πυρήνας αποκλειστ ικά φτ ιαγμένος για τον υπολογιστή μας

Προϋποθέσεις επιτυχίας

Υπάρχει μόνο μια προϋπόθεση για να έχετε έναν απροβλημάτ ιστο πυρήνα. Πριν κάνετε οτ ιδήποτε

Συνδέστε στον υπολογιστή σας όλες τ ις συσκευές που έχετε (usb stick, εξωτερικοί σκληροί,webcam, scanner, εκτυπωτές κλπ…. )

Σιγουρευτείτε ότ ι όλα δουλεύουν.

Μην ξεχάσετε καμία συσκευή !

Το τελευταίο είναι σημαντ ικό… γιατ ί και εγώ την έπαθα… ξέχασα να συνδέσω ένα μικρό usb stick πουείχα (2GB FAT32) με αποτέλεσμα όταν τελείωσα με την μεταγλώττ ιση και εγκατάσταση του πυρήνα,όταν σύνδεσα το usb stick (το χρειάστηκα κάποια στ ιγμή) δεν το αναγνώριζε ο πυρήνας μου. Γιατ ίσυνέβη αυτό;

Μα πολύ απλά διότ ι το LocalMod κοιτάει μόνο τα module που είναι φορτωμένοι την στ ιγμή που τοτρέχετε και έτσι ενεργοποιεί τα αντ ίστοιχα στον πυρήνα πριν την μεταγλώττ ιση. Άρα συμβουλή

Μην ξεχάσετε καμία συσκευή !

Ελέγξτε στο xconf ig ότ ι δεν ξέφυγε κάποιος driver ( module ) που χρειάζεστε (όπως π.χέπρεπε να ελέγξω την υποστήριξη για f at/f at32 συστήματα αρχείων)

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

Αν λοιπόν είστε σίγουροι ότι

Page 3: Kernel Optimization - Αυτόματη δημιουργία βελτιστοποιημένου πυρήνα

ΔΕΝ πρόκειται να αγοράσετε νέα συσκευή τότε συνεχίστε. Αν όμως πρόκειται να συνδέσετε κάποια συσκευήστο άμεσο μέλλον ή δεν είστε σίγουροι αν θα συνδέσετε ποτέ κάποια συσκευή τότε παραμείνετε σε αυτά πουμάθατε στο άρθρο 10 βήματα για να μεταγλωττίσετε τον πυρήνα

Όσοι είστε σίγουροι λοιπόν ξεκινάμε…

Είμαστε στο 5 βήμα και έχουμε αντ ιγράψει το .conf ig απο τον πυρήνα της διανομής μας. Η εντολή πουθα τρέξουμε είναι :

make localmodconfig

Αυτό θα εξετάσει αυτόματα το αποτέλεσμα της εντολής lsmod, για να δει τ ις συσκευές τουυπολογιστή, έπειτα θα ελέγξει τα module που είναι σε λειτουργία εκείνη τη στ ιγμή, θα τα αντ ιπαραβάλειμε τον πυρήνα που πρόκειται να μεταγλωττ ίσετε, θα ενεργοποιήσει μόνο αυτά που χρειάζεστε καιτέλος θα αντ ικαταστήσει το .conf ig με νέες ρυθμίσεις.

Αυτό ήταν, πλέον έχετε ένα νέο .conf ig αρχείο και συνεχίζετε στο Βήμα 6 όπου τρέχετε

make xconfig

Κάποιες τελευταίες σκέψεις…

Κάτι που πρέπει να γνωρίζετε είναι ότ ι υπάρχει περίπτωση αφού φτ ιάξατε τον πυρήνα σας η διανομήνα εμφανίσει ενημερώσεις λογισμικού. Δεν είναι σπάνιο αλλά το Ubuntu λαμβάνει μια φορά το 2μηνοαναβαθμίσεις του πυρήνα. Σε αυτή την περίπτωση μόλις εγκατασταθούν οι αναβαθμίσεις και κάνετεεπανεκκίνηση θα δείτε ότ ι ο πυρήνας σας είναι εκεί αλλά θα είναι κάτω από την αναβαθμισμένη έκδοση.Σε αυτή την περίπτωση έχετε 3 επιλογές

1. Ξανακάνετε τα 10 βήματα με τον αναβαθμισμένο πυρήνα

2. Δεν κάνετε τα βήματα αλλά κλειδώνετε (από το Synaptic Package Manger) την έκδοση του πυρήναπου έχετε φτ ιάξει για να μην λαμβάνετε αναβαθμίσεις

3. Παρατάτε τα όπλα και συνεχίζετε να χρησιμοποιείτε τον αναβαθμισμένο πυρήνα της διανομήςσας και δεν ξανά ασχολείσθε με το άθλημα.

Εγώ ελέγχω αν η αναβάθμιση που μου προτείνει η διανομή για τον πυρήνα είναι απαραίτητη καιαποφασίζω αν θα συνεχίσω. Συνήθως όμως μόλις φτ ιάξω τον πυρήνα μου τον κλειδώνω και δενεπιτρέπω την αναβάθμισή του.

Με αυτό το άρθρο κλείνουμε το κεφάλαιο πυρήνας εδώ και σε επόμενο άρθρο θα συνεχίσουμε με τηνβελτ ιστοποίηση όλου του λειτουργικού…

Μέχρι τότε ξεσκίστε τον πυρήνα σας….