tiistai 24. kesäkuuta 2014

Linux less swappiness is happiness

Löytyi uusi parametri, jota en ole ennen tarvinnut Linukka asennuksissa.
Käytän vanhempaa konetta työasemana. Koneessa on muistia vain 2GB (tätä toki pitää lisätä kun ehtii), joten nykyisellä käytöllä (ja selaimen tabien määrällä) se ei vaan pakkaa riittämään. Kone ruksuttaa välillä aika paljon, kun kernel tapaa swäppäämään.

Linuxeissa on aina ollut "ominaisuutena", että jos jätät desktop koneen pidemmäksi aikaa päälle, etkä käytä sitä, niin se on dumpannut muistisivut levylle ja koneelle palatessa ruksutus kuulostaa lähinnä sotatilalta. Nykypäivän koneitten muistimäärillä tämä ei onneksi enään pahemmin realisoidu.

Swap muutos

Ensi töikseni päätin siirtää korkeimman prioriteetin swapin usb-tikulle.
Se on tietysti oma kysymyksensä, että miten kyseinen USB-tikku tämän händlää. Tässä testissä nähdään sen kestävyydestä että onko sama kuin vanhassa ladassa - se voi kestää miljoona kilometriä, tai sit se lahoo heti. Myös suosittujen Solid State -asemien (SSD) kanssa on puhuttu siitä, että miten ne kestävät "massive read/write" töitä. Itsellä ei vielä ole tarpeeksi kokemuksia, joten nähtäväksi jää.

1. Tee USB-tikulle erillinen swap partitio tai käytä koko tikun partitio tähän esim: "mkswap /dev/sdd1" (kannattaa double-checkata partition nimi, muuten voi tulla tippa linssiin ;)

2. swapoff kaikille nykyisille swapeille (kone ei ollut swapannyt kuin 149 MB)

3. Filesystem tableen muutokset:

UUID=d14d1473-f1ab-46da-bce3-661fde00f927       none            swap            defaults,pri=100,discard        0 0     # /dev/sdd1, when /dev/sdc is USBHDD
/dev/sda2               none            swap            defaults,pri=10 0 0
/dev/sdb2               none            swap            defaults,pri=30 0 0


Note! Saat UUID:n esille komennolla "blkid".
Note! Pri optiolla saat asetettua swapin prioriteetin (korkeampi luku = korkeampi priority).

4. Swapit takaisin päälle: "swapon -a".

Swappiness asetus


Sitten varsinaiseen aiheeseen. Elikkä kernelin swäppäyksen määrää voi asettaa system controllilla, käyttäen muuttujaa vm.swappiness. Oletusarvona on 60. Asettaminen komennolla:

sysctl vm.swappiness=20

Voit tarkistaa arvon komennolla:

cat /proc/sys/vm/swappiness

Laitoin kyseiselle koneelle asetuksesi 10 ja tarkistin arvon sekä nykyisen swapin käytön ("cat /proc/swaps") (0 edelleen kaikissa swapeissa).
Sen jälkeen käynnistin chromen.
Heti alko niin saakelinmoinen ruksutus, mutta USB-tikulle menevän swapin käyttö on silti vain 64 MB. Chromen kanssa kyseessä ei ilmeisesti ole pelkästään swappi, vaan kait se käsittelee cacheaan levyiltä. Mutta riitti siihen, että koneen hiiri rupeaa hetkeksi takkuilemaan.
Uudet levyt vois tietysti olla kova sana... Laittais OSsin SSD levyille, niin muuttuis kuvio, mutta toisaalta, sit aletaan jo olemaan niillä linjoilla että tilalle kannattais miettiä kokonaan uutta konetta, joten eiköhän mennä tällä ruksuttimella vielä ja yritetä löytää lisää twiikattavaa.
Lopputulemassa Chromen käynnistys kuitenkin sai swapille 300 MB käyttöä, vaikka auki on vain 13 tabia ja niin, siis se swappiness on kuitenkin siis asetettu hyvin alas, arvolle 10. Täytynee katsoa miten responsiivinen järjestelmä on, kun on seuraavan kerran pois koneelta. Joka tapauksessa aattelin nyt käynnistellä koneelle sellaisia ohjelmia, joita olin aiemmin sammutellut jotta kone pysyisi hengissä. Yritän muistaa raportoida sitten tähän, oliko tuolla swappiness asetuksella ja swapin laittamisella USB-tikulle oikeasti vaikutusta.


Happy Tuxing!
Sami