Memoria fizică instală pe un calculator este o resursă limitată. Un număr limitat de procese încap în această memorie la un moment dat, cu toate că este posibil să existe și alte procese care trebuie să ruleze. Prin swaping se pot transfera procese sau bucăți din procese din memoria fizică pe un dispozitiv de stocare, cel mai frecvent hard-disc-ul, eliberând astfel memoria fizică. Atunci când se eliberează destulă memorie fizică, procesele sunt transferate de pe dispozitivul de stocare înapoi în memoria fizică.
Atunci când folosim freeBSD (și nu numai), putem defini în momentul instalării sistemului de operare o partiție pentru swap. Este recomandat ca dimensiunea acestei partiții să fie de două ori capacitatea memoriei fizice. De exemplu, dacă avem 2GB memorie RAM, vom face această partiție de 4GB. Bineînțeles că se poate alege orice altă valoare, în funcție rolul pe care îl va avea mașina respectivă, spațiul de stocare, etc.
In producție se întâmplă ca procesele care rulează sa ocupe toată memoria fizică și să înceapă să consume și din partiția de swap. Dacă însă se ajunge să se folosească și tot spațiul de pe această partiție, atunci avem o problemă.
În această situație soluția ideală este să adăugăm memorie RAM pe sistem. Cum acest lucru nu se poate face întotdeauna în cel mai scurt timp, trebuie găsită o soluție pentru a menține sistemul funcțional și cu toate serviciile necesare pornite.
Câteva dintre soluții ar fi: adăugarea unui nou disc pe care să definim partiție/volum pentru swap (dezavantaje: durează, necesită acces fizic la mașină, implică costuri), repartiționarea hard-disc-ului existent pentru a mări partiția de swap (periculos, putem pierde date) sau crearea unui fișier de swap pe una dintre partițiile de sistem existente.
Ultima soluție este cea mai indicată, fiind rapid de implementat șî nu prezintă riscuri. Dezavantajul ar fi timpul mai mare de citire/scriere față de o partiție dedicată de swap și evident fața de memoria fizică.
Cum implementăm acest lucru în freeBSD? Folosind doar câteva comenzi. Dar înainte de acestea avem nevoie să fie compilat în kernel driverul pentru disc de memorie (care există implicit în kernelul GENERIC):
device md # Memory "disks"
Vom creea apoi fișier de swap /usr/swap0, cu o dimensiune, să spunem de 1GB, folosind comanda:
dd if=/dev/zero of=/usr/swap0 bs=1024k count=1024
Este necesar să setăm permisiunile adecvate pentru acest fișier:
chmod 0600 /usr/swap0
Aceste fișier de swap poate fi folosit imediat după ce dăm comanda:
mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0
Dacă avem nevoie să îl folosim și după restartul sistemului trebuie să adăugăm în fișierul /etc/rc.conf:
swapfile="/usr/swap0"
La nevoie, putem să mai facem încă un fișier /usr/swap1 (de 512kB) pe care să îl folosim imediat ca fișier de swap:
dd if=/dev/zero of=/usr/swap1 bs=1024k count=512
chmod 0600 /usr/swap1
mdconfig -a -t vnode -f /usr/swap1 -u 1 && swapon /dev/md1
Putem vizualiza informațiile despre swap folosind comanda swapinfo. Mai jos este output-ul acestei comenzi rulată cu parametrul -h după ce am creat un fișier swap de 32M:
Articole asemanatoare:
- Au apărut
- Nokia E51 – Înlăturare branduire Orange
- ZTE ZXR 10 2609
- Activare cititor NFC/RFID pe laptop DELL (E7440)
- Exemplu: cum se încalcă Constituția
- Primii pasi in lumea FreeBSD-ului
- Certificat digital calificat de la DIGISIGN – semnătură electronică email
- Atenționare automată prin apel vocal
- Mi-am luat SSD
- Sun VirtualBox – Probleme spațiu HDD mașină virtuală