URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 38369
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Как очистить кэш файловой системы в Linux ядре"

Отправлено auto_tips , 09-Сен-07 20:29 
Начиная с Linux ядра 2.6.16 появилась возможность принудительной очистки системных кэшей:

Чистим pagecache:
   echo 1 > /proc/sys/vm/drop_caches

Чистим dentrie и inode кэши:
   echo 2 > /proc/sys/vm/drop_caches

Чистим pagecache, dentrie и inode кэши:
   echo 3 > /proc/sys/vm/drop_caches

После выполнения операции необходимо запустить команду sync

URL: http://linux-mm.org/Drop_Caches
Обсуждается: http://www.opennet.ru/tips/info/1455.shtml


Содержание

Сообщения в этом обсуждении
"Как очистить кэш файловой системы в Linux ядре"
Отправлено const86 , 09-Сен-07 20:29 
Полезная фича для бенчмарков файловых систем. А ещё для чего-нибудь может пригодиться?

"Как очистить кэш файловой системы в Linux ядре"
Отправлено Антон , 10-Сен-07 12:23 
>Полезная фича для бенчмарков файловых систем. А ещё для чего-нибудь может пригодиться?

Например, иногда для выполнения программы нужно сразу много памяти и очень соблазнительно взять ее из дискового кэша который до метров двухсот вырос. Мгновенно он не уменьшится, только через некоторое время, а нужно прямо сейчас иначе предстоит долгое наблюдение за своппингом.



"Как очистить кэш файловой системы в Linux ядре"
Отправлено const86 , 10-Сен-07 18:44 
Не замечал подобных явлений.
Вот например, свободной памяти почти нет, большой дисковый кеш. В свопе пусто. Запускаю толстую прогу. Кеш сразу уменьшается, прога умещается в оперативку, своп по-прежнему пустой. "Что я делаю не так?" :)
Вообще, по личным наблюдениям, дисковый кеш можно считать свободной памятью. Потому что прежде, чем лезть в своп, система пожертвует кешем.
Может, если vm.swappiness поставить побольше... но зачем это делать?

"Как очистить кэш файловой системы в Linux ядре"
Отправлено weec , 10-Сен-07 11:25 
под FreeBSD есть вариант?

"Как очистить кэш файловой системы в Linux ядре"
Отправлено Аноним , 10-Сен-07 12:18 
Ну как же, дефрагментатор памяти можно написать, и продавать ;)

"Как очистить кэш файловой системы в Linux ядре"
Отправлено Александр , 20-Сен-07 14:36 
Уважаемый автор!
Когда пишите документ - указывайте ссылки!
В http://linux.die.net/man/5/proc написано совершенно обратное. sync надо выполнять *до* echo!!!

"Как очистить кэш файловой системы в Linux ядре"
Отправлено tarantin , 20-Сен-07 16:41 
Автор так и писал:

"Как очистить кэш файловой системы в Linux ядре"
Отправлено Аноним , 20-Окт-08 16:59 
>Автор так и писал:

Зависит от того, по какому URL вы это читаете :)

http://www.opennet.ru/tips/info/1455.shtml

>Перед выполнением операции необходимо запустить команду sync

http://www.opennet.ru/openforum/vsluhforumID3/38369.html#3

>После выполнения операции необходимо запустить команду sync


"Как очистить кэш файловой системы в Linux ядре"
Отправлено TomB , 20-Июн-10 22:37 
>Уважаемый автор!
>Когда пишите документ - указывайте ссылки!
http://linux.die.net/man/5/proc написано совершенно обратное. sync надо выполнять *до* echo!!!

В самом деле sync вообще не обязательно делать, просто если сделать до echo , то после echo могжет очиститься ещё и кэш с незаписанными на диск данными.


"Как очистить кэш файловой системы в Linux ядре"
Отправлено linux0id , 23-Окт-13 05:35 
> после echo могжет очиститься ещё и кэш с незаписанными на диск данными.

НЕ может.
cache ≠ buffer
Буферы записи не затрагиваются записью любого значения [1|2|3] в drop_caches, т.к. память эта относится к «dirty objects». В документации ядра про sync написано лишь затем, чтобы администратор системы получил максимальный эффект от выполненной операции.
Что будет с sync: «dirty objects» → «clean objects» → «drop caches» → «free memory»
Что будет без sync: «dirty objects» → «drop caches» → «free memory» + «dirty objects»
Т.е. без sync буферы продолжат существовать нетронутыми пока до них не дойдёт очередь в потоке ядра pdflush. Когда данные будут записаны на диск, тогда станет возможной их очистка из памяти, а sync просто принуждает записать на диск «прямо сейчас». Причём, sync нужно запускать дважды, по-хорошему.
Будет максимальное высвобождение памяти от последовательности команд:
sync && sync && echo 3 > /proc/sys/vm/drop_caches
Как-то так.


"Как очистить кэш файловой системы в Linux ядре"
Отправлено name , 26-Сен-07 01:51 
Как проверить, что это сработало?

"Как очистить кэш файловой системы в Linux ядре"
Отправлено Тузик , 02-Окт-07 23:17 
Комманда free, колонка cached. Запустить до и после, чтобу прочувствовать разницу.

"Как очистить кэш файловой системы в Linux ядре"
Отправлено CISCO , 31-Янв-08 05:55 
а как в FreeBSD?

"Как очистить кэш файловой системы в Linux ядре"
Отправлено pavlinux , 20-Окт-08 20:26 
sysctl -w vm.drop_caches=65535

"Как очистить кэш файловой системы в Linux ядре"
Отправлено Анатолий , 08-Фев-10 19:09 
Уважаемый АВТОР, искренне выражаю Вам свою благодарность за данную статью, очень помогла.

"Как очистить кэш файловой системы в Linux ядре"
Отправлено ZayDen , 16-Мрт-10 19:27 
very good :)

"Как очистить кэш файловой системы в Linux ядре"
Отправлено Серга , 23-Июн-10 15:50 
Спасибо огромное, теперь не придется перезагружать каждый раз сервер, а можно как-нибудь поставить ограничение кэша например на 512 мб?

"Раздел полезных советов: Как очистить кэш файловой системы в..."
Отправлено Дмитрий , 13-Апр-11 13:21 
> Начиная с Linux ядра 2.6.16 появилась возможность принудительной очистки системных кэшей:
> Чистим pagecache:
>    echo 1 > /proc/sys/vm/drop_caches
> Чистим dentrie и inode кэши:
>    echo 2 > /proc/sys/vm/drop_caches
> Чистим pagecache, dentrie и inode кэши:
>    echo 3 > /proc/sys/vm/drop_caches
> После выполнения операции необходимо запустить команду sync
> URL: http://linux-mm.org/Drop_Caches
> Обсуждается: http://www.opennet.ru/tips/info/1455.shtml

Большое спасибо!


"Как очистить кэш файловой системы в Linux ядре"
Отправлено Владимир , 13-Июл-11 16:15 
Автору СПАСИБО!!! Несколько лет искал эту инфу!

"Как очистить кэш файловой системы в Linux ядре"
Отправлено Дмитрий , 29-Ноя-11 23:48 
А зачем их чистить? Это же не мусор в памяти.
Память фактически свободна для процессов.
Понадобится, возьмет сколько надо.

"Как очистить кэш файловой системы в Linux ядре"
Отправлено weec , 30-Ноя-11 08:52 

для ситуёвин в которых нужен пустой кеш

"Как очистить кэш файловой системы в Linux ядре"
Отправлено Alex , 22-Янв-12 14:47 
По первой комманде выдаёт -
bash: /proc/sys/vm/drop_caches: Permission denied

"Как очистить кэш файловой системы в Linux ядре"
Отправлено Сергей Савельев , 24-Дек-12 12:24 
Надо запускать от пользователя root

"Как очистить кэш файловой системы в UBUNTU "
Отправлено олег , 28-Май-14 19:40 
Подробно мозете написат?