Как очистить кеш в Linux

How Clear Cache Linux



Кэш файловой системы Linux (Page Cache) используется для ускорения операций ввода-вывода. При определенных обстоятельствах администратор или разработчик может захотеть вручную очистить кеш. В этой статье мы объясним, как работает кеш файловой системы Linux. Затем мы продемонстрируем, как отслеживать использование кеша и как его очищать. Мы проведем несколько простых экспериментов с производительностью, чтобы убедиться, что кеш работает должным образом, и что процедура очистки и очистки кеша также работает должным образом.

Как работает кэш файловой системы Linux

Ядро резервирует определенный объем системной памяти для кэширования обращений к диску файловой системы, чтобы повысить общую производительность. Кеш в Linux называется Страница кеширования . Размер кэша страницы можно настроить, при этом по умолчанию разрешено кэширование больших объемов дисковых блоков. Максимальный размер кеша и правила удаления данных из кеша регулируются параметрами ядра. Подход кеширования linux называется кешем обратной записи. Это означает, что если данные записываются на диск, они записываются в память в кэш и помечаются в кэше как «грязные» до тех пор, пока не будут синхронизированы с диском. Ядро поддерживает внутренние структуры данных, чтобы оптимизировать, какие данные удалять из кеша, когда в кеше требуется больше места.







Во время системных вызовов чтения Linux ядро ​​проверяет, хранятся ли запрошенные данные в блоках данных в кэше, что будет успешным попаданием в кеш, и данные будут возвращены из кеша без выполнения каких-либо операций ввода-вывода в дисковую систему. В случае промаха кеша данные будут извлечены из системы ввода-вывода, и кеш будет обновлен на основе политик кэширования, поскольку эти же данные, вероятно, будут запрошены снова.



При достижении определенных пороговых значений использования памяти фоновые задачи начнут записывать грязные данные на диск, чтобы обеспечить очистку кеша памяти. Они могут повлиять на производительность приложений, интенсивно использующих память и ЦП, и требуют настройки администраторами и / или разработчиками.



Использование команды Free для просмотра использования кеша

Мы можем использовать команду free из командной строки, чтобы проанализировать системную память и объем памяти, выделенной для кеширования. См. Команду ниже:





#бесплатно

Что мы видим из бесплатно приведенная выше команда заключается в том, что в этой системе имеется 7,5 ГБ ОЗУ. Из них используется только 209 МБ, а 6,5 МБ свободно. 667 МБ используется в буферном кеше. Теперь давайте попробуем увеличить это число, выполнив команду для создания файла размером 1 гигабайт и прочитав файл. Приведенная ниже команда сгенерирует примерно 100 МБ случайных данных, а затем добавит 10 копий файла в одну. large_file .



# dd if = / dev / random of = / root / data_file count = 1400000
# для i в `seq 1 10`; сделать echo $ i; cat файл_данных >> большой_файл; сделано

Теперь мы обязательно прочитаем этот 1-гигабайтный файл, а затем снова проверим бесплатную команду:

# cat large_file> / dev / null
# бесплатно -m

Мы видим, что использование буферного кеша увеличилось с 667 до 1735 мегабайт, что примерно на 1 гигабайт увеличилось в использовании буферного кеша.

Команда Proc Sys VM Drop Caches

Ядро linux предоставляет интерфейс для удаления кеша, давайте попробуем эти команды и посмотрим, как это повлияет на бесплатную настройку.

# эхо 1> / proc / sys / vm / drop_caches
# бесплатно -m

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

Экспериментальная проверка работы Drop Cache

Можем ли мы провести проверку производительности использования кеша для чтения файла? Давайте прочитаем файл и запишем его обратно в / dev / null, чтобы проверить, сколько времени требуется для чтения файла с диска. Мы приурочим его к время команда. Мы выполняем эту команду сразу после очистки кеша с помощью приведенных выше команд.

На чтение файла ушло 8,4 секунды. Давайте прочитаем это еще раз, что файл должен находиться в кеше файловой системы, и посмотрим, сколько времени это займет сейчас.

Бум! Чтобы прочитать его, потребовалось всего 0,2 секунды по сравнению с 8,4 секундами, когда файл не был кэширован. Чтобы проверить, давайте повторим это еще раз, сначала очистив кеш, а затем прочитав файл 2 раза.

Он работал отлично, как и ожидалось. 8,5 секунды для некэшированного чтения и 0,2 секунды для кэшированного чтения.

Заключение

Кэш страниц автоматически включается в системах Linux и прозрачно ускоряет ввод-вывод, сохраняя в кеше недавно использованные данные. Если вы хотите вручную очистить кеш, это можно легко сделать, отправив команду echo в файловую систему / proc, указав ядру, что нужно удалить кеш и освободить память, используемую для кеша. Инструкции по запуску команды были показаны выше в этой статье, а также показана экспериментальная проверка поведения кеша до и после очистки.