2015-04-25 4 views
9

Только узнал эти 3 новые методы из https://unix.stackexchange.com/questions/87908/how-do-you-empty-the-buffers-and-cache-on-a-linux-system:Что такое pagecache, dentries, inodes?


Чтобы освободить кэш страниц:

# echo 1 > /proc/sys/vm/drop_caches 

Освободить dentries и дескрипторы:

# echo 2 > /proc/sys/vm/drop_caches 

Чтобы освободить кэш страниц, dentries и дескрипторы:

# echo 3 > /proc/sys/vm/drop_caches 

Я пытаюсь понять, что такое pagecache, dentries и inodes. Что это такое?

ли освободив их также удалить полезный Memcached и/или Redis кэш?

-

Почему я задаю этот вопрос? ОЗУ сервера Amazon EC2 заполнялось в течение дней - от 6% до 95% в течение 7 дней. Мне нужно запустить двухнедельный cronjob, чтобы удалить этот кеш. Затем использование памяти снова уменьшится до 6%.

+0

Эти подходы не должны иметь ничего общего с memcached или redis. Эти два приложения будут поддерживать свои собственные механизмы внутреннего кэширования, чтобы обеспечить их функциональность конечным пользователям, и влияют ли на них 3 системные операции - деталь реализации Memcached или redis. – jdi

+0

Я немного опоздал на эту тему, но было бы хорошо знать, как вы определяете, что 95% ОЗУ используется в вашем vm. Часто возникает заблуждение, что вся физическая память используется, когда она находится именно в буферах + кеш, которые мы обсуждаем здесь. См. [Link] (http://www.linuxatemyram.com/) для хорошего объяснения этих столбцов. – bfloriang

+0

Подробный мониторинг Amazon EC2 сообщает об использовании памяти (ОЗУ), и он использовал 95% использования. Иногда даже 98-99% –

ответ

8

С некоторым упрощением позвольте мне попытаться объяснить, в чем заключается контекст вашего вопроса, потому что есть несколько ответов.

похоже, вы работаете над кэшированием содержимого структур каталогов. inode в вашем контексте - это структура данных, представляющая файл. A dentries - это структура данных, представляющая каталог. Эти структуры могут использоваться для создания кэша памяти, который представляет файловую структуру на диске. Чтобы получить прямое перечисление, ОС может перейти в зубные щетки - если каталог там - перечислить его содержимое (серия inodes). Если нет, перейдите на диск и прочитайте его в памяти, чтобы его можно было использовать снова.

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

Ваши команды смывают эти буферы.

+0

Итак, я понимаю, что их очистка не повлияет на полезный кеш-память в redis и/или memcache? –

+0

Наверное, нет. В любом случае вам действительно не нужно очищать кеши в большинстве случаев. – user3344003

+1

Я на самом деле ... Моя AWS ec2 RAM идет от 5% до 95% примерно за неделю и никогда не спускается (все еще не знаю почему) ... Мне нужно очищать эти кешины раз в неделю, используя a cronjob –

1

Распространенное заблуждение состоит в том, что важна «Свободная память». Память предназначена для использования.

Так давайте проясним, что из:

  • Там используется память, которая где важные данные хранятся, и если это достигает 100%, что ты мертв
  • Тогда есть кэш/буфер, который используется пока есть место для этого. Факультативная память позволяет быстрее обращаться к дисковым файлам. Если у вас закончилась свободная память, это просто освободится и позволит вам напрямую обращаться к диску.

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

Если у вас действительно закончилась нехватка памяти, то есть, если ваша «используемая память» высока, и вы начинаете видеть использование подкачки, тогда вы должны что-то сделать.

HOWEVER: есть известная ошибка, запущенная на экземплярах AWS, при этом кеш-память хранит память без видимых причин. Это четко описано и решено в this blog.

Мой собственный опыт с этой ошибкой заключается в том, что кеш «зубной щетки» потребляет как «использованную», так и «кэшированную» память и, похоже, не выпускает ее вовремя, в конечном итоге вызывает обмен. Сама ошибка может потреблять ресурсы в любом случае, поэтому вам нужно изучить ее.

+0

Ваша ссылка приводит к странице, которая убивает мой браузер: malware beware. –

+0

эта ссылка мертва –

5

Я пытаюсь понять, что такое pagecache, dentries и inodes. Что это такое?

user3344003 уже дал точный ответ на этот конкретный вопрос, но все же важно отметить, что структуры памяти динамически распределены.

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

Нет, эти кеши не влияют на любые кеши, поддерживаемые любыми приложениями (включая redis и memcached).

Мой RAM сервер Amazon EC2 получал заполнены в течение дня - от 6% до до 95% в течение 7 дней. Мне нужно запустить bi-weekly cronjob, чтобы удалить этот кеш. Затем использование памяти снова уменьшится до 6%.

Возможно, вы неправильно интерпретируете ситуацию: ваша система может просто эффективно использовать свои ресурсы.

Для упрощения вещей: «свободная» память также может рассматриваться как «неиспользуемая» или даже более драматичная - пустая трата ресурсов: вы платили за нее, но не используете ее. Это очень неэкономичная ситуация, и ядро ​​linux пытается сделать «более полезным» использование вашей «свободной» памяти.

Часть его стратегии предполагает использование ее для сохранения различных типов дисковых операций ввода-вывода с использованием различных кэшей памяти с динамическим размером. Быстрый доступ к кеш-памяти экономит «медленный» доступ к диску, поэтому часто это полезная идея.

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

Ядро Linux может даже решить поменять память в противном случае на незанятый процесс на диск (место подкачки), освободив оперативную память, которая будет использоваться для «более важных» задач, вероятно, также может использоваться как некоторый кеш.

До тех пор, пока ваша система не будет активно переключаться в/из, есть небольшая причина вручную сбрасывать кеши.

Обычный чехол для «ручного сброса» этих кешей предназначен исключительно для сравнения: ваш первый тест производительности может запускаться с «пустыми» кешами и, таким образом, давать плохие результаты, а второй запуск будет показывать гораздо лучшие результаты (из-за к предварительно разогретым кешам). Сбрасывая свои кеши до запуска любого теста, вы удаляете «разогретые» кеши, и поэтому ваши контрольные показатели более «справедливы», чтобы их сравнивать друг с другом.