Як очистити або вимкнути кеш пам'яті?


49

Після запуску системи через кілька хвилин кеш пам'яті заповнюється, і він починає використовувати своп. Ось знімок екрана / proc / meminfo.

пам'ять

Однак, якщо я можу відключити цей процес / очистити кеш один раз після цього, я думаю, що моя система прискориться певною мірою. Виправте мене, якщо я тут помиляюся.

Я також спробував очистити пам'ять Bleachbit, але, схоже, вона не очищає кеш пам'яті належним чином. Також функція ще знаходиться в експериментальній стадії.

пам’ятка для біхбіту

Тут уже було розміщено подібне запитання: Як я можу відключити кеш попереднього вибору? , але це стосувалося сервера Ubuntu, а також відповіді стосувалися налаштувань вручну тощо.

Отже, я хочу знати, чи є якесь програмне забезпечення для відключення / включення кеша пам'яті для Ubuntu 12.04.


Ви впевнені, що це вирішить вашу проблему? Пам'ять не заповнюється без причини. У мене також була проблема, що моя пам’ять заповнювалась, і простежувала її назад tracker-miner. Після того, як я видалив усі пакети трекерів, моя проблема пішла. У мене також є 4 Гб оперативної пам’яті, а 2 ГБ використовуються чачі, але я не відчуваю жодних проблем.
daniel kullmann

1
@danielkullmann: Він має у вигляді в кеш пам'яті, а не пам'яті , використовуваних додатками ...
Робочі

@izx Так, я знаю. Це може бути просто те, що він шукає рішення неправильної проблеми. Ядро досить розумне, щоб не заповнювати пам'ять кешами, коли це потрібно програмам. Ось чому я думаю, що його проблеми з пам’яттю походять від програми, яка використовує занадто багато пам’яті.
Даніель Куллманн

@danielkullmann: Мені цікаво дізнатись, як ти простежив це до одного процесу, який зближає всю цю пам'ять ... Чи є якийсь інструмент / команда для цього?
Bharadwaj Srigiriraju

Я тільки що скористався командою htop і відсортований за використанням пам'яті.
Даніель Куллманн

Відповіді:


58

Примітка: Linux НЕ "їсть" вашу ОЗУ! Погляньте на відмінну відповідь Гейри нижче, щоб зрозуміти, чому ...

Після вищевказаної примітки, якщо ви все ще відчуваєте, що "очищення" кешу може допомогти, ви, безумовно, можете спробувати: це одноразовий вхід від терміналу:

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

Немає простого способу відключити кеш, але ви можете домогтися того ж ефекту, очищаючи його так само часто, як щохвилини , якщо хочете:

  • Зробіть це клопотом
  • Натисніть Alt-F2, введіть gksudo gedit /etc/crontabі додайте цей рядок внизу:

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

  • Це очищається кожні 15 хвилин. Ви можете встановити 1 або 5 хвилин, якщо дуже хочете , змінивши перший параметр на *або */5замість*/15

Один лайнер, щоб знати РЕАЛЬНУ вільну оперативну пам’ять, крім кеша

Відповідь Гейри пояснює деталі, але коротше кажучи, ви отримуєте кількість безкоштовних мегабайт за допомогою:

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

що на моєму сервері командного рядка 2 Гб повертає надзвичайно здоров’я 1835.


3
Ерх! Вибивати кеш-пам'ять досить погано, але зробити за це кронштейн? Я маю на увазі, що це "вирішує" питання, так би мовити, але це не робить його менш болючим.
Рейд


@izx: hmm ... так ось так створюється кронібр. Якщо я збираюся періодично скидати кеш, чи не означає це, що я фактично сповільнюю систему? Якби це було так, я думаю, що ваша відповідь звучить більше як теоретична відповідь, ніж відповідь гейри. : p Гарна відповідь BTW ...
Bharadwaj Srigiriraju

