Προς το περιεχόμενο

Linux + undervolting


pmav99

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Σε συνέχεια της συζήτησης που είχαμε εδώ, δοκίμασα να κάνω undervolting στο laptop και:

  1. Δουλεύει (πλέον το laptop μου κρατάει τα turbo clocks, ενώ πριν σε stress τα έριχνε).
  2. Είναι πολύ πιο εύκολο από τα windows :) (τουλάχιστον από την τελευταία φορά που είχα δοκιμάσει :P).

tl;dr Αξίζει με τα χίλια αν έχετε laptop με haswell ή νεότερο.

τι είναι το undervolt

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

Το undervolting το κάνουμε όταν:

  • έχουμε υψηλές θερμοκρασίες στο CPU οι οποίες προκαλούν θόρυβο ή/και thermal throttling
  • για να μειώσουμε την κατανάλωση ρεύματος και να αυξήσουμε τη διάρκεια της μπαταρίας σε ένα laptop
  • γιατί απλά μας αρέσει να σκαλίζουμε :)

Περισσότερες πληροφορίες στο google (προτείνω εντόνως να διαβάσετε πριν το δοκιμάσετε!)

Μπορούμε να χαλάσουμε κάτι;

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

Παρόλα αυτά, δεν είναι και τόσο τραγικά τα πράγματα. Με βάση την δική μου εμπειρία (η οποία είναι μικρή) και αυτά που έχω διαβάσει στο νετ, ζημιά στον επεξεργαστή πρακτικά δεν κάνουμε. Αν κάνουμε περισσότερο undervolt από αυτό που σηκώνει ο επεξεργαστής μας, απλά ο υπολογιστής μας θα κολλήσει. Κάνοντας restart, αν ΔΕΝ έχουμε αποθηκεύσει τις ρυθμίσεις του undervolt, ο υπολογιστής θα ξεκινήσει κανονικά.

Άρα ο βασικός κίνδυνος που υπάρχει είναι να χάσουμε τη δουλειά που κάνουμε στο PC και που δεν την είχαμε σώσει. Θεωρητικά υπάρχει και ο κίνδυνος του filesystem corruption, αλλά με ένα stable filesystem, πχ  ext4, ο κίνδυνος είναι μάλλον μικρός.

Προκειμένου να αποφύγουμε τα κολλήματα, κάνουμε stress tests. Δηλαδή stress-άρουμε μόνοι μας τα cores του επεξεργαστή μας για να δούμε αν οι τιμές undervolt που δώσαμε είναι υπερβολικές. Αν ο υπολογιστής μας κολλήσει κατά τη διάρκεια του stress, κάνουμε restart , μειώνουμε το undervolting και ξαναστρεσσάρουμε μέχρι να βρούμε settings που είναι σταθερά.

monitoring tools

Θέλουμε κάτι που να δείχνει θερμοκρασία και voltage. Πιθανότατα υπάρχουν και άλλα, αλλά εγώ αυτά χρησιμοποίησα. Το corefreq είναι το πληρέστερο. Επίσης για κάποιο λόγο δείχνει ελαφρά χαμηλότερα clocks από το i7z (πχ 50 Hz). Δεν ξέρω γιατί. Το s-tui είναι σχετικά βαρύ και θα έλεγα ότι δεν κάνει για stress-testing (τρώει cpu cycles)

undervolting tools

Ο βασικός οδηγός που ακολουθούν όλοι είναι αυτός. O οδηγός είναι για intel haswell και νεώτερους επεξεργαστές. Υπάρχουν διάφορα implementations, άλλα σε python και άλλα σε bash:

Περισσότερα μπορούν να βρεθούν στην αναζήτηση του AUR. Από αυτά που είδα το καλύτερο είναι το undervolt. Σε περίπτωση που δεν υπάρχει πακέτο για τη διανομή μας, μπορούμε να κατεβάσουμε απλά το αρχείο *.py και να το τρέξουμε με

sudo python3 /path/to/script/undervolt.py <the rest of the args>

Διαβάστε το readme για λεπτομέρειες. Εν ολίγοις πάντως, τρέχεις κάτι τέτοιο και αυτό είναι όλο (το να βρεις τι τιμές πρέπει να βάλεις είναι άλλη υπόθεση βέβαια).

sudo undervolt --core -150 --cache -150

stressing tools

To βασικό εργαλείο σε linux είναι το stress. Δεν ξέρω αν είναι το καλύτερο αλλά λογικά είναι επαρκές. Έχει διάφορες επιλογές, αλλά για cpu stressing αυτό πρέπει να επαρκεί (4 είναι ο αριθμός των threads που θα τεστάρει· αλλάζουμε κατά το δοκούν).

stress --cpu 4

πως τεστάρουμε

Κατά τη γνώμη μου το βασικότερο είναι:

  1. ΔΕΝ ενεργοποιούμε autostart κτλ
  2. ΔΕΝ αποθηκεύουμε ρυθμίσεις. IMHO, εκτός και αν φας αρκετό χρόνο σε stress testing ώστε να είσαι σίγουρος ότι τα settings σου είναι σωστά, αξίζει να κάνεις χειροκίνητα το undervolt για καμιά εβδομάδα για να δεις τι γίνεται.

