1.1, const86 (ok), 20:29, 09/09/2007 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Полезная фича для бенчмарков файловых систем. А ещё для чего-нибудь может пригодиться?
| |
|
2.4, Антон (??), 12:23, 10/09/2007 [^] [^^] [^^^] [ответить]
| +/– |
>Полезная фича для бенчмарков файловых систем. А ещё для чего-нибудь может пригодиться?
Например, иногда для выполнения программы нужно сразу много памяти и очень соблазнительно взять ее из дискового кэша который до метров двухсот вырос. Мгновенно он не уменьшится, только через некоторое время, а нужно прямо сейчас иначе предстоит долгое наблюдение за своппингом.
| |
|
3.5, const86 (ok), 18:44, 10/09/2007 [^] [^^] [^^^] [ответить]
| +/– |
Не замечал подобных явлений.
Вот например, свободной памяти почти нет, большой дисковый кеш. В свопе пусто. Запускаю толстую прогу. Кеш сразу уменьшается, прога умещается в оперативку, своп по-прежнему пустой. "Что я делаю не так?" :)
Вообще, по личным наблюдениям, дисковый кеш можно считать свободной памятью. Потому что прежде, чем лезть в своп, система пожертвует кешем.
Может, если vm.swappiness поставить побольше... но зачем это делать?
| |
|
|
|
2.16, TomB (?), 22:37, 20/06/2010 [^] [^^] [^^^] [ответить]
| +/– |
>Уважаемый автор!
>Когда пишите документ - указывайте ссылки!
>В http://linux.die.net/man/5/proc написано совершенно обратное. sync надо выполнять *до* echo!!!
В самом деле sync вообще не обязательно делать, просто если сделать до echo , то после echo могжет очиститься ещё и кэш с незаписанными на диск данными.
| |
|
3.24, linux0id (?), 05:35, 23/10/2013 [^] [^^] [^^^] [ответить]
| +/– |
> после 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
Как-то так.
| |
|
|
|
2.10, Тузик (?), 23:17, 02/10/2007 [^] [^^] [^^^] [ответить]
| +/– |
Комманда free, колонка cached. Запустить до и после, чтобу прочувствовать разницу.
| |
|
1.14, Анатолий (??), 19:09, 08/02/2010 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Уважаемый АВТОР, искренне выражаю Вам свою благодарность за данную статью, очень помогла.
| |
1.17, Серга (?), 15:50, 23/06/2010 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Спасибо огромное, теперь не придется перезагружать каждый раз сервер, а можно как-нибудь поставить ограничение кэша например на 512 мб?
| |
1.18, Дмитрий (??), 13:21, 13/04/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> Начиная с 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.dev/tips/info/1455.shtml
Большое спасибо!
| |
1.20, Дмитрий (??), 23:48, 29/11/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
А зачем их чистить? Это же не мусор в памяти.
Память фактически свободна для процессов.
Понадобится, возьмет сколько надо.
| |
1.22, Alex (??), 14:47, 22/01/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
По первой комманде выдаёт -
bash: /proc/sys/vm/drop_caches: Permission denied
| |
|