Продуктивність

Як очистити кеш на Linux

Як очистити кеш на Linux
Кеш файлової системи Linux (кеш сторінки) використовується для пришвидшення операцій вводу-виводу.  За певних обставин адміністратор або розробник може захотіти очистити кеш вручну.  У цій статті ми пояснимо, як працює кеш файлової системи Linux.  Потім ми продемонструємо, як контролювати використання кешу та як очищати кеш.  Ми проведемо кілька простих експериментів з продуктивністю, щоб переконатися, що кеш працює належним чином, а також, що процедура очищення та очищення кешу також працює належним чином.

Як працює кеш файлової системи Linux

Ядро резервує певний обсяг системної пам'яті для кешування доступу до диска файлової системи, щоб пришвидшити загальну продуктивність.  Кеш-пам'ять в Linux називається Кеш сторінки. Розмір кешу сторінки можна налаштувати за допомогою великих значень за замовчуванням, які дозволяють кешувати велику кількість дискових блоків.  Максимальний розмір кеш-пам’яті та політика часу виселення даних із кешу регулюються параметрами ядра.  Підхід кешування Linux називається кешем зворотного запису.  Це означає, що якщо дані записуються на диск, вони записуються в пам’ять в кеш і позначаються як брудні в кеші, поки вони не синхронізуються з диском.  Ядро підтримує внутрішні структури даних, щоб оптимізувати, які дані витіснити з кешу, коли в кеші потрібно більше місця.

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

Коли досягнуто певних порогових значень використання пам'яті, фонові завдання почнуть записувати брудні дані на диск для забезпечення очищення кешу пам'яті.  Вони можуть вплинути на продуктивність додатків, що вимагають великої кількості пам'яті та процесора, і вимагати налаштування адміністраторами та / або розробниками.

Використання безкоштовної команди для перегляду використання кешу

Ми можемо використовувати безкоштовну команду з командного рядка для аналізу системної пам'яті та обсягу пам'яті, виділеного для кешування.  Див. Команду нижче:

# безкоштовно -м

Те, що ми бачимо з безкоштовно Наведена вище команда - це 7.5 ГБ оперативної пам'яті в цій системі.  З них використовується лише 209 Мб і 6.5 Мб безкоштовно.  667 Мб використовується в кеші буфера.  Тепер спробуємо збільшити це число, виконавши команду для створення файлу розміром 1 Гігабайт і прочитавши файл.  Наведена нижче команда генерує приблизно 100 МБ випадкових даних, а потім додає 10 копій файлу в одну великий_файл.

# dd if = / dev / random of = / root / data_file count = 1400000
# для i у 'seq 1 10'; робити echo $ i; cat_файл даних >> великий_файл; зроблено

Тепер ми обов’язково прочитаємо цей файл 1 Gig, а потім ще раз перевіримо безкоштовну команду:

# cat large_file> / dev / null
# безкоштовно -м

Ми бачимо, що використання кеш-пам’яті буфера зросло з 667 до 1735 мегабайт - це приблизно 1 Гігабайт збільшення використання кеш-буфера.

Команда видалення кеш-пам’яті Proc Sys VM

Ядро Linux надає інтерфейс для скидання кешу. Давайте спробуємо ці команди і побачимо вплив на безкоштовну настройку.

# echo 1> / proc / sys / vm / drop_caches
# безкоштовно -м

Вище ми бачимо, що більша частина розподілу кешу буфера була звільнена за допомогою цієї команди.

Експериментальна перевірка того, чи працює кеп-пам’ять

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

Потрібно було 8.4 секунди, щоб прочитати файл.  Давайте ще раз прочитаємо його, що файл повинен знаходитися в кеші файлової системи, і подивимося, скільки часу це триває зараз.

Бум!  Потрібно було лише .2 секунди порівняно з 8.4 секунди, щоб прочитати його, коли файл не було кешовано.  Для перевірки давайте повторимо це ще раз, спочатку очистивши кеш, а потім прочитавши файл 2 рази.

Це спрацювало ідеально, як очікувалося.  8.5 секунд для некешованого зчитування та .2 секунди для кешованого зчитування.

Висновок

Кеш сторінок автоматично вмикається в системах Linux і прозоро пришвидшує введення / виведення, зберігаючи нещодавно використані дані в кеші.  Якщо ви хочете вручну очистити кеш, це можна зробити легко, надіславши команду echo до файлової системи / proc, вказуючи ядру, щоб скинути кеш і звільнити пам'ять, яка використовується для кешу.  Інструкції щодо запуску команди були показані вище в цій статті, а також показана експериментальна перевірка поведінки кешу до та після очищення.

Підручник Тінь розкрадача гробниць для Linux
Shadow of the Tomb Raider - дванадцяте доповнення до серії Tomb Raider - франшизи екшн-пригодницької гри, створеної Eidos Montreal. Гру сприйняли як к...
Як збільшити FPS в Linux?
FPS означає Кадри в секунду. Завданням FPS є вимірювання частоти кадрів при відтворенні відео або ігрових виставах. Простими словами кількість безпере...
Найкращі лабораторні ігри Oculus App
Якщо ви є власником гарнітури Oculus, то вам потрібно дізнатися про бокове завантаження. Бокове завантаження - це процес встановлення негарнітного вмі...