1
@ForbiddenOverseer: Я вкладаю це лише тому, що ви хотіли "відключити" кеш, і періодично його відміняти - це єдиний спосіб досягти цього. У моїй примітці вгорі (і посилання на гейру) чітко зазначено, що кеш-пам'ять насправді прискорює вашу систему більшість часу, навіть якщо це схоже на те, що вона "їсть вашу оперативну пам'ять" --- так, так, IMO, ви б сповільнили вашу систему , але ви хотіли спробувати, тому я просто відповів на ваше запитання, а не просто нудив вас і казав вам, що це погана ідея, і тому ви не повинні цього робити! Я просто дав вам можливість експериментувати ...: D
ish

1
Я використовую Ubuntu Server 12.04 LTS як VDS. Я намагаюся підійти до цієї відповіді, але постійно отримую tee: /proc/sys/vm/drop_caches: Permission denied. Якісь поради?
Еймантас

44

Довідка! Linux з’їв мою оперативну пам’ять!

www.linuxatemyram.com прекрасно пояснює це у формі поширених запитань, основні речі:

Що відбувається?

Linux запозичує невикористану пам'ять для кешування дисків. Це робить вигляд, що вам мало пам’яті, але ви цього не робите! Все добре!

Чому це робиться?

Кешування диска робить систему набагато швидшою! Немає жодних недоліків, за винятком плутанини новачків. Це ніколи не віднімає пам'ять від додатків!

Що робити, якщо я хочу запустити більше додатків?

Якщо ваші програми хочуть більше пам’яті, вони просто забирають шматок, який запозичив кеш диска. Дисковий кеш завжди можна негайно повернути до програм! Ви не низькі на барана!

Як я бачу, скільки у мене дійсно вільного барана?

Щоб побачити, скільки оперативної програми можуть використовувати ваші програми без заміни, запустіть безкоштовно -m та перегляньте стовпець "доступний":

$ безкоштовно -м
              загальнодоступний безкоштовний спільний баф / кеш
Mem: 1504 1491 13 0 855       792
Зміна: 2047 6 2041
Це ваша відповідь у мебібайт.


Джерело: як згадувалося, відмінний www.linuxatemyram.com - будь ласка, відвідайте для отримання додаткової інформації.


1
@geirha: Дякую за посилання ... Це було дуже інформативно, і мені сподобалися експерименти, подані наприкінці !!
Bharadwaj Srigiriraju

@izx: tbh, мені важко вирішити прийняту відповідь. Не кажучи вже про те, що це посилання насправді було інформативним у будь-який інший спосіб ...;)
Bharadwaj Srigiriraju

@ForbiddenOverseer: див. Мій коментар у моїй відповіді для детальної відповіді - я дав вам коротку версію, чому ви не повинні цього робити, але потім відповів на ваше питання все одно, даючи вам можливість експериментувати і спробувати це на собі. Якщо ви не думаєте очищення / скидання кешу допомагає, просто не роблять його більше :)
іш

@izx, мені було важко зробити це для цього випадку. Однак ви написали корисний текст із цього питання, тож, можливо, ви могли просто додати URL у свою відповідь, і ми видалимо мою відповідь?
geirha

Не потрібно, ваше посилання на відмінний ресурс; Я просто включив деякі частини у відповідь (з атрибуцією), так що тепер це цілком коректна альтернатива (насправді краща відповідь, яку бачить громадськість!) Прекрасна робота, прихильна - ласкаво просимо до 5k!
Останній

4

Щоб перевірити поточне використання пам'яті

 watch -n 1 free -m

або

 watch -n 1 cat /proc/meminfo

Щоб звільнити місце

 sudo sysctl -w vm.drop_caches=3

ПРИМІТКА: ця дія не зробить вашу систему швидшою, а також не вплине на її стабільність та продуктивність, вона просто очистить пам'ять, яку використовує ядро ​​Linux в кешах.

або

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

ПРИМІТКА: Ви можете використовувати завдання cron для планування вищезазначених команд для виконання через певні інтервали часу.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.