The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Как очистить кэш файловой системы в Linux ядре
Начиная с 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
 
09.09.2007 , Источник: http://linux-mm.org/Drop_Caches...
Ключи: linux, kernel, cache / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Linux специфика / Оптимизация и тюнинг в Linux

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 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 поставить побольше... но зачем это делать?
     

  • 1.2, weec (ok), 11:25, 10/09/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    под FreeBSD есть вариант?
     
  • 1.3, Аноним (-), 12:18, 10/09/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну как же, дефрагментатор памяти можно написать, и продавать ;)
     
  • 1.7, Александр (??), 14:36, 20/09/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Уважаемый автор!
    Когда пишите документ - указывайте ссылки!
    В http://linux.die.net/man/5/proc написано совершенно обратное. sync надо выполнять *до* echo!!!
     
     
  • 2.8, tarantin (?), 16:41, 20/09/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Автор так и писал:
     
     
  • 3.12, Аноним (12), 16:59, 20/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Автор так и писал:

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

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

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

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

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

     
  • 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
    Как-то так.

     

  • 1.9, name (??), 01:51, 26/09/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как проверить, что это сработало?
     
     
  • 2.10, Тузик (?), 23:17, 02/10/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Комманда free, колонка cached. Запустить до и после, чтобу прочувствовать разницу.
     

  • 1.11, CISCO (??), 05:55, 31/01/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а как в FreeBSD?
     
  • 1.13, pavlinux (ok), 20:26, 20/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    sysctl -w vm.drop_caches=65535
     
  • 1.14, Анатолий (??), 19:09, 08/02/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Уважаемый АВТОР, искренне выражаю Вам свою благодарность за данную статью, очень помогла.
     
  • 1.15, ZayDen (??), 19:27, 16/03/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    very good :)
     
  • 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
    > Обсуждается: https://www.opennet.ru/tips/info/1455.shtml

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

     
  • 1.19, Владимир (??), 16:15, 13/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Автору СПАСИБО!!! Несколько лет искал эту инфу!
     
  • 1.20, Дмитрий (??), 23:48, 29/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А зачем их чистить? Это же не мусор в памяти.
    Память фактически свободна для процессов.
    Понадобится, возьмет сколько надо.
     
     
  • 2.21, weec (??), 08:52, 30/11/2011 [^] [^^] [^^^] [ответить]  
  • +/

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

  • 1.22, Alex (??), 14:47, 22/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    По первой комманде выдаёт -
    bash: /proc/sys/vm/drop_caches: Permission denied
     
     
  • 2.23, Сергей Савельев (?), 12:24, 24/12/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Надо запускать от пользователя root
     

  • 1.25, олег (?), 19:40, 28/05/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Подробно мозете написат?
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру