- How do you empty the buffers and cache on a Linux system?
- 1 Answer 1
- Emptying the buffers cache
- Seeing what’s in the buffers and cache
- fincore
- Swap
- How do I clean or disable the memory cache?
- Drop_caches, очистите оперативную память вашей системы с терминала
- Очистите оперативную память в Ubuntu, Linux Mint и производных с помощью drop_caches
- Автоматизировать освобождение ОЗУ с помощью задач Cron
- 1 STEP
- 2 STEP
- 3 STEP
- 4 STEP
- 5 STEP
- 6 STEP
- 2 комментариев, оставьте свой
- Оставьте свой комментарий Отменить ответ
How do you empty the buffers and cache on a Linux system?
Prior to doing some benchmarking work how would one free up the memory (RAM) that the Linux Kernel is consuming for its buffers and cache? Note that this is mostly useful for benchmarking. Emptying the buffers and cache reduces performance! If you’re here because you thought that freeing buffers and cache was a positive thing, go and read Linux ate my RAM!. The short story: free memory is unused memory is wasted memory.
@innocent-world — never saw these when I was searching, so it appeared to be a hole in the knowledge base on this site, and was attempting to fill it in.
@innocent-world — in looking at those 2 Q’s I think there is still room for this Q&A. This one acts as a canonical Q&A on the site. Those are fairly specific in what they’re addressing. Additionally this one shows information about analyzing the buffers & cache and also how to set the parameters using sudo. Neither of the other 2 questions address any of this.
Please read this article linuxatemyram.com If you understand the risk then you can do free && sync && echo 3 > /proc/sys/vm/drop_caches && free
1 Answer 1
Emptying the buffers cache
If you ever want to empty it you can use this chain of commands.
# free && sync && echo 3 > /proc/sys/vm/drop_caches && free total used free shared buffers cached Mem: 1018916 980832 38084 0 46924 355764 -/+ buffers/cache: 578144 440772 Swap: 2064376 128 2064248 total used free shared buffers cached Mem: 1018916 685008 333908 0 224 108252 -/+ buffers/cache: 576532 442384 Swap: 2064376 128 2064248
You can signal the Linux Kernel to drop various aspects of cached items by changing the numeric argument to the above command.
# echo 1 > /proc/sys/vm/drop_caches
# echo 2 > /proc/sys/vm/drop_caches
# echo 3 > /proc/sys/vm/drop_caches
The above are meant to be run as root. If you’re trying to do them using sudo then you’ll need to change the syntax slightly to something like these:
$ sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches' $ sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches' $ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
NOTE: There’s a more esoteric version of the above command if you’re into that:
$ echo "echo 1 > /proc/sys/vm/drop_caches" | sudo sh
Why the change in syntax? The /bin/echo program is running as root, because of sudo , but the shell that’s redirecting echo’s output to the root-only file is still running as you. Your current shell does the redirection before sudo starts.
Seeing what’s in the buffers and cache
Take a look at linux-ftools if you’d like to analyze the contents of the buffers & cache. Specifically if you’d like to see what files are currently being cached.
fincore
With this tool you can see what files are being cached within a give directory.
fincore [options] files. --pages=false Do not print pages --summarize When comparing multiple files, print a summary report --only-cached Only print stats for files that are actually in cache.
For example, /var/lib/mysql/blogindex :
root@xxxxxx:/var/lib/mysql/blogindex# fincore --pages=false --summarize --only-cached * stats for CLUSTER_LOG_2010_05_21.MYI: file size=93840384 , total pages=22910 , cached pages=1 , cached size=4096, cached perc=0.004365 stats for CLUSTER_LOG_2010_05_22.MYI: file size=417792 , total pages=102 , cached pages=1 , cached size=4096, cached perc=0.980392 stats for CLUSTER_LOG_2010_05_23.MYI: file size=826368 , total pages=201 , cached pages=1 , cached size=4096, cached perc=0.497512 stats for CLUSTER_LOG_2010_05_24.MYI: file size=192512 , total pages=47 , cached pages=1 , cached size=4096, cached perc=2.127660 stats for CLUSTER_LOG_2010_06_03.MYI: file size=345088 , total pages=84 , cached pages=43 , cached size=176128, cached perc=51.190476 stats for CLUSTER_LOG_2010_06_04.MYD: file size=1478552 , total pages=360 , cached pages=97 , cached size=397312, cached perc=26.944444 stats for CLUSTER_LOG_2010_06_04.MYI: file size=205824 , total pages=50 , cached pages=29 , cached size=118784, cached perc=58.000000 stats for COMMENT_CONTENT_2010_06_03.MYI: file size=100051968 , total pages=24426 , cached pages=10253 , cached size=41996288, cached perc=41.975764 stats for COMMENT_CONTENT_2010_06_04.MYD: file size=716369644 , total pages=174894 , cached pages=79821 , cached size=326946816, cached perc=45.639645 stats for COMMENT_CONTENT_2010_06_04.MYI: file size=56832000 , total pages=13875 , cached pages=5365 , cached size=21975040, cached perc=38.666667 stats for FEED_CONTENT_2010_06_03.MYI: file size=1001518080 , total pages=244511 , cached pages=98975 , cached size=405401600, cached perc=40.478751 stats for FEED_CONTENT_2010_06_04.MYD: file size=9206385684 , total pages=2247652 , cached pages=1018661 , cached size=4172435456, cached perc=45.321117 stats for FEED_CONTENT_2010_06_04.MYI: file size=638005248 , total pages=155763 , cached pages=52912 , cached size=216727552, cached perc=33.969556 stats for FEED_CONTENT_2010_06_04.frm: file size=9840 , total pages=2 , cached pages=3 , cached size=12288, cached perc=150.000000 stats for PERMALINK_CONTENT_2010_06_03.MYI: file size=1035290624 , total pages=252756 , cached pages=108563 , cached size=444674048, cached perc=42.951700 stats for PERMALINK_CONTENT_2010_06_04.MYD: file size=55619712720 , total pages=13579031 , cached pages=6590322 , cached size=26993958912, cached perc=48.533080 stats for PERMALINK_CONTENT_2010_06_04.MYI: file size=659397632 , total pages=160985 , cached pages=54304 , cached size=222429184, cached perc=33.732335 stats for PERMALINK_CONTENT_2010_06_04.frm: file size=10156 , total pages=2 , cached pages=3 , cached size=12288, cached perc=150.000000 --- total cached size: 32847278080
With the above output you can see that there are several *.MYD, *.MYI, and *.frm files that are currently being cached.
Swap
If you want to clear out your swap you can use the following commands.
$ free total used free shared buffers cached Mem: 7987492 7298164 689328 0 30416 457936 -/+ buffers/cache: 6809812 1177680 Swap: 5963772 609452 5354320
Then use this command to disable swap:
You can confirm that it’s now empty:
$ free total used free shared buffers cached Mem: 7987492 7777912 209580 0 39332 489864 -/+ buffers/cache: 7248716 738776 Swap: 0 0 0
And now reconfirm with free :
$ free total used free shared buffers cached Mem: 7987492 7785572 201920 0 41556 491508 -/+ buffers/cache: 7252508 734984 Swap: 5963772 0 5963772
How do I clean or disable the memory cache?
After the system starts, in a few minutes my memory cache fills up and it starts using the swap. Here’s a screenshot of /proc/meminfo. However, if I can disable this process / clean the cache once after that, I think my system will speed up to some extent. Correct me if I am wrong here. I have also tried Bleachbit memory cleaning, but it doesn’t seem to clean the memory cache properly. Also, the feature is still in an experimental stage. There was already a similar question posted here: How can I disable the prefetch cache?, but it was regarding Ubuntu Server, and also the answers involved manual settings etc. So, I want to know if there’s some software for disabling/enabling Memory Cache for Ubuntu 12.04.
Are you sure this will solve your problem? Memory doesn’t fill up without a reason. I also had the problem that my memory was filling up, and traced it back to tracker-miner . After I uninstalled all tracker packages, my problem went away. I also have 4GB memory, and 2GB are used by chaches, but I’m nor experiencing any problems.
@izx Yes, I know. It could just be that he looks for the solution of the wrong problem. The kernel is smart enough not to fill up memory with caches when it is needed by programs. That’s why I think that his memory problems come from a program that uses too much memory.
@danielkullmann: I am curious to know how you traced it back to one process that’s gobbling up all that memory. Is there some tool/command for that?
Drop_caches, очистите оперативную память вашей системы с терминала
В следующей статье мы увидим, как чистая оперативная память из терминала Ubuntu. По умолчанию в Gnu / Linux есть очень эффективный способ управления оперативной памятью на наших компьютерах. Благодаря этому мы получаем лучшую производительность ресурсов, доступных в нашей системе. Такой подход иногда может сбивать с толку пользователей, поскольку ОЗУ кажется полностью израсходованным, несмотря на закрытие всех приложений.
Gnu / Linux использует доступную память для кэширования приложений с жесткого диска с целью добиться более быстрого чтения. Это преимущество вызывает разочарование, особенно для системных администраторов, которые устраняют проблемы с ПК. Изменения, внесенные в системные файлы на жестком диске, могут не читаться. Это происходит потому, что Gnu / Linux загружает их из ОЗУ. Поэтому, чтобы решить эту проблему, рекомендуется очистить оперативную память вместо перезагрузки ПК.
Очистите оперативную память в Ubuntu, Linux Mint и производных с помощью drop_caches
Мы собираемся запустить терминал (Ctrl + Alt + T) и написать следующие команды:
sudo su sync; echo 3 > /proc/sys/vm/drop_caches
Для начала мы давай авторизуемся как root. Тогда команда ‘синхронизировать‘собираюсь очистить буфер файловой системы. Таким образом, мы будем уверены, что все кэшированные объекты будут освобождены. Иначе могут быть проблемы. Команда ‘эхо‘выполняет запись в файл и drop_caches очищает кеш без удаления какого-либо приложения / службы. Вы должны сразу увидеть, что ОЗУ освободилось.
Если вам нужно очистить кеш диска, «… Эхо> 3…«Безопаснее в компании и в оборудовании на этапе производства, поскольку«… Эхо 1>….»Удалит только страницу. Не рекомендуется использовать третий вариант «… Echo 3>…»В производстве, пока вы не узнаете, что делаете, поскольку очистит кеш страницы, dentries и inodes. Опция «… Echo 0>…»Ничего не будет выпускать, а опция«… Echo 2>…»Освободит только inodes и dentries.
Эта операция это может замедлить работу системы на несколько секунд, при этом кеш очищается, и все ресурсы, требуемые ОС, загружаются обратно в кеш диска.
Gnu / Linux разработан таким образом, что он проверяет кеш диска перед поиском на диске. Если он находит ресурс в кеше, то запрос не попадет на диск. Если мы очистим кеш, операционная система будет искать запрошенный ресурс на диске..
Автоматизировать освобождение ОЗУ с помощью задач Cron
Теперь, когда мы знаем, как освободить память на наших компьютерах, мы можем захотеть автоматизировать процесс стирания памяти на регулярной основе. Это легко сделать с помощью cron задачи. Эту задачу следует использовать только на настольных компьютерах и ноутбуках.
1 STEP
Для начала запустим терминал (Ctrl + Alt + T) и напишем следующую команду в установить vim, или чтобы каждый использовал свой любимый редактор:
2 STEP
Теперь мы собираемся создать .sh файл называется eraseram.sh. В него мы добавим скрипт:
3 STEP
Если мы воспользуемся редактором vim, нам придется нажмите клавишу ‘esc’, а затем клавишу ‘i’ для входа в режим INSERT. Далее мы добавим следующий скрипт.
#!/bin/bash sync echo "echo 3 > /proc/sys/vm/drop_caches"
Первая строка ниже — это притон. Затем мы напишем ту же команду, которую используем для стирания ОЗУ с терминала.
Как только все будет написано, мы сохраняем файл sh и выходим из текстового редактора vim. Для этого нажмем «esc» напишем : Wq и мы нажмем Enter. Vim сохранит файл sh и выйдет в терминал. В этом примере я сохранил сценарий в корневой домашней папке.
4 STEP
Вернувшись в терминал, мы напишем следующую команду в предоставить разрешения на чтение / запись:
sudo chmod 755 borraram.sh
5 STEP
Пришло время вызвать команду кронтаб:
6 STEP
Предположим, мы хотим очищать оперативную память каждый день в 1:XNUMX. Это на любой вкус.
0 13 * * * /root/scripts/borraram.sh
Файл sh, мы можем переместить его в нужное место, но мы должны запомнить путь, поскольку это тот, который мы должны будем указать предыдущей команде.
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Убунлог » Ubuntu » Drop_caches, очистите оперативную память вашей системы с терминала
2 комментариев, оставьте свой
Оставьте свой комментарий Отменить ответ
Рикардо Мелгоса сказал
Syslog сказал
Этот пост следует удалить, он содержит много неверной и неточной информации. Не рекомендуется очищать кеш диска, это совершенно не помогает конечному пользователю. Это также ложь, что «это преимущество становится разочаровывающим, особенно для системных администраторов, которые устраняют проблемы с ПК», потому что . Также не объясняется, почему вы выполняете синхронизацию, . это запутанная и ошибочная статья.