Από εκεί και πέρα αν δούμε ότι κάνει freeze ο υπολογιστής μας και θέλει reset, τότε έχουμε κάνει πολύ μεγάλο undervolt και πρέπει να το μειώσουμε (να δώσουμε δηλαδή περισσότερη τάση). Άρα

  1. κάνουμε undervolt
  2. στρεσσάρουμε
  3. Αν δεν έχουμε freeze, αυξάνουμε το undervolting και ξαναστρεσάρουμε
  4. Αν έχουμε freeze μειώνουμε το undervolting και ξαναστρεσάρουμε

bisection is your friend!

Για την ιστορία στο laptop μου με i7 6700HQ τα 150 mV δείχνουν να είναι σταθερά και τώρα δοκιμάζω για λίγες μέρες με 180 mV, αλλά αυτό έχει να κάνει τόσο με το μοντέλο του επεξεργαστή όσο και με το συγκεκρμένο CPU που είναι περασμένο στο laptop μου. Μπορεί να έχεις δύο ολόιδια laptops και το ένα  να θέλει μόνο 120 mV ενώ το άλλο 150 mV

 

 

Επεξ/σία από pmav99
  • Like 6
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Να ψαχτεις κ με το undrevolting σε όλα τα steps πχ σε 2600mhz μπορεί να θέλει -150mv κ σε 2000mhz -200mv

Επίσης θέλει τεστ σε όλα τα steps όχι μόνο στο μαξ για να είσαι σίγουρος ότι είναι 100% σταθερός , το underclocking παίζει μεγάλο ρόλο για θερμοκρασίες / μπαταρία κτλπ

Το καλυτερο τεστ ειναι το (m)prime

Για core2duo υπάρχει το phc-intel

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

@Mad_man Σωστό είναι αυτό που λες και αν θυμάμαι καλά στα windows γινόταν, αλλά δεν είμαι σίγουρος για 2 πράγματα:

  1. αν υπάρχει υποστήριξη. Από όσο είδα κανένα από τα implementations δεν σου επιτρέπει να ορίσεις διαφορετικές τιμές undervolt ανά frequency.
  2. πως μπορείς να κάνεις tests με χαμηλότερα frequencies (ίσως βάζοντας καρφωτές τιμές στο/sys/devices/system/cpu/cpu#/cpufreq/cpuinfo_max_freq ?)

Επίσης, αν ξέρεις, υπάρχει περίπτωση σε χαμηλότερη συχνότητα να χρειάζεται λιγότερο undervolt από ότι σε μεγαλύτερη;

edit

προσέθεσα στο αρχικό post και το throttled το οποίο φαίνεται να είναι το πλέον πλήρες project, αλλά δεν το έχω δοκιμάσει. Αν το τεστάρει κανείς ας γράψει δυο λόγια.

Επεξ/σία από pmav99
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στους core2duo γίνεται κάτι τέτοιο για ψαχτο μπας κ γίνεται κ με haswell ή νεότερο γιατί μου φαίνεται παράξενο να μην γίνεται

 

Δίνεις cpupower frequency-info για να δεις τα step του επεξεργαστή και μπορείς να κλειδώσεις σε ένα step κ να τεσταρεις

Πχ για step 2000mhz δίνεις  cpupower frequency-set --max 2000000 και cpupower frequency-set --min 2000000

Ή αλλιως

sh -c "echo 2000000 > /sys/devices/system/cpu/cpu#/cpufreq/scaling_max_freq"

sh -c "echo 2000000 > /sys/devices/system/cpu/cpu#/cpufreq/scaling_min_freq"

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Thanks, αν και νομίζω ότι για κάποιο λόγο σε εμένα δεν τα δείχνει:

$ sudo cpupower frequency-info

analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 800 MHz - 3.50 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 800 MHz and 3.50 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.60 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes

Αν και λογικά είναι τα πράσινα νούμερα που δείχνει το corefreq-cli γιατί 2600 είναι το base frequency και 3500/3300/3200/3100 τα turbο ανάλογα με τον αριθμό των πυρήνων

Vow5zAP.png

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Δεν έχω δει ποτέ μου laptop ΒΙΟS με τέτοιες επιλογές :)

BTW, μπορεί κάποιος να μου πει αν βλέπει κάτι διαφορετικό από το cpupower frequency-info?

Επεξ/σία από pmav99
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Δεν δείχνει τιποτα το cpupower frequency-info επειδή χρησιμοποιεί τον intel_pstate driver

Τα πράγματα εκεί είναι πιο περίεργα

Χρειάζεται να βρεις τα num_pstates και να διαιρέσεις με το 2700 κ αυτό που θα βρεις θα είναι τα steps,  πχ 2700/18=150

Άρα 800,800+150,950+150 κτλπ

Λογικά αν δώσεις μια τυχαία συχνότητα στο cpupower θα κλειδώσει στην αμέσως επομένη που θα βρει

Μπορείς να κάνεις κ undervolt στην gpu αν έχεις όρεξη

 

 Άμα δεν βαριέσαι ρίξε μια ματιά εδώ

https://wiki.archlinux.org/index.php/CPU_frequency_scaling#i7z

https://www.kernel.org/doc/html/v4.12/admin-guide/pm/intel_pstate.html

Επεξ/σία από Mad_man
  • Thanks 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...