Jak wyczyścić lub wyłączyć pamięć podręczną?

49

Po uruchomieniu systemu po kilku minutach pamięć podręczna zapełnia się i zaczyna używać wymiany. Oto zrzut ekranu / proc / meminfo.

pamięć

Jeśli jednak mogę później wyłączyć ten proces / wyczyścić pamięć podręczną, myślę, że mój system przyspieszy do pewnego stopnia. Popraw mnie, jeśli się tutaj mylę.

Próbowałem też wyczyścić pamięć Bleachbit, ale wydaje się, że nie wyczyści ona prawidłowo pamięci podręcznej. Ponadto funkcja jest wciąż w fazie eksperymentalnej.

pamięć wybielacza

Było już podobne pytanie: Jak mogę wyłączyć pamięć podręczną pobierania wstępnego? , ale dotyczyło to Ubuntu Server, a także odpowiedzi dotyczyły ustawień ręcznych itp.

Chcę więc wiedzieć, czy jest jakieś oprogramowanie do wyłączania / włączania pamięci podręcznej pamięci dla Ubuntu 12.04.

Bharadwaj Srigiriraju
źródło
Czy na pewno to rozwiąże problem? Pamięć nie zapełnia się bez powodu. Miałem również problem z zapełnianiem się pamięci i prześledziłem ją z powrotem tracker-miner. Po odinstalowaniu wszystkich pakietów trackera mój problem zniknął. Mam również 4 GB pamięci, a 2 GB są używane przez pamięci podręczne, ale nie mam żadnych problemów.
Daniel Kullmann
1
@danielkullmann: Odnosi się do pamięci podręcznej, a nie pamięci używanej przez aplikacje ...
ish
@izx Tak, wiem. Możliwe, że szuka rozwiązania niewłaściwego problemu. Jądro jest wystarczająco inteligentne, aby nie wypełniać pamięci podręcznej, gdy jest to potrzebne programom. Dlatego myślę, że jego problemy z pamięcią pochodzą z programu, który zużywa zbyt dużo pamięci.
Daniel Kullmann
@danielkullmann: Jestem ciekawy, jak powiązałeś to z jednym procesem, który pochłania całą pamięć ... Czy jest na to jakieś narzędzie / polecenie?
Bharadwaj Srigiriraju
Właśnie użyłem polecenia htop i posortowałem według zużycia pamięci.
Daniel Kullmann

Odpowiedzi:

58

Uwaga: Linux NIE „zjada” pamięci RAM! Spójrz na doskonałą odpowiedź Geirha poniżej, aby zrozumieć, dlaczego ...

Po powyższej notatce, jeśli nadal uważasz, że „czyszczenie” pamięci podręcznej może pomóc, możesz z pewnością spróbować: jest to jedna linijka z terminala:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

Nie ma łatwego sposobu na wyłączenie pamięci podręcznej, ale możesz osiągnąć ten sam efekt, czyszcząc ją tak często, jak co minutę , jeśli chcesz:

  • Zrób z tego crona
  • Naciśnij Alt-F2, wpisz gksudo gedit /etc/crontabi dodaj ten wiersz u dołu:

    */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches

  • Sprząta co 15 minut. Możesz ustawić na 1 lub 5 minut, jeśli naprawdę chcesz , zmieniając pierwszy parametr na *lub */5zamiast*/15

Jedna linijka, aby poznać PRAWDZIWĄ wolną pamięć RAM, z wyjątkiem pamięci podręcznej

Odpowiedź Geirhy wyjaśnia szczegóły, ale w skrócie, otrzymujesz liczbę wolnych megabajtów dzięki:

free -m | sed -n -e '3p' | grep -Po "\d+$"

który na moim serwerze wiersza polecenia 2 GB zwraca bardzo dobrą kondycję 1835.

