CPU Power Management

Από Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
Μετάβαση σε: πλοήγηση, αναζήτηση

Εισαγωγή

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


Οι τεχνολογίες που μας δίνουν αυτή τη δυνατότητα διαφέρουν για τους επεξεργαστές Ιntel(SpeedStep) και AMD(PowerNow για mobile cpus και Cool' n Quiet για desktop cpus).Συμβολευτείτε το manual του επεξεργαστή σας για να διαπιστώσετε αν υποστηρίζει κάποια απ αυτές τις τεχνολογίες.

Κernel Configuration

Για να μπορέσει το Linux να αλλάξει τη συχνότητα του επεξεργαστή, πρέπει να “ξέρει” πώς να το κάνει αυτό. Έτσι, ο CPUfreq processor driver παρέχει το interface στον Linux Kernel, ώστε να μπορέσει να χρησιμοποιήσει τις εσωτερικές εντολές του επεξεργαστή για να αλλάξει τη συχνότητα. Επομένως, πρέπει να επιλέξουμε στο kernel configuration τον driver που αντιστοιχεί στον επεξεργαστή μας:
Power Management Option=>CPU Frequency Scaling=>(διαλέξτε τον driver για τον επεξεργαστή σας )

Eκτός απ αυτό όμως,ο kernel πρέπει να ξέρει σε ποια συχνότητα πρέπει να τρέχει ο επεξεργαστής για συγκεκριμένα loads. Αυτό επιτυγχάνεται μέσω ενός CPUfreq policy,δλδ την μέγιστη και την ελάχιστη συχνότητα στις οποίες μπορεί να τρέχει ο επεξεργαστής, και έναν governor ο οποίος επιλέγει σε ποια απ τις διαθέσιμες συχνότητες θα τρέχει ο επεξεργαστής. Υπάρχουν διάφοροι governors στον kernel,με διαφορετικά policies, καθώς και αρκετά userland προγράμματα τα οποία χρησιμοποιούν αυτούς τους governors και μας επιτρέπουν καλύτερη και ευκολότερη ρύθμιση του policy. Εμείς θα χρησιμοποιήσουμε το cpydyn για την αυτόματη αλλαγή της συχνότητας του επεξεργαστή ανάλογα με το load. Το cpudyn χρησιμοποιει 2 kernel governors(powersave,perfomance), οπότε αυτούς τους governors πρέπει να τους κάνουμε compile στον kernel:
Power Management Option=>CPU Frequency Scaling=>(επιλέγουμε τους 2 governors)

Αν θέλετε να χρησιμοποιήσετε κάποιο άλλο πρόγραμμα εκτός του cpudyn(cpufreqd,powernowd κλπ) ίσως θα πρέπει να αλλάξετε το configuration του kernel.

cpudyn

Όπως είπαμε προηγουμένως, για την αλλαγή της συνότητας του επεξεργαστή ανάλογα με το load θα χρησιμοποιήσουμε το cpudyn,το οποίο τρέχει σαν daemon στο background. Αρχικά το εγκαθιστούμε (απ τον package manager της διανομής μας κατα προτίμηση),
για το gentoo:

# emerge -av cpudyn

,και μετά το προσθέτουμε στο default runlevel,
για το gentoo:

# rc-update add cpudyn default

Στη συνέχεια μπορούμε αν θέλουμε να αλλάξουμε το configuration του cpudyn,αν και το default configuration νομίζω είναι μια χαρά. Στο gentoo το config file είναι στο /etc/conf.d/cpudyn.

Δουλεύει;

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

# watch grep \"cpu MHz\" /proc/cpuinfo

Λογικά,αν το cpu είναι idle η συχνότητα θα πρέπει να είναι χαμηλότερη(αυτή που καθορίζεται στο conf του cpudyn), ενώ και η θερμοκρασία του cpu θα πέσει αρκετά.

Εναλλακτικές λύσεις

Εκτός απ το cpudyn υπάρχουν και άλλες εναλλακτικές, με διαφορετικές δυνατότητες,και διαφορετικό configuration, όπως το cpufreqd, το powernowd,το speedfreq κ.α.

Σύνδεσμοι