Centos очистить кэш памяти

Обновлено: 04.07.2024

Таким образом, вы установили Linux, обещая, что он требует меньше системных ресурсов, чем Windows. Тогда почему в вашей системе вдруг не хватает оперативной памяти?

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

Как просмотреть бесплатную оперативную память в Linux

Как и в любом другом случае в Linux, существует несколько способов проверить, сколько ОЗУ используется. Если вы работаете в коммерческой операционной системе, вам может быть проще открыть приложение, похожее на диспетчер задач Windows или монитор активности macOS. Название этой программы зависит от того, какую среду рабочего стола Linux вы используете.

В GNOME, наиболее широко используемой опции, откройте программу под названием Системный монитор. В KDE, аналогичной полнофункциональной альтернативе, используйте Konsole вместо. В других средах рабочего стола есть похожие инструменты под разными именами.

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

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

Терминал Linux, отображающий команду free

Для более тщательного изучения вашей оперативной памяти попробуйте следующее:

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

Если ваши цифры кажутся серьезными, может показаться, что Linux съел вашу оперативную память. Допустим, у вас есть 4 ГБ ОЗУ, и используется 3,9 ГБ. Только 0,1 ГБ, кажется, бесплатно для дополнительных приложений! Похоже, что вы находитесь в одной программе от остановки вашего компьютера.

Посмотри снова. На этот раз обратите внимание на колонку «доступно». Там вы можете обнаружить, что у вас есть 1 ГБ данных, открытых для приложений. Но как? Все сводится к тому, как Linux управляет и использует RAM

Как Linux использует оперативную память

То, как Linux использует ОЗУ, не сильно отличается от Windows и других операционных систем. Но разные системы представляют то, что происходит по-разному.

Когда ваш компьютер обнаруживает, что в настоящее время ОЗУ не используется, он выделяет часть этого пространства для кэширования диска. Таким образом, приложения хранят данные в более быстром доступе, благодаря чему система работает быстрее и более плавно. Когда другим приложениям требуется больше памяти, они берут необходимое количество из этого дискового кэша, как если бы он оставался без использования.

Другими словами, Linux хорошо использует это пустое пространство в свободное время. Зачем тратить всю эту свободную память впустую?

Чтобы узнать, сколько места используется таким образом, посмотрите на столбец «buff / cache». Это объем оперативной памяти, выделенной для буферов и кеша во время выполнения команды. Идея, что очистка этого пространства может помочь производительности, является распространенным заблуждением об оперативной памяти.

Разница между свободной и доступной оперативной памятью

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

  • Используемый: ОЗУ, которое в данный момент используется приложением.
  • Имеется в наличии: ОЗУ, которое может использоваться для кэширования диска, но может быть освобождено для приложений.
  • Свободно: ОЗУ, которое не используется приложением или кэшированием диска.

Как очистить кэш и буфер оперативной памяти

Допустим, по какой-то причине вы все еще хотите очистить ОЗУ, которое ядро ​​Linux использует для своих буферов и кеша. Чтобы было ясно, это негативно повлияет на производительность. Если вы хотите, чтобы ваша система работала оптимально, оставьте все как есть.

Вы собираетесь запускать эти команды как системный администратор.

Чтобы очистить кэш страницы, введите следующую команду:

Чтобы очистить зубные протезы и иноды, измените число на 2:

Чтобы очистить кеширование страниц, dentries и inode вместе, измените число на 3:

Если эти команды не улучшают работу вашего ПК, зачем их запускать? Это позволяет сравнить производительность вашего компьютера после внесения изменений без перезагрузки. Если вы не тестируете и не тестируете свой компьютер, нет особых причин для беспокойства.

Как просмотреть и закрыть программы

Означает ли все это, что вам не нужно проверять ОЗУ и управлять памятью в Linux? Не совсем.

Хотя Linux знает, как оптимизировать ОЗУ, это не означает, что ваши приложения это делают. Иногда ваш браузер забирает всю вашу память. Игра может зависнуть, не освобождая системные ресурсы. Средство просмотра изображений может зависнуть при попытке загрузить очень большое изображение.

Чтобы узнать, какие программы доставляют вашему компьютеру затруднения, попробуйте Топ команда:

Результаты будут выглядеть примерно так.

Терминал Linux с верхней командой

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

Кроме того, вы можете использовать убить всех Команда закрыть программу, используя ее имя.

Повышение производительности системы Linux еще больше

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

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

CentOS 5,6: Утечка памяти в файловый кэш (Cached) или как освободить cached memory

Как многие считают, в CentOS существует проблема утечки памяти в файловый кэш (Cached) иначе говоря закэшированная (cached memory) память. На самом то деле утечка памяти в Cached файловый кэш, а вернее выделение памяти под файловый кэш является нормальным поведением ядра Linux.

Ядро Linux разработано для использования памяти максимально эффективным образом, поэтому на работающем десктопе или сервере почти вся память которая не используется отводится под дисковый кэш (cached), а при нехватке оперативной памяти (RAM ) для приложений она будет взята обратно из cached. Пример значений утилиты top :

CentOS 5,6: Утечка памяти в файловый кэш (Cached) или как освободить cached memory

