Ero sivun ”Swap” versioiden välillä
Pb (keskustelu | muokkaukset) (swap-alueiden prioriteetti, käytössä olevien alueiden näyttäminen) |
p (→Käyttöönotto käsin: wikilinkki kivemmin) |
||
Rivi 15: | Rivi 15: | ||
===Käyttöönotto käsin=== | ===Käyttöönotto käsin=== | ||
Swap-osio tai -tiedosto voidaan luoda myös käsin. Swap-osio tehdään luomalla ensin vapaavalintaisella [[osiointityökalut|osiointiohjelmalla]] sopiva osio. Monet osiointiohjelmat tarjoavat erillistä toimintoa swap-osion luomiseen, jolloin osiolle luodaan valmiiksi oikea tiedostojärjestelmä. Jos tällaista vaihtoehtoa ei ole tarjolla, voidaan luoda tyhjä (alustamaton) osio ja tehdä sille jälkikäteen swap-tiedostojärjestelmä komennolla <tt>[[mkswap]] | Swap-osio tai -tiedosto voidaan luoda myös käsin. Swap-osio tehdään luomalla ensin vapaavalintaisella [[osiointityökalut|osiointiohjelmalla]] sopiva osio. Monet osiointiohjelmat tarjoavat erillistä toimintoa swap-osion luomiseen, jolloin osiolle luodaan valmiiksi oikea tiedostojärjestelmä. Jos tällaista vaihtoehtoa ei ole tarjolla, voidaan luoda tyhjä (alustamaton) osio ja tehdä sille jälkikäteen swap-tiedostojärjestelmä komennolla <tt>[[mkswap]] [[laitetiedosto|levyosion_laitetiedosto]]</tt>, esimerkiksi | ||
mkswap /dev/sda4 | mkswap /dev/sda4 | ||
Tämän jälkeen tulee lisätä [[fstab]]iin sopiva rivi swap-osion käyttöönottamiseksi järjestelmän käynnistyessä. Ylläolevassa tapauksessa oikea rivi olisi | Tämän jälkeen tulee lisätä [[fstab]]iin sopiva rivi swap-osion käyttöönottamiseksi järjestelmän käynnistyessä. Ylläolevassa tapauksessa oikea rivi olisi |
Versio 15. marraskuuta 2007 kello 18.43
Swap eli heittovaihto (joka tosin nykyisin on lähes aina sivutusta) tarkoittaa keskusmuistissa olevan datan siirtämistä muistitilan loppuessa massamuistilla (yleensä kiintolevyllä) sijaitsevalle swap-alueelle.
Sivutukselle ja heittovaihdolle "vastakkainen" toimenpide on massamuistilla sijaitsevien, usein tarvittavien tiedostojen kopioiminen keskusmuistiin niiden lukemisen nopeuttamiseksi. Tällä on osaltaan suuri merkitys järjestelmän suorituskyvylle.
Linuxissa swap-alue sijoitetaan yleensä erilliselle kiintolevyosiolle, jolla on oma, swap-käyttöön optimoitu tiedostojärjestelmänsä. Tavalliselle osiolle sijoitettuun swap-tiedostoon verrattuna tällä saavutetaan tietty nopeusetu (joka tosin on nykyisin melko marginaalinen).
Komennolla
cat /proc/swaps
näkee kaikki järjestelmässä käytössä olevat swap-alueet tietoineen.
Swapin käyttöönotto
Useimpien jakeluiden asennusohjelmat luovat swap-osion joko täysin automaattisesti tai ainakin mahdollistavat sellaisen luomisen muutamalla näppäimenpainalluksella. Tällöin myös lisätään fstab-asetustiedostoon rivi, joka liittää ja ottaa käyttöön swap-osion aina järjestelmän käynnistyessä.
Jos samalla koneella on useampi Linux-järjestelmä, voivat ne käyttää samaa swap-osiota. Myöhemmin asennetun järjestelmän asennusohjelman pitäisi automaattisesti tunnistaa ja ottaa käyttöön koneelta jo löytyvä swap-osio. Mikäli näin ei tapahdu, voidaan käyttöönottoon tarvittava rivi lisätä manuaalisesti fstabiin. Myös toisen järjestelmän osiolta löytyvää swap-tiedostoa voi käyttää useamman järjestelmän kesken. Tämä edellyttää kuitenkin käytännössä aina manuaalista käyttöönottoa.
Käyttöönotto käsin
Swap-osio tai -tiedosto voidaan luoda myös käsin. Swap-osio tehdään luomalla ensin vapaavalintaisella osiointiohjelmalla sopiva osio. Monet osiointiohjelmat tarjoavat erillistä toimintoa swap-osion luomiseen, jolloin osiolle luodaan valmiiksi oikea tiedostojärjestelmä. Jos tällaista vaihtoehtoa ei ole tarjolla, voidaan luoda tyhjä (alustamaton) osio ja tehdä sille jälkikäteen swap-tiedostojärjestelmä komennolla mkswap levyosion_laitetiedosto, esimerkiksi
mkswap /dev/sda4
Tämän jälkeen tulee lisätä fstabiin sopiva rivi swap-osion käyttöönottamiseksi järjestelmän käynnistyessä. Ylläolevassa tapauksessa oikea rivi olisi
/dev/sda4 swap swap defaults 0 0
Swap-osio voidaan ottaa käyttöön myös manuaalisesti komennolla swapon sekä poistaa käytöstä komennolla swapoff.
Swap-tiedoston käyttöönottoa on neuvottu erillisessä artikkelissa Swap-tiedoston luominen.
Swapin koko
Swap-osion tai -tiedoston oikeasta koosta on lähes yhtä monta mielipidettä kuin on Linux-käyttäjiä. Eräiden mielestä swap-tilaa pitäisi olla 2x keskusmuistin verran, toisten mielestä 1,5x ja jotkut taas kannattavat keskusmuisti + 10% -sääntöä. Kolmansien mielestä keskusmuistia + swap-tilaa pitäisi olla aina vähintään 1 Gt.
Tosiasia kuitenkin on, että swapin tarve vähenee keskusmuistitilan kasvaessa. Esimerkiksi 256 Mt -keskusmuistilla varustetulle koneelle kolminkertainenkaan swapin määrä ei varmasti ole liioittelua. 1 Gt -keskusmuistilla sen sijaan saattaa hyvin riittää 256 Mt, eikä 2 Gt muistilla varustetulla koneella välttämättä tarvita swapia lainkaan.
Kaikki riippuu tosin koneen käyttötarkoituksesta. Surffailuun ja kevyeen tekstinkäsittelyyn saattaa hyvin riittää 256 Mt keskusmuistia + 300 Mt swap-tilaa, kun taas raskaaseen kuvan- ja videonkäsittelyyn käytettävällä koneella 2 Gt + 2 Gt:kään ei välttämättä ole liikaa.
Yleisesti ottaen swap-tilaa kannattaa mieluummin varata hiukan liikaa kuin liian vähän. Jos sekä keskusmuisti että swap-tila pääsevät loppumaan, saattaa kone nimittäin seota pahemman kerran.
Vapaan keskusmuistin ja swap-tilan määrän megatavuina näkee komennolla
free -m
Komennon tulosteessa on eroteltu ohjelmien käytössä oleva sekä kiintolevyvälimuistina käytettävä keskusmuistitila. Kaavio keskusmuistin kulutuksesta löytyy myös KDE:n ja GNOMEn järjestelmänvalvontatyökaluista.
Swapin käytön optimoiminen
Koska keskusmuistia käytetään sekä ajettavien ohjelmien varastoimiseen että usein tarvittavien tiedostojen välimuistina (kiintolevyvälimuisti), joutuu ydin tekemään jatkuvaa painottelua näiden kahden käyttötarkoituksen välillä. Käytännössä on päätettävä, milloin harvoin käytetty ohjelmakoodi kannattaa siirtää swapiin antaamaan tilaa usein kiintolevyltä haetulle tiedostolle. Normaalitapauksessa keskusmuistissa ei juuri ole tyhjää tilaa, vaan käytännössä kaikki on joko ohjelmien dataa tai kiintolevyvälimuistia.
Herkkyyttä ajettavien ohjelmien swapiin siirtämiseen säädellään tiedoston /proc/sys/vm/swappiness avulla. Asetus voi olla välillä 0-100. 0 tarkoittaa, että ohjelmien dataa ei koskaan siirretä kiintolevyvälimuistin tieltä swapiin (swap otetaan käyttöön vain silloin, kun keskusmuisti täyttyy ohjelmadatasta). 100 taas tarkoittaa, että todennäköisyys ohjelmadatan syrjäyttämiselle kiintolevyvälimuistin tieltä on hyvin suuri.
Oletusasetuksena toimii useimmissa jakeluissa 60, mikä on hyvä palvelinkäytössä, mutta työpöytäkäyttöön yleensä turhan korkea. Työpöytäkäytössä hyvä arvo on tyypillisesti välillä 20-30. Jotkut käyttävät jopa arvoa 10 tai 0. Paras arvo riippuu käytettävien ohjelmien tyypistä ja siihen pääsee käytännössä vain itse kokeilemalla.
Nykyisen swappiness-arvon näkee komennolla
cat /proc/sys/vm/swappiness
Arvon säätäminen esimerkiksi 20:een onnistuisi komennolla
echo 20 > /proc/sys/vm/swappiness
Tämä edellyttää luonnollisesti pääkäyttäjän oikeuksia.
Pysyvä asetus voidaan määritellä lisäämällä /etc/sysctl.conf-asetustiedostoon rivi
vm.swappiness = 20
Sysctl.confiin määritellyt asetukset tulevat oletuksena käyttöön seuraavan uudelleenkäynnistyksen jälkeen. Asetusten käyttöönotto suoraan onnistuu komennolla
sysctl -p
Swap-alueiden priotiteetti
Jos käytössä on lukuisia swap-alueita, voi niille asettaa keskinäisen prioriteetin riippuen esimerkiksi käytettävän massamuistin nopeudesta. Prioriteetti voi olla joko korkea tai matala. Oletusprioriteetti on aina matala (-1). Jos prioriteetti määritellään erikseen (kokonaisluku väliltä 0-32767) tulee siitä automaattisesti korkea. Korkea prioriteetti voidaan asettaa swapon-komennon valitsimella -p, esimerkiksi
swapon -p 2048 /swapfile
Pysyvä asetus määritellään fstabin neljännessä sarakkeessa paramerillä pri, esimerkiksi
/dev/sda4 swap swap defaults,pri=20485 0 0