Virransäästöä ja käsittämätöntä säätöä

Nyt kun Intelin heppu julkaisu kivoja graafeja niin voinkin julkaista tämän postauksen tekemättä niitä itse. Alla on siis käsittämätöntä vuodatusta kaikenkarvaisilla suomenkielisillä termeillä, joita on höystetty kirjoitusvirheillä. Toisin sanoen siitä ei varmaan ota Erkkikään selvää.


Koska Gentoossani ei vaihteeksi ollut mitään säädettävää, piti keksiä jotain uutta. Sopivaksi aiheeksi löytyi virransäästö. Tässä tuleekin tietoa virransäästötavoista helpoista vaikeampiin käyttäen esimerkkinä omaa kannettavaani TP R52:ta.Alla on oletettu että käytössä on ydin 2.6.21. Osa toimii vanhemmallakin.

Helppoja peruskeinoja

Näytön taustavalon kirkkauden säätäminen pitäisi onnistua suoraan näppäimistöltä. Helppo, mutta joskin ympäristosidonnainen tapa säästää vähän virtaa. Enemmän virtaa säästyy, kun näytön sammuttaa kokonaan, joten kannattaa heittää hyvästi näytönsäästäjille niiden alkuperäisemmässä merkityksessä.

Langattoman laitteet kannattaa ottaa pois käytöstä, kun niitä ei tarvita. R52:ssa ainakin BlueToothin saa pois suoraan näppäimistöltä. Muissa laitteissa sama voi onnistua myös wlanille. Saman asian voi yleensä hoitaa ohjelmallisestikin.

Peruskeinoja, joiden kannattaa tarkistaa toimivan

Suoritin on yksi pahimmista virtasyöpöistä näytön kanssa. Toisin kuin näyttöjen, suorittimien virrankulutusta voi hallita useammalla eri tavalla. Yleensä mitä uudempi suoritin, sitä enemmän tai paremmin se tukee eri tapoja.

Tärkein tapa on kellotaajuuden laskeminen, kun suoritinta ei käytetä. Tämä onnistuu automaattisesti CPU Frequency Governorilla eli suorittimen suorituskykyprofiililla. Profiilin valinta onnistuu useimpien työpöytien virransäästösovelmilla, laptop-modella tai käsin. Intelin suorittimien kanssa on suositeltavaa käyttää ondemand-profiilia. AMD:n prosessoreilla conservative saattaa olla parempi.

Ytimen versioilla ≤2.6.21 ondemand-profiilia käytettäessä kannattaa suorittaa seuraavat komennot, jotta profiili ei aiheuttaisi turhia keskeytyksiä (keskeytyksistä lisää alempana).

cd /sys/devices/system/cpu/cpu*/cpufreq # tarkka polku voi hieman vaihdella
cat ondemand/sampling_rate_max > ondemand/sampling_rate

Tämän R52:n Pentium M suoritin saa suurimmalla nopeudella (1866 MHz) 1.372 V ja pienimmällä (800 MHz) 0.988 V.

Lisäksi suoritin voi tukea throttling eli hidastustiloja. Verrokkisuoritin tukee kahdeksaa tilaa, joilla suoritinta voi käskeä suorittamaan tyhjää jopa 87 % ajasta. Hidastuksella ei juurikaan virtaa säästestä, joten sen hyöty onkin lähinnä lämpötilan laskeminen. Liian suuri lämpötila voikin laukaista pakotetun hidastustilan, joka ohittaa kaikki käyttäjän määrittelemät asetukset.

Vipuja ja maagisia komentoja

Linuxissa löytyy paljon vipuja, jotka vaikuttavat virransäästöön. Koska laptop-mode on kiva kokonaisuus, kannattaa sitä käyttää ensisijaisesti. Laptop-modella voi tarkoittaa kahta asiaa. Ensimmäinen on ytimen ajonaikainen asetus, joka kasaa levynkäyttötapahtumia, ja suorittaa ne sitten kaikki kerralla, jotta levyn ei tarvitsisi pyöriä koko ajan. Toinen merkitys on ohjelma, jolla voi asettaa tämän vivun päälle ja hallita siihen liittyviä ja muitakin asetuksia. Useimmille asetuksille voi määritellä eri arvoja riippuen ollaanko verkkovirrassa vai ei. Alla on selitetty muutamia levyihin liittyviä asetuksia, jotka eivät tule muualla esille. Kannattaa tutustua rauhassa tiedostoon /etc/laptop-mode/laptop-mode.conf.

Readahead eli ennakkoluku(?) määrittelee paljonko käytetyistä tiedostoista luetaan muistiin. Suurempi arvo voi auttaa esimerkiksi musiikin kuuntelussa tai elokuvien katselussa. Kannattaa asettaa koneen sisältämän muistimäärä mielessä.

Noatime eli tiedostojen käyttöaikojen kirjaamatta jättäminen on kätevä asetus, joka vähentää levylle kirjoittamista. Suurin osa ohjelmista toimii ilman tätä asetusta, joten sen voikin laittaa esimerkiksi suoraan fstabiin.

Levyn virransäästöasetuksia voi valita kuinka aggressiivisesti levy sammuu, kun sitä ei käytetä. Liian pieni arvo aiheuttaa jatkuvaa päälle-pois-rumbaa, joka kuluttaa levyä turhaan.

Muita satunaisia vipuja alla.

Atin tai AMD:n näytönohjain

Fglrx-binääriajuria käytettäessä (sallitut arvot näkyy --helpillä):
aticonfig –set-powerstate=1 –effective=now

Avoimilla ajureilla X:n asetuksissa Option "DynamicClocks" "true" saattaa auttaa.

TP:illä seuraavilla komennoilla voi olla tai voi olla olematta vaikutusta

echo crt_disable > /proc/acpi/ibm/video
echo dvi_disable > /proc/acpi/ibm/video

Langaton verkkokortti

Ainakin IPW2200 ja ilmeisesti myös osalla muistakin korteista voi hallita virransäästö.
Arvo 5 säästää virtaa vielä enemmän kuin 7. (missä selitetty?)
iwpriv eth1 set_power 7

Keskeytysten eliminoiminen

Oikeasti suuret virransäästöt tulevat, kun suoritin ei tee mitään ja menee syvään unitilaan. Tämä kysymys tuli olennaisesti oikeastaan vasta 2.6.21:n myötä, kun ytimeen lisättiin ominaisuus, jonka valitsemalla voi poistaa säännölliset keskeytykset, joita ei tarvita. Ominaisuus löytyy tällä hetkellä x86:lle, mutta se tekee tuloaan myös x86_64-arkkitehtuurille. Erilaiset keskeytykset herättävät suoritinta yleensä turhankin tiheään. Powertop [http://linuxpowertop.org] on ohjelma, jolla näitä ohjelmia voi paikallista. Lisäksi sivuilla koottu listaa tuhmista ohjelmista ja mitä niille voisi tehdä. Todennäköisesti ydin pitää kääntää uudestaan sopivilla vivuilla, että Powertop osaisi mitään näyttää. Ohjelma osaa lisäksi näyttää muitakin vinkkejä, kuten esimerkiksi AC97-äänikortin laittamisen virransäästötilaan.

Atin – köh – AMD:n kortten ajurit aiheuttavat keskeytyksiä näytön virkistystaajuuden mukaan. Vielä ei ole julkaistu ajureita, joissa turha keskeytys olisi poissa, kun sitä ei tarvita, mutta ainakin semmoinen on tulossa avoimiin ajureihin joskus.

TP-kannettavien tuulettimien hallinta

Monien, mutta ei kaikkien, TP-kannettavien tuuletinta voi hallita ohjelmallisesti, joka onkin tervetullutta, koska normaalisti tuuletin käyttäytyy lähinnä aivokuolleesti. Hallintaan tarvitaan moduuli, joka on ytimen versiossa ≤2.6.21 nimeltä acpi_ibm ja uudemmissa thinkpad_acpi. Niin ikään ytimen versiossa ≤2.6.21 se tarvii ladata parametrilla experimental=1 ja uudemmissa fan_control=1 experimental=1.
Itse käytän tp-fancontrol-komentosarjaa [http://www.thinkwiki.org/wiki/Talk:Code/tp-fancontrol] tuulettimen hallintaan. Suoritin käy keskimäärin hitaammin, eli on hiljaisempi.

Undervolting eli jännitteen alentaminen

Pentium M -suorittimien jännitettä voi alentaa ohjelmallisesti. Se onnistuu myös 2.6.21-ytimellä ja phc-lisukkeella, mutta alla on käytetty uudempaa vanilla 2.6.22_rc6-ydintä, johon on laitettu käsin Gentoo-paikat [http://dev.gentoo.org/~dsd/genpatches/trunk/], phc [https://www.dedigentoo.org/bdz/linux-phc/linux-phc-0.3.0-pre1.tar.gz] ja hrt [http://tglx.de/projects/hrtimers/].
Kirjoitushetkellä 2.6.22_rc7 on jo julkaistu, mutta kaikkia paikkatiedostoja ei vielä ole saatavilla sille.

Seuraavaksi siirrymme jo tuttuun paikkaan:

/sys/devices/system/cpu/cpu*/cpufreq

Olennaisia tiedostoja ovat phc_vids ja phc_default_vids. Volttimäärä lasketaan kaavalla X = 700 mV + Vid*16 mV. Nyt olennaisinta onkin keksiä millä arvoilla kone toimii vielä vakaana. Itse käytin voltage-ramp-down.sh-komentosarjaa [http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU#Finding_the_lowest_voltages_before_the_CPU_freeze], joka tosin on vain 2.6.21-ytimelle. Pienillä muutoksilla se varmaan toimii uudenkin kanssa. Ajoin cpuburnia taustalla, ja 30 s kellotaajuutta kohden, kunnes löytyi ensimmäinen epävakaa arvo. Sitten otin toiseksi viimeisen ”rivin”, jolla kaikki kellotaajuudet olivat olleet vakaita. Tietysti jokainen kellotaajuus kannattaa testata erikseen, jos haluaa oikein alas.

Viimeiset irti

Edellisessä kohdassa mainittu hrt tuo myös uuden vaihtoehtoisen ns. ladderin eli ohjelman, joka laittaa suorittimen eriasteisiin virransäästötiloihin. Uuden menu-ladderin pitäisi korjata tilanne, jossa suoritin ei käytä virransäästötiloja tehokkaasti, kun keskeytyksiä on hyvin vähän.

-- .