Saal
Sisukord
Sissejuhatus
Nagu paljud UNIXilised võimaldab ka Linux kasutada füüsilise sisemälu (RAM) "pikenduseks" kõvaketast. Kõvaketta piirkonda mida operatsioonisüsteem käsitleb efektiivselt mäluna nimetatakse saaliks. Sisemälu ja saal moodustavad kokku arvuti efektiivse mälu. Töötavad programmid hoolivad arvuti efektiivsest mälust, vaatamata sellele, et saal toimib umbes tuhat korda rahulikamalt sisemälust.
Algse reeglina määrati saali suuruseks topelt sisemälu maht, näiteks omades sisemälu 64 MB tuleks tekitada 128 MB suurune saal. Saali suurus võiks olla arvu neli kordne.
Saal võib asuda failisüsteemi failis või eraldi partitsioonil. Kui süsteemis on mitu füüsilist kõvaketast, siis on mõtekas tekitada mitu saali erinevatele ketastele, eelistatult partitsioonina.
Linux võimaldab kuni 8 saali korraga kasutamist.
Saali ehk swapi aktuaalsus tänapäeval
kuna svap tehakse ikkagi piiratud suurusega partitsioonile, siis on ka selle partitsiooni suurus lõpuks piiratud ja sellega lõplik ka summaarne virtuaalmälu kogus, mida füüsilise mälu ja svapi koosluses saab kasutusele võtta. Ja kui see otsa lõpeb, siis on ikkagi jama majas. Kui korrektne olla, siis tänasel päeval server ei krässi, vaid hakkab mälupuudused omi protsesse tapma. Ja normaalolukorras sellise olukorrani ei jõutagi. Ja KUI jõutakse, siis see tähendab, et kusagil mälu lekib ning siis see juhtub senikaua, kuni KOGU mälu on otsas, sõltumata sellest, kui palju ma seda svappi tegin. Küsimus on lihtsalt selles, kas see juhtub varem või natukene hiljem.
Serveri puhul on swapil seetõttu jumet, et enamik asju mis mällu laetakse lihtsalt munevad seal ja võiks parema kettapuhverdamise huvides välja visata. Nimelt kasutab Linux alati kogu vaba mälu kettapuhvrina ja vaikimisi on swappimine just suurt munevate protsesside arvu arvestades väga agressiivseks seatud.
Igaks juhuks võid ilma swapita jooksutades sysctl-i abil vm.swappiness=0 peale sättida.
Ja tegelikult on mälupuuduses vaevlev JA meeletult svappiv süsteem oluliselt unresponcive, kui lihtsalt mälupuuduses süsteem. Näiteks olukorras, kus on vaja SSH-ga ligi minna ja uurida, milles värk on.
...
Jõude seisvaid mälu-lehekülgi svapitakse välja, et teha ruumi kettapuhvritele või muule, mis parasjagu mälu rohkem vajavad. Väidetakse ka, et tegemist Linuxi mäluhalduse eripäraga ja kui svappi ei tee, siis tabavad tõsised performance-probleemid (iga Linuxi install ütleb ju seda!). Ja et kui mälu juhtub ikkagi otsa saama, siis server krässib.
Päris nii see tegelikult pole. Põhjus miks see soovitus ikka veel "elus" on on hiberneerimine. Nimelt ei kirjuta Linux mälutõmmist mitte eraldi faili vaid hiberneerimiskäsu saades swapib kõigepealt kõik asjad välja ja siis salvestab protsessori registrid ja muud viimased nipet-näpet sinna otsa eraldi kohta. On selge, et kui swappi on liiga vähe, siis hiberneerimine ei õnnestu.
Serverid on tavaliselt aga optimeeritud ja tuunitud ja hoolika adminni poolt kontrollitud, et seal töötavad ainult need protsessid mis vaja (ja need ise on ka tuunitud, et nad ei teeks midagi liigset).
Seetõttu serverites tavapärast swappimist kettapuhvrite nimel palju ei toimu.
Lisaks, tuginedes aastatetagusele kogemusele suure veebiserveriga-ga, see olukord, kus RAM saab täis aktiivses kasutuses olevat mälu ja seda hakatakse juba otsast swappi kirjutama ja järgmisel hektel sealt siis lugema - selle puhul on asi juba lootusetu ja tegelikult, ma usun, taastuks süsteem kiiremini, kui tal üldse swappi poleks. Pika koomlemise asemel tapaks lihtsalt läbustaja ära ja asi mutt.
Desktopi osas aga vastaks nii, et RAM on küll odav, kuid HDD on ikkagi odavam. Ja 8 GM RAM raha eest saab 60 GB SSD-d või 1 TB HDD-d.
Desktoppides on oluliselt rohkem rakendusi, mis tarbivad palju mälu, kuid mis ei kasuta seda pidevalt. Seega on seal palju mälulehti, mida tasub kettapuhvride suurendamise nimel välja saalida.
Üle 2GB ei tee enam kuhugi. Kui sul on 24-48 GB mäluga server, siis ka RAM=swap lahendusega läheb mälulekkega swapima hakates masin nii kooma et sellega pole midagi võimalik teha. 2GB on kõhutunde järgi enam-vähem paras turvapadi.
Swappivas Desktopis ei ole võimalik töötada (minuarust isegi mitte SSDga). See on ilmselt nagu kasutaks Windows Vistat masinas, mis täidab Windows NT miinimumnõuded.
Seega, kui sa just ei testi mälulekitamise rakendusi, ütleksin et swap desktopis on mõttetu.
Pidevalt muidugi mitte, aga kui korraks mingi suur asi lahti läheb, siis ei tapa oomkiller kohe maha ja saab selle teatava venivusega üle elada. Ehk siis pisike swap minu arust võiks olla ja seda eelkõige just desktopis. Serverites võib julgemalt ära jätta, seal kipub mälu otsasaamine olema juba märk kroonilisest lekkest ja siis on hea kui jama maha lüüakse swapimise asemel.
Partitsiooni kasutamine saalina
Saali tekitamisel markeeritakse vastav partitsioon kusjuures hävivad seal olnud andmed. Partitsioonile soovitakse omistada vastav tüüp - 82. Tehke seda näiteks programmi Fdisk abil.
Näiteks otsustades markeerida partitsioon /dev/hda6 saalina anke korraldus
bash# mkswap /dev/hda6
Faili kasutamine saalina
Kasutamaks saalina 64MB faili tekitage esmal fail, näiteks selliselt
bash# dd if=/dev/zero of=/saal1 bs=1024 count=65536
ning seejärel markeerige
bash# mkswap /saal1 Setting up swapspace version 0, size = 67104768 bytes
Saale tuleb vaid üks kord markeerida, mitte enne iga kasutuselevõttu.
Saali kasutuselevõtt
Saali kasutuselevõtmisega näidatakse operatsioonisüsteemile, et ta võib vastavat seadet või faili saalina tarvitama hakata ning nii suureneb arvuti efektiivse mälu hulk.
Näiteks võtame kasutusele loodud saali faili /saal1
bash# swapon /saal1
Soovides uurida kas arvuti efektiivse mälu hulk muutus kasutage käsku top ja free.
Saali kõrvaldamiseks kasutage käsku swapoff, näiteks
bash# swapoff /saal1
Kui saal asub partitsioonil on otstarbekas ta kasutusele võtta juba süsteemi käivitumise ajal. Selleks lisage /etc/fstab faili vastav rida, näiteks
/dev/hda6 swap swap defaults 0 0
Kui saal asub failis, siis lisage vastav käsk süsteemi sobivasse käivitusskripti, näiteks /etc/rc.d/rc.local.