Где хранится кэш linux

Обновлено: 04.07.2024

Разбираемся в кэшах Linux систем и Swaping-е

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Разбираемся в кэшах Linux систем и Swaping-е

Доброго время суток.
Только начал осваивать линукс. Поэтому периодически возникают достаточно специфические вопросы, на которые я не смог найти ответы быстрым поиском по гуглу.
Есть сервер на базе Ubuntu-Server. На нем 12Gb оперативной памяти, а так же swap раздел объемом 20Gb. Решил разобрать по поводу кэша в линукс системах.

Мне кажется эта тема станет полезной не только для меня, но и для других пользователей операционных систем Unix и, наверное, даже для тех, кто далеко не новичок.

Для контроля за оперативной памятью, \\\\\\\"коробочного решения\\\\\\\" я знаю следующие методы: (Нажать на spoiler для просмотра)

Вывод команды free -m:

Вывод cat /proc/meminfo:

Изучение документации помогло кое что понять.

Во первых swap . Если swaping включен (man swapon, /proc/swaps) не используемые страницы в памяти будут скидываться в виртуальную область на жестком диске, тем самым освобождая физическую память (оперативную) и давая ресурсы для других приложений. Когда требуется обратиться к тем страницам, которые содержатся в свопе, они считываются с жесткого диска, помещаются в оперативку и обрабатываются.

Свапингом можно управлять, к примеру установить планку (значение свободной оперативки) при котором не используемые страницы начнут скидываться на жесткий диск.
Делать это можно посредством занесения значения в файл /proc/sys/vm/swappiness. По умолчанию значение 60. Оно в процентах. Что бы было проще понять приведу пример:
Если у меня оперативная память забивается больше чем на 40%, то не используемые страницы начинают писать на жесткий диск в swap. Если поставим значение 5% то swap начнет использоваться когда оперативная память забьется на 95%.

Еще, насколько я понял, можно то же самое сделать но с ограничением по количеству доступных страниц оперативки. Делается это в файле /proc/sys/vm/freepages
Файл имеет 3 значения через пробел в строчку. .
Первое значение - это предел, при котором система перестанет хранить в памяти не используемые страницы и начнет все скидывать в свап
Второе значение - это количество свободных страниц в оперативке, при котором система начнет \\\\\\\"суетится\\\\\\\" по в документации, на сколько я понял. Т.е. начнет активно использовать свап.
Третье значение - это количество свободных страниц в оперативке при котором система не свапит не используемые страницы.

Есть еще способ управление непосредственно самими страницами в оперативной памяти по средствам файла /proc/sys/vm/kswapd
Так же 3 значения.
Первое значение - максимальное количество страниц которые будут выбрасываться из памяти за раз. Если обрабатываются очень большие объемы данных с использованием свапа, мне кажется стоит увеличивать это значение.
Второе значение - количество попыток свапинга страницы. Не совсем понимая глубокую физику процесса сваппинга не знаю как влияет это значение и на что.
Третье значение - тоже не сосем понял предназначение, но если всё же понял из документации - это количество страниц которые будут считываться из/в оперативку за один запрос на отпраку в свап или извлечение из свапа. Ставить слишком много думаю не разумно. Тут скорее надо исходить из специфики железа (шина оперативной памяти, частота, двухканальные и прочие режимы работы)

Во вторых существует еще 2 вида кэша, что представляет для меня особый интерес.
Первый кэш из них - это кэш inode и dentry дескрипторов.
На сколько я понял из англоязычной документации это кэш который помещается в оперативную память при обращение к каталогам в файловой системе, которые грубо говоря являются файлами, содержащими как раз эти дескрипторы:
- (метаданные файлов внутри этого каталога) inode - время последнего доступа, права, UID/GID, размер. Не содержат имен, тем самым не имеют привязку к конкретному файлу, который представляет собой для ОС - набор байт.
- dentry - привязывают inode файла и имя файла в ФС.
И логически рассуждая, я пришел к выводу что кэш inode и dentry увеличивают время доступа к конкретному файлу, т.е. метаданные и связи хранятся в оперативки и считывать их с блочных устройств не надо.
Управлять этим кешем (очищать) можно по средстам принудительного ввода в файл /proc/sys/vm/drop_caches значения 2. К примеру так: echo 2 > /proc/sys/vm/drop_caches
Но как включить этот кэш я не нашел, на сколько я могу судить по командам мониторинга оперативки выше, он не используется. Можно посмотреть информацию о этих кешах через cat /proc/slabinfo | grep inode/dentry. Еще можно так: cat /proc/sys/fs/dentry-state,
cat /proc/sys/fs/inode-state