ish
źródło
3
Ergh! Znokautowanie pamięci podręcznej jest wystarczająco złe, ale robisz dla niej cronjob? Mam na myśli, że to „rozwiązuje” pytanie, że tak powiem, ale to nie czyni go mniej bolesnym.
Reid
@izx: hmm ... więc w ten sposób tworzy się cronjob. Jeśli mam okresowo upuszczać pamięć podręczną, czy to nie znaczy, że faktycznie spowalniam system? Gdyby tak było, myślę, że twoja odpowiedź brzmi bardziej jak odpowiedź teoretyczna niż odpowiedź Geirhy. : p Dobra odpowiedź BTW ...
Bharadwaj Srigiriraju,
1
@ForbiddenOverseer: Włożyłem to tylko dlatego, że chciałeś „wyłączyć” pamięć podręczną, a okresowe upuszczanie jest jedynym sposobem na osiągnięcie tego. Moja uwaga na górze (i link Geirhy) wyraźnie stwierdza, że ​​pamięć podręczna faktycznie przyspiesza twój system przez większość czasu, nawet jeśli wygląda na to, że „zjada twoją pamięć RAM” - więc tak, IMO spowolniłbyś swój system , ale chciałeś spróbować, więc po prostu odpowiedziałem na twoje pytanie zamiast po prostu dokuczać ci i mówić, że to zły pomysł, więc nie powinieneś tego robić! Po prostu dałem ci moc eksperymentowania ...: D
ish
1
Używam Ubuntu Server 12.04 LTS jako VDS. Próbuję podejścia opisanego w tej odpowiedzi, ale ciągle otrzymuję tee: /proc/sys/vm/drop_caches: Permission denied. Jakieś wskazówki?
Eimantas
44

Wsparcie! Linux zjadł moją pamięć RAM!

www.linuxatemyram.com wyjaśnia to pięknie w formularzu FAQ, przy czym najważniejsze to:

Co się dzieje?

Linux pożycza nieużywaną pamięć do buforowania dysku. To sprawia, że ​​wygląda na to, że masz mało pamięci, ale tak nie jest! Wszystko w porządku!

Dlaczego to robi?

Buforowanie dysku znacznie przyspiesza system! Nie ma żadnych wad, z wyjątkiem mylących początkujących. Nigdy nie zabiera pamięci aplikacjom!

Co jeśli chcę uruchomić więcej aplikacji?

Jeśli twoje aplikacje chcą więcej pamięci, po prostu odbierają fragment pożyczony przez pamięć podręczną dysku. Pamięć podręczna dysku może zawsze zostać natychmiast zwrócona do aplikacji! Nie brakuje ci barana!

Jak mogę zobaczyć, ile naprawdę mam wolnego ram?

Aby zobaczyć, ile pamięci RAM mogą zużywać aplikacje bez zamiany, uruchom free -m i spójrz na kolumnę „dostępne”:

$ za darmo -m
              całkowita wykorzystana darmowa wspólna pamięć podręczna buff / dostępna
Mem: 1504 1491 13 0 855       792
Zamiana: 2047 6 2041
To jest twoja odpowiedź w mebibajtach.


Źródło: jak wspomniano, doskonała www.linuxatemyram.com - odwiedź więcej informacji.

geirha
źródło
1
@geirha: Dzięki za link ... To było bardzo pouczające i podobały mi się eksperymenty podane na końcu !!
Bharadwaj Srigiriraju
@izx: tbh, mam trudności z podjęciem akceptowanej odpowiedzi. Nie wspominając o tym, że ten link był rzeczywiście pouczający pod każdym innym względem ...;)
Bharadwaj Srigiriraju,
@ForbiddenOverseer: zobacz mój komentarz w mojej odpowiedzi, aby uzyskać szczegółową odpowiedź - Podałem ci krótką wersję, dlaczego nie powinieneś tego robić, ale i tak odpowiedziałem na twoje pytanie, dając ci moc eksperymentowania i wypróbowania go samemu. Jeśli nie uważasz, że czyszczenie / upuszczanie pamięci podręcznej pomaga, po prostu nie rób tego więcej :)
ish
@izx, w tym przypadku było mi trochę trudno. Jednak napisałeś przydatny tekst w tej sprawie, więc być może możesz po prostu dodać adres URL do swojej odpowiedzi, a my usuniemy moją odpowiedź?
geirha
Nie ma potrzeby, twój link w doskonałym zasobie; Właśnie włączyłem niektóre części do odpowiedzi (wraz z przypisaniem), aby była to teraz całkowicie poprawna alternatywa (w rzeczywistości lepsza odpowiedź widziana przez opinię publiczną!) Świetna robota, głosowano - witamy w 5k!
ish
4

Aby sprawdzić bieżące użycie pamięci

 watch -n 1 free -m

lub

 watch -n 1 cat /proc/meminfo

Aby zwolnić miejsce

 sudo sysctl -w vm.drop_caches=3

UWAGA: ta akcja nie przyspieszy twojego systemu ani nie wpłynie na jego stabilność i wydajność, po prostu wyczyści pamięć używaną przez jądro Linuksa w pamięci podręcznej.

lub

 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

UWAGA: Za pomocą zadań cron można zaplanować wykonywanie powyższych poleceń w określonych odstępach czasu.

SilleBille
źródło