Представление

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

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

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

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

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

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

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

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

# бесплатно -m

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

# dd if = / dev / random of = / root / data_file count = 1400000
# для i in 'seq 1 10'; do 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 секунды на чтение файла.  Давайте прочитаем это еще раз, что файл должен находиться в кеше файловой системы, и посмотрим, сколько времени это займет сейчас.

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

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

Заключение

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

Как использовать AutoKey для автоматизации игр под Linux
AutoKey - это утилита автоматизации рабочего стола для Linux и X11, запрограммированная на Python 3, GTK и Qt. Используя его функции сценариев и MACRO...
Как показать счетчик FPS в играх для Linux
Игры для Linux получили серьезный толчок, когда Valve объявила о поддержке Linux для клиента Steam и своих игр в 2012 году. С тех пор многие игры AAA ...
Как загрузить и играть в Sid Meier's Civilization VI в Linux
Введение в игру Civilization 6 - это современный подход к классической концепции, представленной в серии игр Age of Empires. Идея была довольно просто...