Второй кэш - это pagecache .
И вот тут я не совсем понял для чего он вообще и что из себя представляет. Непосредственно именно он забивает оперативную память. Хорошо понятно что это не swap. И по названию это какие то страницы оперативной памяти. Но какие и страницы чего?
Наверно к этому кэшу можно отнести следующие настройки: /proc/sys/vm/buffermem
Указывается в процентах общее количество системной буферной памяти. Имеет три значения идущие в строчку и разделенные проблемами. Из документации понял что:
первое значение - минимальный уровень буферной памяти
второе значение - уровень буферной памяти, который будет работать в том случае, если вы уберете скажем линейку оперативки, т.е. произойдет уменьшение общего количества оперативной памяти (?) так или нет не знаю.
третье значение - уровень максимально доступной буферной памяти.

Очистка этого кэша производится вводом в файл /proc/sys/vm/drop_caches значения 1
Сразу очищается почти вся оперативная память. Сбоев в работе не замечено. После очистки необходимо выполнять sync.
Кстати значение \\\\\\\"0\\\\\\\" для файла /proc/sys/vm/drop_caches установит значение по дефолту, а значение \\\\\\\"3\\\\\\\" очистит и inode+dentry кэш + pagecache.

Если вы заметили, что в домашней папке вашего ПК с Linux не хватает места, возможно, вам необходимо очистить файлы кеша. Но как очистить файлы кеша в Linux?

Расположение файла кеша

Многие файлы кеша хранятся в .cache папку в домашнем каталоге. У каждого пользователя ОС Linux есть .cache папка, и со временем она может накапливаться и занимать место. В этом руководстве мы покажем вам, как очистить эту папку. Однако, прежде чем мы перейдем к вопросу о том, как очистить .cache папку, нам необходимо установить Disk Usage Analyzer.

Установить анализатор использования диска

Чтобы установить инструмент Disk Usage Analyzer в Linux, вам необходимо установить пакет Baobab. Откройте окно терминала, нажав Ctrl + Alt + T или Ctrl + Shift + T на клавиатуре. Затем следуйте инструкциям по установке из командной строки, приведенным ниже, чтобы запустить Disk Usage Analyzer.

Ubuntu

Чтобы установить Disk Usage Analyzer в Linux, используйте следующее Квартира команда в окне терминала.

Debian

В Debian Linux вы сможете установить и запустить Disk Usage Analyzer со следующими Apt-get команда в терминале.

Arch Linux

Те, кто использует Arch Linux (а также Manjaro), смогут довольно легко установить приложение Disk Usage Analyzer с помощью следующих Pacman команда ниже.

Fedora

Вы используете Fedora Linux? Возможно, у вас уже установлен Disk Usage Analyzer. Если нет, вы сможете заставить его работать с Dnf команда ниже.

OpenSUSE

Те, кто использует OpenSUSE Linux, смогут установить программу Disk Usage Analyzer, используя следующие Zypper команда ниже.

Просмотр размера папки кэша

Теперь, когда программа Disk Usage Analyzer установлена ​​в Linux, мы можем использовать ее, чтобы узнать, насколько велик ваш .cache папка, чтобы определить, нужно ли удалить всю папку или нам просто нужно удалить отдельные папки.

Откройте Disk Usage Analyzer на рабочем столе, выполнив поиск в меню приложения. Или откройте панель быстрого запуска с помощью Alt + F2 на клавиатуре и введите baobab команда для запуска. Затем следуйте пошаговым инструкциям ниже.

Шаг 1: В анализаторе использования диска найдите значок «Домашняя папка». В Disk Usage Analyzer он находится в разделе «Этот компьютер». Когда вы щелкнете по нему, приложение Disk Usage Analyzer начнет сканировать ваш домашний каталог на предмет файлов и папок. Наберитесь терпения и позвольте ему сканировать.

Шаг 2: После того, как Disk Usage Analyzer завершит сканирование вашего ПК с Linux на наличие файлов, вы увидите кольцевой график справа и древовидную структуру папок слева. Найдите .cache в древовидной структуре папок и щелкните по нему.

Шаг 3: Как только вы нажмете на .cache папки, вы увидите точный ее размер на кольцевом изображении справа. Вы также сможете узнать размер .cache папка.

Чтобы увидеть размер отдельных папок внутри .cache папку, щелкните стрелку рядом с .cache в древовидной структуре слева. Он отсортирует папки по размеру.

