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.

Author: Darth Ewok

Kompjuterski entuzijasta sa preko 30 godina iskustva. FUNDAMENTAL LINUX ADMINISTRATION https://www.cybrary.it/verify-certificate/ Certification Number: SC-935c75f14-31c7f Fundamental System Security https://www.cybrary.it/verify-certificate/ Certification Number: SC-935c75f14-0c6e2a End User Security Awareness https://www.cybrary.it/verify-certificate/ Certification Number: C-935c75f14-58b64df9 SECURITY MISCONFIGURATIONS https://www.cybrary.it/verify-certificate/ Certification Number: SC-935c75f14-fc2853 Security Assessment & Testing https://www.cybrary.it/verify-certificate/ Certification Number: SC-935c75f14-83cd23 CREATE A SUBNET https://www.cybrary.it/verify-certificate/ Certification Number: SC-935c75f14-ff674 Peripheral Devices and Connectors https://www.cybrary.it/verify-certificate/ Certification Number: SC-935c75f14-d97b10 Malware Fundamentals https://www.cybrary.it/verify-certificate/ Certification Number: SC-935c75f14-1ab14a

14 thoughts on “Smanjivanje upotrebe swap-a u Linuxu”

  1. 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

    1. 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

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

      Like

    1. 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

    2. 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

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

        Like

      2. #
        # /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

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

        Like

    3. 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 comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.