Swappiness maybe?

Kuten varmaan moni tietää minun pöytäkoneen käyttöjäjestelmä on Ubuntu (versio 23.10 tällä hetkellä.) Se on alkanut jumittamaan ajoittain. Samalla yleensä Tulikettu aka Firefox kaatuu ja näin ollen oletin ongelman olevan siinä, mutta ehkäpä se ei suoraan olekaan, vaikkakin osittain se onkin taustalla syynä.

En tiedä mikä jumituksen tarkalleen laukaisee, mutta pienen btop/top komennolla tehtyjen tutkimusten perusteella ongelma prosessi onkin kswapd0 eikä Firefox itsessään. Prosessiin nimi antaa hyvän vinkin mistä on kyse.

Asia ei kuitenkaan ole ihan niin yksinkertainen, että kone alkaa ”swappaamaan”. Minulla nimittäin on 16Gt muistia koneessa ja asennusvaiheessa oletin etten tarvitse swap tilaa lainkaan. Firefoxin ja Chromen ”käyttämätön muisti on hukattua muistia” asenteen takia asia ei ole ehkä ihan näin.

Isolla pensselillä kuvattuna ongelma on siis näin.

  • Koneesta alkaa loppua muisti
  • Kswapd0 komentaa Firefoxia tai Chromea vähentämään muistin käyttöä.
  • Tulikettu/Chrome tekee työtä käskettyä ja poistaa jotain muistista kovalevylle
  • Kswapd0 on tyytyväinen
  • Tulikettu/Chrome lataa saman asian takaisin muistiin kovalevyltä
  • Sitten lähdetään taas alusta ja kas koko kone on jumissa kunnes looppi lopulta päättyy joko jonkun prosessin vähentyneeseen muistin käyttöön tai jonkun prosessin kaatumiseen.

Näin siis ymmärrän tilanteen keskustelupalstoja luettuani.

Ensimmäinen yritys korjata tilanne oli asettaa swappiness arvo pienemmäksi. Swappiness on siis se arvo, jonka perusteella päätetään missä vaiheessa swappia aletaan käyttää. Mitä pienempi arvo sen vähemmän swap käyttöä. Nolla tarkoittaa, että swap otetaan käyttöön vasta, kun RAM muisti on käytetty kokonaan. Ubuntun oletusarvo on 60.

cat /proc/sys/vm/swappiness
sudo nano /etc/sysctl.conf

Lisää/editoi rivi
vm.swappiness=0

En kuitenkaan usko tämän auttavan, koska kswapd0 käyttää muutakin kuin pelkkää swap tilaa ja ongelma ei suoraan ole muistin puute vaan sen käyttö.

En jaksa alkaa tässä vaiheessa asentelemaan uutta levyä tai muokkaamaan levyosioita, mutta onneksi Ubuntulla on myös vaihtoehto käyttää ns. swapfileä. Samoin kuin onneksi minulla on NVmea levyllä osio, missä on riittävästi tyhjää tilaa swapfileä varten. En tiedä onko tämäkään fiksu ratkaisu, koska edelleen, varsinainen ongelma ei ole muistin vähyys.

DigitalOcean on yksi parhaista paikoista etsiä ratkaisua miten tehdä asioita linux ylläpidossa, niin tässäkin tapauksessa. Linkistä kannattaa käydä lukemassa tarkemmin asiat, mutta kirjoitan tähän mitä minä tein. Ensin komennot ja sitten selitykset.

sudo fallocate -l 16G /mnt/swapfile
ls -lh /mnt/swapfile
sudo chmod 600 /mnt/swapfile
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile
sudo swapon --show
echo '/mnt/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
cat /etc/fstab
  • Tehdään swap tiedosto fallocate käskyllä
  • Tarkistetaan, että tiedosto muodostui
  • Muutetaan käyttöoikeudet vain rootille
  • Muutetaan tiedosto swap tiedostoksi mkswap käskyllä
  • Otetaan swapfile käyttöön swapon käskyllä
  • Tarkistetaan
  • Lisätään /etc/fstab tiedostoon rivi, jotta swapfile on käytössä myös rebootin jälkeen.
  • Tarkistetaan /etc/fstab tiedosto

Testi mielessä asetin swappinessin arvoon 200 ja aukaisin sekä Firefoxiin, että chromeen kymmeniä välilehtiä youtube videoita. Lopputulos, yhteenlaskettu muistin ja swapin käyttö ei muuttunut, mutta hiljalleen swapin käyttö kasvoi ja mikä tärkeintä, kone ei juminut.

Aika näyttää miten tämä kone toimii swapin kanssa, mutta tämä pienen hetken käyttö näyttää kyllä olevan ihan ok. Pienesti silti tuntuu pölejältä, jos linux vaatii swapin koneessa, jossa on 16Gt muistia. Sinällään koneen swappaaminen ei ihan täysi katastrofi ole NVmea asemalla, koska vaikka se edelleen on selkeästi RAMia hitaampi vaihtoehro, on NVmea levy kuitenkin seuraavaksi nopein vaihtoehto, ainakin minun koneessa. Jätän oletusarvot käyttöön, koska ne vaikuttavat kuitenkin olevan suhteellisen ok. Muutan niitä sitten, jos näyttää, että tarvetta on.

DigitalOceanin artikkelissa on muitakin arvoja joita voi kokeilla muuttaa, mutta minä en niihin koskenut tällä kertaa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *