Smanjivanje upotrebe swap-a u Linuxu

Swap je proces kojim se deo RAM memorije kopira u konfigurisani prostor na hard disku, da bi se oslobodio deo RAM memorije. Taj konfigurisani prostor se zove swap prostor. Swap prostor u Linuxu moze biti zasebna swap particija ili swap fajl. Zbir RAM memorije i swap prostora je kolicina virtuelne memorije.

Swap je neophodan iz dva vazna razloga.
Prvo, kada sistem zahteva vise memorije nego sto je dostupna kolicina RAM memorije, tada kernel oslobodi potrebnu RAM memoriju aktivnim programima ili procesima tako sto kopira sadrzaj RAM memorije koji trenutno nije potreban na swap prostor.
Drugo, izvesna kolicina memorije koju koriste programi tokom njihovog pokretanja može da se koristi samo za iniciranje i onda se vise nikada ponovo ne koristi.
Na taj nacin sistem oslobodi memoriju za druge programe, ili cak i za kes diska.

Medjutim, swap ima mana. U poredjenju sa RAM memorijom, diskovi su mnogo sporiji. Sto vise disk “swapuje” to ce sistem biti sporiji.

Swappiness je parametar Linux kernela koji kontrolise upotrebu swap-a. Swappiness se moze podesiti na vrednosti izmedju 0 i 100. Standardna vrednost je 60. Sto je vrednost swappiness-a visa, to ce kernel agresivnije koristiti swapp i obrnuto, sto je vrednost niza, kernel ce manje koristiti swapp.

Vrednost swappiness-a 60 je korisna za servere. Ali za desktop sisteme je ta vrednost prevelika i moze doci do nepotrebnog usporavanja sistema usled suvise agresivnog “swapovanja”. Na desktop sistemima se preporucuje da swappiness bude 10, s tim sto ako sistem ima manje od 1GB RAM memorije onda staviti swappiness vrednost 5.

Trenutnu vrednost swappiness-a mozete videti ako ukucate sledecu liniju u terminalu:
cat /proc/sys/vm/swappiness

Da bi ste izmenili vrednost swappinessa,
kao sudo pokrenite neki editor teksta i otvorite fajl:
/etc/sysctl.conf
i dodajte liniju:
vm.swappiness=10
sacuvajte izmene i restartujte kompjuter.

Na primer u terminalu kucajte:
gksudo mousepad /etc/sysctl.conf
dodajte liniju:
vm.swappiness=10
sacuvajte izmene i restartujte kompjuter.

About darthewok

Kompjuterski entuzijasta sa preko 30 godina iskustva.

Posted on 2015/12/09, in Linux tips and tagged , , . Bookmark the permalink. 14 Comments.

  1. Hvala puno darthewok!!!

    Like

  2. Nisam baš upućen, pa ako može mala pomoć gde se dodaje linija vm.swappiness=10? Na početku? Na kraju? Ja sam je dodao na kraju, ali kada restartujem računar i izvršim proveru i dalje mi stoji 60.

    Like

    • U nekom text editoru otvori fajl:
      /etc/sysctl.conf
      Ovo moras da uradis sa sudo privilegijama, na primer:
      sudo nano /etc/sysctl.conf
      ili iz grafickog editora:
      gksudo pluma /etc/sysctl.conf ako koristis Mate okruzenje
      ili ako koristis Gnome ili Unity onda kucas:
      gksudo gedit /etc/sysctl.conf

      liniju:
      vm.swappiness=10
      mozes staviti bilo gde, ja sam je na primer stavio na kraju.
      Zatim sacuvas izmene i restartujes kompjuter.

      Like

    • Koju Linux distribuciju koristis?
      Kada posle restarta ucitas fajl /etc/sysctl.conf da li se tamo nalazi linija vm.swappiness=10 ili ne?

      Like

  3. Da, nalazi se. Koristim poslednju verziju Ubuntu 15.10.

    Like

    • Otvori terminal i ukucaj ovo:
      sudo sysctl -w vm.swappiness=10
      To je samo privremena promena za probu.

      zatim proveri vrednost swappiness sa:
      cat /proc/sys/vm/swappiness

      Da li ti je posle ovoga doslo do promene?

      Like

    • Ok, posto ti ta privremena promena radi, probaj ponovo da upises liniju u /etc/sysctl.conf, pa restartuj kompjuter, zatim proveri da li je doslo do promene.
      Pazi, neki na internetu tvrde da vm.swappiness=10 mora da se pise ovako vm.swappiness = 10 sa razmakom izmedju znaka jednakosti.
      Ali, kad sam kod mene probao da ukucam sudo sysctl -w vm.swappiness = 10, prijavio mi je gresku, kod mene tako ne radi, vec radi bas ovako kako sam napisao ovde bez razmaka izmedju znaka jednakosti.
      Probaj i tako sa razmakom da upises tu liniju u /etc/sysctl.conf, pa javi da li si uspeo.
      U svakom slucaju, ako ne uspes, “pejstuj” sadrzaj /etc/sysctl.conf fajla, pa da vidim u cemu je problem.

      Like

      • Pisao sam i sa razmakom i bez razmaka, nikakvu mi grešku nije prijavljivao, ali je ostala vrednost 60.

        Like

      • #
        # /etc/sysctl.conf – Configuration file for setting system variables
        # See /etc/sysctl.d/ for additional system variables.
        # See sysctl.conf (5) for information.
        #

        #kernel.domainname = example.com

        # Uncomment the following to stop low-level messages on console
        #kernel.printk = 3 4 1 3

        ##############################################################3
        # Functions previously found in netbase
        #

        # Uncomment the next two lines to enable Spoof protection (reverse-path filter)
        # Turn on Source Address Verification in all interfaces to
        # prevent some spoofing attacks
        #net.ipv4.conf.default.rp_filter=1
        #net.ipv4.conf.all.rp_filter=1

        # Uncomment the next line to enable TCP/IP SYN cookies
        # See http://lwn.net/Articles/277146/
        # Note: This may impact IPv6 TCP sessions too
        #net.ipv4.tcp_syncookies=1

        # Uncomment the next line to enable packet forwarding for IPv4
        #net.ipv4.ip_forward=1

        # Uncomment the next line to enable packet forwarding for IPv6
        # Enabling this option disables Stateless Address Autoconfiguration
        # based on Router Advertisements for this host
        #net.ipv6.conf.all.forwarding=1

        ###################################################################
        # Additional settings – these settings can improve the network
        # security of the host and prevent against some network attacks
        # including spoofing attacks and man in the middle attacks through
        # redirection. Some network environments, however, require that these
        # settings are disabled so review and enable them as needed.
        #
        # Do not accept ICMP redirects (prevent MITM attacks)
        #net.ipv4.conf.all.accept_redirects = 0
        #net.ipv6.conf.all.accept_redirects = 0
        # _or_
        # Accept ICMP redirects only for gateways listed in our default
        # gateway list (enabled by default)
        # net.ipv4.conf.all.secure_redirects = 1
        #
        # Do not send ICMP redirects (we are not a router)
        #net.ipv4.conf.all.send_redirects = 0
        #
        # Do not accept IP source route packets (we are not a router)
        #net.ipv4.conf.all.accept_source_route = 0
        #net.ipv6.conf.all.accept_source_route = 0
        #
        # Log Martian Packets
        #net.ipv4.conf.all.log_martians = 1
        #
        #vm.swappiness=10

        Like

      • Uh rešio sam problem. Video sam rešenje na Linux tutorijalima. Obrisao sam znak “#” i dobio vrednost 10. Hvala! :)

        Like

    • Taraba znaci da je ta linija komentar i sav unos iza tarabe se ignorise. Rekoh ti da upises, bas ovako kako sam napisao. :)
      Nema na cemu. Poz. :)

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: