Zwolnienie nieużywanej pamięci RAM

Uwaga: Ten wpis został utworzony ponad rok temu. Informacje w nim zawarte mogą być nieaktualne!

Czyścimy pamięć RAM

W tym poradniku pokażę jak w prosty sposób zwolnić nieużywaną pamięć RAM. W tym celu posłużymy się drop_caches, którego zadaniem jest sprawienie, aby jądro systemowe zwolniło bufor stronicowania, dentries i i-węzły – w zależności od wartości, którą wyślemy.

I tak:

  • Zwolnienie buforu stronicowania:
    echo 1 > /proc/sys/vm/drop_caches
  • Zwolnienie dentries i i-węzłów:
    echo 2 > /proc/sys/vm/drop_caches
  • Zwolnienie buforu stronicowania, dentries i i-węzłów:
    echo 3 > /proc/sys/vm/drop_caches

Inny sposób:

sudo sysctl -w vm.drop_caches=3

Zwróć uwagę na przesłaną wartość.

I pamięć posprzątana. Aktualny stan wolnej pamięci sprawdzisz poleceniem:

free -m
Możemy pokusić się również o napisanie prostego skrytpu, który zostanie dodany do zadań crona i uruchamiany np. co 5 minut.

Przykładowy przebieg

Stan początkowy:

szmitas@szmitas:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          2771       2288        483          0         17        352
-/+ buffers/cache:       1918        852
Swap:          486        118        368

Czyszczenie:

sudo sysctl -w vm.drop_caches=3

Stan końcowy:

szmitas@szmitas:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          2771       2015        755          0          0        128
-/+ buffers/cache:       1887        884
Swap:          486        118        368

W ten sposób udało się zwolnić 272 MB pamięci RAM.

Jeżeli powyższy artykuł nie rozwiązał lub rozwiązał częściowo Twój problem, dodaj swój komentarz opisujący, w którym miejscu napotkałeś trudności.
Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.
  • Marcin_

    Można to jakoś zautomatyzować? By ta pamięć sama się zwalniała, bez wpisywania poleceń w terminalu?

    • http://www.ubuntu-pomoc.org Łukasz Schmidtke

      Tak jak pisałem – tworzysz skrypt z poleceniem, który wrzucasz do zadań crona – wszystko co potrzebne jest już na blogu.

      • Marcin_

        A po dodaniu do crona nie będzie problemu, że w poleceniu jest sudo?

        • http://www.ubuntu-pomoc.org Łukasz Schmidtke

          root ma również swoją tablicę w cronie, więc jeśli dobrze wszystko dodasz, to nie będzie problemu.

  • rozbarat

    Hmmm… a pamięć nie jest po to aby z niej korzystać ? Po kiego ch. ją zwalniać i zlecać pracę dyskowi ?

  • Fogo

    Też nie rozumiem tego typu rozwiązań. Może dlatego, że jestem burżujem i mam 8gb ramu, więc nie widzę sensu oczyszczać jej na siłę.
    Pamiętam, że kiedyś był szał na takie programy w windowsie, co niestety zwykle przynosiło skutek odwrotny do oczekiwanego.