Очистить файлы и папки кеша

Очистить папку кэша можно прямо в Анализаторе использования диска. Чтобы очистить кеш, следуйте пошаговым инструкциям ниже.

Шаг 1: Щелкните «Главная» в анализаторе использования диска, затем щелкните .cache , после того, как приложение Disk Usage Analyzer завершит сканирование.


Шаг 2: Щелкните стрелку рядом с .cache папка для просмотра всех вложенных папок внутри. Анализатор использования диска отсортирует все подпапки по их размеру.


Или щелкните правой кнопкой мыши на .cache саму папку с помощью мыши и выберите «Переместить в корзину», чтобы полностью удалить все файлы кеша на вашем ПК с Linux. Не переживай! Удаление этой папки совершенно безопасно, и программы создадут ее заново, когда потребуется.


Шаг 4: Откройте файловый менеджер Linux. Затем, открыв файловый менеджер на рабочем столе, нажмите «Корзина», чтобы получить доступ к удаленным файлам вашего ПК.

Шаг 5: Очистите «Корзину», чтобы удалить все файлы кеша, которые вы ранее удалили с помощью Disk Usage Analyzer, и удалите их без возможности восстановления. Или выберите «восстановить», чтобы отменить удаление кеша.

linux-logo

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

Свободная память — неиспользуемая память — это потраченная память впустую.

Очистка кеша и буфер в Linux

Если вы хотите очистить в системе кеш и буфер, то вы можете использовать эту цепочку команд:

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

  • Чтобы освободить pagecache:
  • Чтобы освободить иноды:
  • Чтобы освободить pagecache, dentries и inodes:

ПРИМЕЧАНИЕ. Вышеупомянутые команды должны выполняться от root пользователя.

Если вы пытаетесь сделать это с помощью sudo , вам нужно немного изменить синтаксис, примерно так:

Либо в таком формате:

Увидеть, что находится в буферах и кеше

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

fincore

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

Очистка swap в Linux

первым делом смотрим сколько занимает наш swap места:

В данном случае swap занимает 26 Мб из 8 Гб

Очистим swap следующей командой:

Затем используйте команду, чтобы посмотреть освободился ли swap:

Из вывода видно что swap теперь занимает 0 Мб.

Очистка memcached в Linux

Есть несколько путей очистить кеша memcached.

Первый — это очистка с помощью подключения через telnet. Используем следующие команды:

  • localhost — хост где находится memcached (можно указывать и IP-адрес хоста).
  • 11211 — порт который использует memcached.

Чтобы узнать порт и IP-адрес в терминале где установлен memcached наберите следующее:

Второй — перезапустить сервис memcached:

Третий — установить утилиту memcflush для очистки кешей:

Теперь очищаем кеш memcached

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.

Favorite

Добавить в избранное

Главное меню » Linux » Как очистить кеш в Linux

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

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

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

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

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

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

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

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

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

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

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

Читать Как подключиться по SSH к контейнеру Docker

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

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

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

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

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

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

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

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

Заключение

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

APT кеш – это то место, куда сохраняются файлы с каждого обновления.

Для определения количества места, занимаемого APT кешем, нужно ввести команду в терминале:

Очистка APT кеша. Определение количества места, занимаемого APT кешем

Очистка APT кеша. Определение количества места, занимаемого APT кешем

Для того, чтобы отчистить APT кеш, нужно ввести в терминале следующую команду:

Очистка APT кеша

Удаление ненужных пакетов и зависимостей

Для удаления пакетов, которые больше не требуется, нужно ввести в терминале следующую команду:

Для удаления зависимостей, которые больше не требуется, нужно ввести в терминале следующую команду:

Подтверждение удаления ненужных зависимостей

Удаление ненужных зависимостей

Команда для удаления ненужных зависимостей, оставшихся от Flatpak пакетов:

Подтверждение удаления ненужных зависимостей, оставшихся от Flatpak пакетов

Подтверждение удаления ненужных зависимостей, оставшихся от Flatpak пакетов Ненужные зависимости, оставшихся от Flatpak пакетов, удалены

Удаление неиспользуемых программ

Скорее всего у вас есть программы и игры, которыми вы не пользуетесь или используете очень редко.

Программы и игры в дистрибутивах Linux можно удалить через центр программ или посредством команды в терминале.

Удаление через центр программ Discover (можно удалять программы и игры, установленные посредством Deb и Snap пакетов):

Удаление программы (установленной посредством Deb пакета) через центр программ Discover

Удаление программы (установленной посредством Deb пакета) через центр программ Discover

Удаление программы (установленной посредством Snap пакета) через центр программ Discover

Удаление программы (установленной посредством Snap пакета) через центр программ Discover

Удаление программы (установленной посредством Snap пакета) через центр программ Discover 2

Удаление программы (установленной посредством Snap пакета) через центр программ Discover 2

Удаление программы, установленной посредством Deb пакета

Команда для удаления программы/игры посредством терминала:

package – название программы

Удаление программы посредством терминала. Подтверждение удаления программы

Удаление программы посредством терминала. Подтверждение удаления программы

Удаление программы посредством терминала. Программа удалена

Удаление программы посредством терминала. Программа удалена

Команда для удаления сразу нескольких программ/игр посредством терминала:

Удаление сразу нескольких программ посредством терминала. Подтверждение удаления программ

Удаление сразу нескольких программ посредством терминала. Подтверждение удаления программ

Удаление сразу нескольких программ посредством терминала. Программы удалены

Удаление сразу нескольких программ посредством терминала. Программы удалены

Удаление программы, установленной посредством Snap пакета

Команда для удаления сразу нескольких программ/игр (Snap) посредством терминала:

Процесс удаления Snap пакета

Snap пакеты удалены

Удаление программы, установленной посредством Flatpak пакета

Команда для удаления программы/игры (Flatpak) посредством терминала:

Подверждение удаления Flatpak пакета

Flatpak пакет удалён

Удаление старых пакетов программ

После каждого обновления пакетов (программ/игр/ядер/прочего) остаются их старые версии/зависимости/конфигурационные файлы, поэтому их нужно удалять, чтобы освободить место.

Удаление старых пакетов программ посредством менеджера пакетов Synaptic

Для того чтобы удалить старые пакеты программ, нужно открыть менеджер пакетов Synaptic, далее нажмите на кнопку “Состояние”, далее выберите вкладку “Неустановленные (остались файлы настроек)”

Удаление старых пакетов программ посредством Synaptic

Удаление старых пакетов программ посредством Synaptic

Далее нужно выбрать все пакеты: нажимаем на любой пакет, а потом CTRL+A (выделяем все пакеты). Далее нужно нажать правой кнопкой мыши для вызова контекстного меню, далее выбираем пункт “отметить для полного удаления”. Далее нужно нажать на кнопку “Применить” или Правка —> Применить отмеченные изменения

Удаление старых пакетов программ посредством Synaptic. Отметка всех выделенных пакетов через контекстное меню

Удаление старых пакетов программ посредством Synaptic. Отметка всех выделенных пакетов через контекстное меню

Удаление старых пакетов программ посредством Synaptic. Пакеты отмечены для удаления

Удаление старых пакетов программ посредством Synaptic. Пакеты отмечены для удаления

Удаление старых конфигурационных файлов программ посредством терминала

Команда для просмотра списка всех пакетов, от которых остались старые конфигурационные файлы:

Просмотр списка всех пакетов, от которых остались старые конфигурационные файлы

Просмотр списка всех пакетов, от которых остались старые конфигурационные файлы

Команда для удаления старых конфигурационных файлов определённой программы:

Удаление конфигурационных файлов определённой программы

Удаление конфигурационных файлов определённой программы

Команда, чтобы удалить все старые конфигурационные файлы:

Удаление всех старых конфигурационных файлов

Поиск дубликатов файлов

Поиск и удаление дубликатов файлов с помощью графической программы FSlint (имеются и другие инструменты для очистки системы от мусора)

Для начала нужно выбрать папку для сканирования на наличие дубликатов, нажав на кнопку “Add”. Далее нужно выбрать вкладку “Дубликаты” и нажать на кнопку “Найти”.

После завершения поиска дубликатов, будут отображены найденные дубликаты файлов, вы можете их удалить или объединить:

Поиск дубликатов файлов посредством графической программы FSlint

Поиск дубликатов файлов посредством графической программы FSlint

Очистка системы посредством графических программ

Программа BleachBit позволяет производить очистку: APT кеша, данные различных программ (Firefox, Thunderbird, LibreOffice и других), временных файлов и прочего мусора.

BleachBit. Очистка APT кеша

BleachBit. Очистка данных программы Firefox

BleachBit. Очистка системы в целом

Программа Stacer позволяет производить очистку: кеша пакетов, отчёты о сбоях, системные журналы, кеш приложений и корзину.

Читайте также: