Как очистить оперативную память linux
Настя и сборник весёлых историй (Декабрь 2021).
Table of Contents:
Как и любая другая операционная система, GNU / Linux реализовала управление памятью эффективно и даже более того. Но если какой-либо процесс пожирает вашу память и вы хотите очистить ее, Linux предоставляет способ очистить или очистить оперативную память.
Как очистить кэш в Linux?
Каждая система Linux имеет три варианта очистки кэша без прерывания каких-либо процессов или служб.
1. Очистите только PageCache.
# синхронизация; echo 1> / proc / sys / vm / drop_caches
2. Очистить зубные протезы и иноды.
# синхронизация; echo 2> / proc / sys / vm / drop_caches
3. Очистите PageCache, dentries и inode.
# синхронизация; echo 3> / proc / sys / vm / drop_caches
Объяснение вышеуказанной команды.
синхронизация очистит буфер файловой системы. Команда, разделенная символом “;” запускается последовательно. Оболочка ожидает завершения каждой команды перед выполнением следующей команды в последовательности. Как упомянуто в документации ядра, запись в drop_cache очистит кэш, не убивая ни одно приложение / службу, команда echo выполняет работу по записи в файл.
Является ли хорошей идеей освободить буфер и кэш в Linux, которые могут быть использованы ядром Linux?
Когда вы применяете различные настройки и хотите проверить, действительно ли они реализованы специально для расширенного теста ввода / вывода, вам может потребоваться очистить буферный кеш. Вы можете удалить кеш, как описано выше, без перезагрузки системы, т. Е. Простои не требуются.
Linux спроектирован таким образом, что он смотрит в дисковый кеш, прежде чем заглядывать в диск. Если он находит ресурс в кеше, то запрос не доходит до диска. Если мы очистим кеш, дисковый кеш будет менее полезен, так как ОС будет искать ресурс на диске.
Более того, это также замедлит работу системы на несколько секунд, пока очищается кеш и все ресурсы, необходимые ОС, снова загружаются в дисковый кеш.
Теперь мы будем создавать сценарий оболочки для автоматической очистки кэша ОЗУ ежедневно в 2 часа ночи с помощью задачи планировщика cron. Создайте скрипт оболочки clearcache.sh и добавьте следующие строки.
#! / bin / bash # Обратите внимание, что мы используем «echo 3», но это не рекомендуется в производстве, вместо этого используйте «echo 1» echo «echo 3> / proc / sys / vm / drop_caches»
# chmod 755 clearcache.sh
Теперь вы можете вызывать скрипт всякий раз, когда вам нужно очистить кэш оперативной памяти.
Теперь установите cron для очистки кеш-памяти каждый день в 2 часа ночи. Откройте crontab для редактирования.
0 2 * * * /path/to/clearcache.sh
Для получения более подробной информации о том, как выполнить работу, вы можете проверить нашу статью о 11 Cron Scheduling Jobs.
Это хорошая идея, чтобы автоматически очистить кэш-память ОЗУ на рабочем сервере?
При этом запланированный скрипт запускается и очищает все в кеше. Теперь все пользователи выбирают данные с диска. Это приведет к сбою сервера и повреждению базы данных. Так что очищайте ram-кеш только тогда, когда это необходимо, и знайте свои шаги, иначе вы системный администратор Cargo Cult.
Как очистить пространство подкачки в Linux?
Также вы можете добавить вышеупомянутую команду к скрипту cron выше, после понимания всех связанных с этим рисков.
Теперь мы будем объединять обе вышеуказанные команды в одну команду, чтобы создать правильный скрипт для очистки RAM Cache и Swap Space.
Пока это все, если вам понравилась статья, не забудьте предоставить нам свой ценный отзыв в комментариях, чтобы сообщить нам, что вы думаете, это хорошая идея, чтобы очистить кэш оперативной памяти и буфер в производственных и корпоративных системах?
Linux ест вашу оперативную память? Как управлять вашей памятью
Таким образом, вы установили Linux, обещая, что он требует меньше системных ресурсов, чем Windows. Тогда почему в вашей системе вдруг не хватает оперативной памяти?
Не паникуйте! Linux не ест вашу оперативную память. Чтобы понять, что происходит, нам нужно взглянуть на то, как Linux управляет памятью.
Как просмотреть бесплатную оперативную память в Linux
Как и в любом другом случае в Linux, существует несколько способов проверить, сколько ОЗУ используется. Если вы работаете в коммерческой операционной системе, вам может быть проще открыть приложение, похожее на диспетчер задач Windows или монитор активности macOS. Название этой программы зависит от того, какую среду рабочего стола Linux вы используете.
В GNOME, наиболее широко используемой опции, откройте программу под названием Системный монитор. В KDE, аналогичной полнофункциональной альтернативе, используйте Konsole вместо. В других средах рабочего стола есть похожие инструменты под разными именами.
Для подхода, который работает независимо от среды вашего рабочего стола, вы можете обратиться к командной строке. Откройте Терминал приложение и введите следующую команду.
Вы увидите результаты, которые выглядят примерно так. Числа будут меняться в зависимости от объема оперативной памяти, установленной на вашем компьютере, и количества активных программ.
Для более тщательного изучения вашей оперативной памяти попробуйте следующее:
Приведенная выше команда загружает тот же файл, что свободно Команда использует, чтобы увидеть, сколько памяти доступно на вашем компьютере.
Если ваши цифры кажутся серьезными, может показаться, что Linux съел вашу оперативную память. Допустим, у вас есть 4 ГБ ОЗУ, и используется 3,9 ГБ. Только 0,1 ГБ, кажется, бесплатно для дополнительных приложений! Похоже, что вы находитесь в одной программе от остановки вашего компьютера.
Посмотри снова. На этот раз обратите внимание на колонку «доступно». Там вы можете обнаружить, что у вас есть 1 ГБ данных, открытых для приложений. Но как? Все сводится к тому, как Linux управляет и использует RAM
Как Linux использует оперативную память
То, как Linux использует ОЗУ, не сильно отличается от Windows и других операционных систем. Но разные системы представляют то, что происходит по-разному.
Когда ваш компьютер обнаруживает, что в настоящее время ОЗУ не используется, он выделяет часть этого пространства для кэширования диска. Таким образом, приложения хранят данные в более быстром доступе, благодаря чему система работает быстрее и более плавно. Когда другим приложениям требуется больше памяти, они берут необходимое количество из этого дискового кэша, как если бы он оставался без использования.
Другими словами, Linux хорошо использует это пустое пространство в свободное время. Зачем тратить всю эту свободную память впустую?
Чтобы узнать, сколько места используется таким образом, посмотрите на столбец «buff / cache». Это объем оперативной памяти, выделенной для буферов и кеша во время выполнения команды. Идея, что очистка этого пространства может помочь производительности, является распространенным заблуждением об оперативной памяти.
Разница между свободной и доступной оперативной памятью
Теперь, когда вы все схвачены, все еще легко запутаться. Я понимаю. Вот как Linux просматривает вашу оперативную память.
Бесплатные и доступные могут показаться синонимами, но есть техническое отличие. Первое — это память, которая вообще не используется. Последнее — это память, которая используется в данный момент, но при необходимости может легко открыться. Для повседневного использования, последнее действительно важно.
Как очистить кэш и буфер оперативной памяти
Допустим, по какой-то причине вы все еще хотите очистить ОЗУ, которое ядро Linux использует для своих буферов и кеша. Чтобы было ясно, это негативно повлияет на производительность. Если вы хотите, чтобы ваша система работала оптимально, оставьте все как есть.
Вы собираетесь запускать эти команды как системный администратор.
Чтобы очистить кэш страницы, введите следующую команду:
Чтобы очистить зубные протезы и иноды, измените число на 2:
Чтобы очистить кеширование страниц, dentries и inode вместе, измените число на 3:
Если эти команды не улучшают работу вашего ПК, зачем их запускать? Это позволяет сравнить производительность вашего компьютера после внесения изменений без перезагрузки. Если вы не тестируете и не тестируете свой компьютер, нет особых причин для беспокойства.
Как просмотреть и закрыть программы
Означает ли все это, что вам не нужно проверять ОЗУ и управлять памятью в Linux? Не совсем.
Хотя Linux знает, как оптимизировать ОЗУ, это не означает, что ваши приложения это делают. Иногда ваш браузер забирает всю вашу память. Игра может зависнуть, не освобождая системные ресурсы. Средство просмотра изображений может зависнуть при попытке загрузить очень большое изображение.
Чтобы узнать, какие программы доставляют вашему компьютеру затруднения, попробуйте Топ команда:
Результаты будут выглядеть примерно так.
Теперь, когда вы обнаружили проблемную программу, что вы можете с этим поделать? Одним из вариантов является использование убийство команда. Для этого запишите номер PID, который появился рядом с программой при вводе Топ. Вам это понадобится.
Кроме того, вы можете использовать убить всех Команда закрыть программу, используя ее имя.
Повышение производительности системы Linux еще больше
В отличие от многих вещей в жизни, память вашего компьютера более или менее управляет собой. Здесь мы рассмотрели способы увидеть, что происходит, и, когда необходимо принять меры, вступить. Теперь вы знаете, как узнать, сколько памяти используется и какие программы ее используют. Вы также можете предпринять несколько шагов, чтобы остановить деятельность, занимающую много места.
Но вышеперечисленные инструменты вряд ли соответствуют тому, что доступно в наборе инструментов Linux. Смотрите наши статьи по ускорению медленного компьютера с Linux
и обновление ядра Linux для повышения производительности
Нехватка оперативной памяти в Linux на рабочем ПК: оптимизация и действия при зависании
На любой операционной системе часто не хватает оперативной памяти. Рассмотрим, как и сэкономить на увеличении аппаратных ресурсов машины с Linux, и продолжить более-менее комфортно пользоваться компьютером с Linux в условиях нехватки памяти.
Типична такая ситуация: есть своп (swap, раздел подкачки), который начинает использоваться при нехватке оперативной памяти, и размещен он на HDD, то есть жестком диске с низкой скоростью чтения информации. В таких ситуациях операционная система начинает тормозить, подвисает курсор мыши, сложно переключиться в соседнюю tty и т.д. Почему? Потому что планировщик ядра Linux не может выполнить запрос на какое-то действие в запущенной программе, пока не получит доступ к ее оперативной памяти, выполнить следующее действие тоже не может, образовывается очередь из запросов на чтение с диска, и система «подвисает» именно потому, что обработка очереди происходит гораздо медленнее, чем этого хочет пользователь.
Ответ будет 60 почти наверняка. Это значит, что ядро Linux начинает свопить редко используемые страницы оперативной памяти, когда использование свободной оперативной памяти достигает 100%-60%=40%. Часто встречаются рекомендации поставить, например, vm.swappiness=10, чтобы своп не начинал использоваться, пока загрузка ОЗу не достигнет 90%. На самом деле не нужно трогать vm.swappiness, вы не умнее разработчиков ядра Linux, которые не просто так поставили 60 по умолчанию. Почему?
Представьте, что у вас всего 4 ГБ оперативной памяти, из них прямо сейчас занято 3 ГБ, vm.swappiness=10, своп на жестком диске (HDD) занят на 0%, и вы открываете тяжелый сайт в браузере, для чего требуется больше, чем имеющийся свободный 1 ГБ, например, 2 ГБ. Операционная система начинает в экстренном порядке отправлять в своп как минимум 0.5 ГБ (а по факту больше), чтобы можно было выделить браузеру необходимое количество оперативной памяти. Эта процедура становится самой приоритетной задачей, и придется пожертвовать даже движениями курсора мыши, чтобы ее выполнить как можно быстрее. Вы ждете. Проходит 5 минут, и система развисает, потому что окончила процедуру 100% загрузки очереди доступа к медленному жесткому диску, на котором размещена оперативная память (своп). При дефолтном vm.swappiness=60 редко используемые страницы памяти сбрасываются в своп заблаговременно, и резкого зависания на 5-10 минут не происходит.
UPD. В комментарии подсказывают, что это не точное описание работы vm.swappiness.
zram и приоритеты свопов
Рекомендую включить zram — прозрачное сжатие содержимого оперативной памяти. В Ubuntu это автоматизировано, достаточно установить пакет:
sudo apt install zram-config
Здесь и далее для дистрибутивов Rosa, Fedora все то же самое, но вместо zram-config —
Сервис systemd zram-config на Ubuntu будет автоматически добавлен в автозагрузку при установке пакета и запущен при перезагрузке системы. Для запуска вручную:
sudo systemctl start zram-config
sudo systemctl stop zram-config
Удаления из автозапуска:
sudo systemctl disable zram-config
Добавление в автозапуск:
sudo systemctl enable zram-config
При запуске zram-config берет число, равное 50% всего объема оперативной памяти, далее делает по одному виртуальному устройству /dev/zramN, где N начинается с 0, для каждого ядра процессора, а объем каждого /dev/zramN равен 50% всей оперативной памяти, деленному на количество ядер процессора. Так делалается для распараллеливания сжатия содержимого оперативной памяти по ядрам процессора; насколько я знаю, на современных ядрах Linux достаточно одного устройства /dev/zramN, а распараллелится оно само, но меня полностью устраивает искоробочная работа zram-config, и предпочитаю не лезть в нее руками.
Кстати, zram часто применяется на смартфонах, какую-либо на глаз заметную нагрузку на процессор при дефолтном методе сжатия lz4 он не создает.
Опцией монтирования pri=X заданы приоритеты свопов. Если еще включить zram, то картинка будет такой:
В первую очередь будет свопиться в zram, то есть сжиматься внутри оперативной памяти без использования внешнего устройства для свопа, во вторую — использовать небольшой своп на SSD. Почти никогда не будет использоваться 6 ГБ свопа на HDD, однако они понадобятся, если я захочу отправить компьютер в спящий режим в условиях большой загрузки оперативной памяти. (На самом деле у меня отключен zram).
Быстро вырубить программу, перегружающую ОЗУ. Запас ОЗУ для SSH
Бывает такое, что даже при vm.swappiness=60 какому-то черту, как правило, браузеру, требуется очень много оперативной памяти, и система подвисает. Решается очень просто: сочетание клавиш Alt+SysRq(PrintScreen)+F заставляет oom_killer принудительно включиться и вырубить процесс, который на момент вызова занимает больше всего памяти. Строго 1 процесс на 1 вызов, и строго обязательно что-то будет убито. Если много раз подряд нажмете, то, скорее всего, перезапустится графическая сессия. Событие убиения процесса отражается в dmesg красным цветом.
Для работы Alt+SysRq+F нужно kernel.sysrq=1. Для этого отредатируем параметры ядра, расположенные в файлах /etc/sysctl.conf (обычно симлинк на /etc/sysctl.d/99-sysctl.conf) и /etc/sysctl.d/*.conf. Лучше всего создать отдельный файл:
sudo nano /etc/sysctl.d/99-dumalogiya.conf
Нажмем Ctrl+O, Enter для сохранения.
В случае с браузером Chromium Alt+SysRq(PrintScreen)+F будет вырубать по одной вкладке, не закрывая сам браузер, что очень удобно.
Сочетания клавиш Magic SysRq перехватываются напрямую ядром Linux, поэтому работают даже когда из-за очереди процессора подвисает X-сервер.
Linux: утилита free и очистка кеша памяти
Утилита free – один из основных инструментов администратора, позволяющая отобразить статистику используемой и свободной памяти сервера.
Информацию free получает из файла /proc/meminfo – динамически изменяющего в процессе работы системы.
О разделе proc и файловой системе procfs более подробно можно почитать в статье Linux: описание и назначение файловой системы proc и каталога /proc.
Рассмотрим информацию, которую выводит free :
Будучи запущенной без ключей – она отобразит статистику в килобайтах.
Для вывода информации в других единицах – используются ключи:
-b – в байтах;
-m – мегабайтах;
-g – гигабайтах.
Например – обновлять каждые 5 секунд:
Mem – физическая память;
Swap – виртуальная память, или Paging.
total – общее количество памяти;
used – реально использующая в данный момент и зарезервированная системой память;
free – свободная память ( total минус used );
shared – Shared memory или Разделяемая память, можно посмотреть командой ipcs ;
buffers – буферы в памяти – страницы памяти, зарезервированные системой для выделения их процессам, когда они затребуют этого, так же известна как heap-memory;
cached – файлы, которые недавно были использованы системой/процессами и хранящиеся в памяти на случай если вскоре они снова потребуются.
Тут used = 4745 megabytes. Общее количество buffers и cached памяти – 3331 мегабайт. Итого, реально занятая процессами и системой память – лишь
1413 (1 мегабайт “потерялся” из-за подсчёта в мегабайтах, а не байтах/килобайтах).
Аналогично подсчитывается и реально свободная память, только buffers и cached добавляются к ней (так как на самом деле – это не занятые страницы):
Что бы отобразить реально свободную память одной командой – можно воспользоваться такой командой:
Как очистить кеш памяти в Linux?
Можно выполнить такую команду:
Увы, показать насколько реально можно освободить таким образом памяти не получится, т.к. машина совсем не нагружена. Тем не менее – разница видна:
Однако, смысл выполнять такую очистку есть лишь в случае реальных проблем с памятью.
Для FreeBSD есть аналогичная утилита freecolor :
UPD Нагуглил ссылку на этот пост, в треде>>> есть еще пример:
Drop_caches, очистите оперативную память вашей системы с терминала
В следующей статье мы увидим, как чистая оперативная память из терминала Ubuntu. По умолчанию в Gnu / Linux есть очень эффективный способ управления оперативной памятью на наших компьютерах. Благодаря этому мы получаем лучшую производительность ресурсов, доступных в нашей системе. Такой подход иногда может сбивать с толку пользователей, поскольку ОЗУ кажется полностью израсходованным, несмотря на закрытие всех приложений.
Gnu / Linux использует доступную память для кэширования приложений с жесткого диска с целью добиться более быстрого чтения. Это преимущество вызывает разочарование, особенно для системных администраторов, которые устраняют проблемы с ПК. Изменения, внесенные в системные файлы на жестком диске, могут не читаться. Это происходит потому, что Gnu / Linux загружает их из ОЗУ. Поэтому, чтобы решить эту проблему, рекомендуется очистить оперативную память вместо перезагрузки ПК.
Очистите оперативную память в Ubuntu, Linux Mint и производных с помощью drop_caches
Мы собираемся запустить терминал (Ctrl + Alt + T) и написать следующие команды:
Для начала мы давай авторизуемся как root. Тогда команда ‘синхронизировать‘собираюсь очистить буфер файловой системы. Таким образом, мы будем уверены, что все кэшированные объекты будут освобождены. Иначе могут быть проблемы. Команда ‘эхо‘выполняет запись в файл и drop_caches очищает кеш без удаления какого-либо приложения / службы. Вы должны сразу увидеть, что ОЗУ освободилось.
Если вам нужно очистить кеш диска, «… Эхо> 3…«Безопаснее в компании и в оборудовании на этапе производства, поскольку«… Эхо 1>….»Удалит только страницу. Не рекомендуется использовать третий вариант «… Echo 3>…»В производстве, пока вы не узнаете, что делаете, поскольку очистит кеш страницы, dentries и inodes. Опция «… Echo 0>…»Ничего не будет выпускать, а опция«… Echo 2>…»Освободит только inodes и dentries.
Эта операция это может замедлить работу системы на несколько секунд, при этом кеш очищается, и все ресурсы, требуемые ОС, загружаются обратно в кеш диска.
Gnu / Linux разработан таким образом, что он проверяет кеш диска перед поиском на диске. Если он находит ресурс в кеше, то запрос не попадет на диск. Если мы очистим кеш, операционная система будет искать запрошенный ресурс на диске..
Автоматизировать освобождение ОЗУ с помощью задач Cron
Теперь, когда мы знаем, как освободить память на наших компьютерах, мы можем захотеть автоматизировать процесс стирания памяти на регулярной основе. Это легко сделать с помощью cron задачи. Эту задачу следует использовать только на настольных компьютерах и ноутбуках.
1 STEP
Для начала запустим терминал (Ctrl + Alt + T) и напишем следующую команду в установить vim, или чтобы каждый использовал свой любимый редактор:
2 STEP
Теперь мы собираемся создать .sh файл называется eraseram.sh. В него мы добавим скрипт:
3 STEP
Если мы воспользуемся редактором vim, нам придется нажмите клавишу ‘esc’, а затем клавишу ‘i’ для входа в режим INSERT. Далее мы добавим следующий скрипт.
Как только все будет написано, мы сохраняем файл sh и выходим из текстового редактора vim. Для этого нажмем «esc» напишем : Wq и мы нажмем Enter. Vim сохранит файл sh и выйдет в терминал. В этом примере я сохранил сценарий в корневой домашней папке.
4 STEP
Вернувшись в терминал, мы напишем следующую команду в предоставить разрешения на чтение / запись:
5 STEP
Пришло время вызвать команду кронтаб:
6 STEP
Предположим, мы хотим очищать оперативную память каждый день в 1:XNUMX. Это на любой вкус.
Файл sh, мы можем переместить его в нужное место, но мы должны запомнить путь, поскольку это тот, который мы должны будем указать предыдущей команде.
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Убунлог » Ubuntu » Drop_caches, очистите оперативную память вашей системы с терминала