В поле Mem: . 88324k free видим 88 МВ доступной оперативной памяти (RAM ), а в поле Swap: . 80572k cached наблюдаем 80 МВ которые система выделила под обслуживание дискового КЭШа (Swap - своп). Как ранее упоминалось такой подход к распределению оперативной памяти является нормальным поведением ядра Linux, а если это кому-то ненравиться, то для освобождения закэшированной оперативной памяти в CentOS 5,6 можно воспользоваться приведённым ниже шел-скриптом:

Более тонкую настройку использования памяти можно выполнить, но не рекомендуется, на уровне ядра Linux через sysctl, просмотреть всё касаемо использования памяти sysctl -a | grep mem , справка man sysctl .

Следует помнить, что выделение свободной памяти под файловый кэш является нормальным поведением ядра Linux!

Почему данные всё равно уходят в Swap если памяти хватает?

Данные всё равно уходят в Swap даже если оперативной памяти хватает но, заметьте, уходят в Swap не сразу, а спустя какое-то время, например это могут быть данные какого-то демона выполняющегося раз в несколько дней по расписанию.

Если Swap переполнится сервер упадёт?

Обычно Swap переполнить сложно! Устаревшие, мало востребованные данные будут удалены, а на их место будут записаны новые. Конечно всему есть предел - в редких случаях падения сервера, причиной может послужить аномально большое количество приложений непрерывно обрабатывающие аномально большое количество данных - в таком случае сервер конечно "ляжет".

Можно ли очистить Swap

Да, Swap можно очистить выполнив из под супер пользователя команду swapoff -a , при этом прекращается использование всех файлов подкачки. После выполнения команды содержимое Swap загружается обратно в оперативную память, а раздел подкачки отключается.

После отключения Swap и загрузки содержимого Swap в оперативную память, снова включить Swap можно командой swapon -a . Иногда это может помочь вернуть отзывчивость системы без перезагрузок.

Ссылки по теме:

Автор: Олег Головский

Рекомендуемый контент

Вы не любите рекламу!? Напрасно!:) На нашем сайте она вовсе ненавязчивая, а потому для нашего сайта можете полностью отключить AdBlock (uBlock/uBlock Origin/NoScript) и прочие блокировщики рекламы! AdBlock/uBlock может препятствовать нормальной работе системы поиска по сайту, отображению рекомендуемого контента и прочих сервисов Google. Рекомендуем полностью отключить блокировщик рекламы и скриптов, а также разрешить фреймы (aka iframe).

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. Ссылки в шапки страницы.
Заранее всем спасибо.

Подскажите пожалуйста, каким способом лучше очищать оперативную память, и как проверить какой процесс ее использует? В последнее время оперативная память постепенно уходит, не могу понять на что именно тратится такой большой объем оперативной памяти.

Оценить 1 комментарий

Lynn

81b594e94a524ab69835f7b293a25e8c.jpg

kolu4iy: Ну у меня большая часть оперативной памяти в кеше, я так понимаю, мне ее не трогать ? А если она вся забьется?

Вы заметили, что при этом использование swap=0? А за 35 дней, если бы память текла, система бы скорее всего уже тормозила и свопилась.
Я уже писал выше: если какому-то процессу свободной памяти будет недостаточно, система первым делом отдаст кусок кеша, а не своп.
Это нормально, ядро линкус давно так работает. Тем самым оно уменьшает обращения к дисковой подсистеме, не в ущерб работе остальных процессов.
Кстати, вы заметили, что у вас около 30 java-процессов, каждый из которых затребовал по 34 Гб виртуальной памяти? У вас её много, но при этом заметно меньше чем 30*34 Гб. При этом реально процессы эту память сейчас не используют, но такая конфигурация может потенциально привести к проблемам следующего рода: конкретно с jetbrains я не работал, но подобная ситуация у меня была при некорректной настройке mysql - он выделял очень большой буфер на одно соединение. В итоге, когда нагрузка на веб-сервер росла, количество соединений с mysql тоже росло. Виртуальной памяти было потреблено тоже больше, чем доступно (vmcommit > vmlimit, который равен физической памяти + своп в первом приближении). VMCommit у меня был порядка 40-42 Гб при лимите в 36 (32 + 4 своп). Оно светило красненьким, и я не обращал внимания. В какой-то момент мои коллеги внесли небольшие изменения в запросы, и они стали заполнять эти буфера больше чем процентов на 10, а в итоге реально потребляемая память в какой-то момент превысила vmlimit, после чего сервер встал.
Потому, на всякий случай, проверьте либо настройки java при её запуске, либо уменьшите количество процессов на всякий случай. Лёгкое изменение сценария использования вашего сервера потенциально может привести к крашу процессов jetBrains.BuildServer, как минимум.

kolu4iy: как в моем случае лучше поступить? Я новичок в этом деле, и чем проще тем лучше)

Почитать документацию по билд серверу, поднастроить его. Остальное не трогать.

gr1mm3r

Проверить кто ест память - htop (настроек больше чем в простом top)
убить процесс kill , ну или перезагрузить его.

На кэш тратится. Не мешайте операционной системе работать - так положено. Не забудьте в sysctl.conf выставить vm.swappiness поменьше, например 10.
Посмотрите с помощью atop - если основной объем памяти (строка MEM) указан в третьей колонке (cache) - то это оно. Не трогайте.
Если какой-то конкретный процесс отожрал - то все предыдущие советы правильные.

Посмотрите с помощью atop - если основной объем памяти (строка MEM) указан в третьей колонке (cache) - то это оно.
Именно так как вы и написали, но в кеше уже большая часть оперативной памяти((((

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

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