Автоматическая очистка оперативной памяти linux

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 просматривает вашу оперативную память.

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

Бесплатные и доступные могут показаться синонимами, но есть техническое отличие. Первое — это память, которая вообще не используется. Последнее — это память, которая используется в данный момент, но при необходимости может легко открыться. Для повседневного использования, последнее действительно важно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

и обновление ядра Linux для повышения производительности

Источник

Нехватка оперативной памяти в Linux на рабочем ПК: оптимизация и действия при зависании

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

Типична такая ситуация: есть своп (swap, раздел подкачки), который начинает использоваться при нехватке оперативной памяти, и размещен он на HDD, то есть жестком диске с низкой скоростью чтения информации. В таких ситуациях операционная система начинает тормозить, подвисает курсор мыши, сложно переключиться в соседнюю tty и т.д. Почему? Потому что планировщик ядра Linux не может выполнить запрос на какое-то действие в запущенной программе, пока не получит доступ к ее оперативной памяти, выполнить следующее действие тоже не может, образовывается очередь из запросов на чтение с диска, и система «подвисает» именно потому, что обработка очереди происходит гораздо медленнее, чем этого хочет пользователь.

Если в такой момент запустить htop или uptime , то показатель Load Average (LA) будет очень высоким, несмотря на низкую загруженность ядер процессора. Сочетание высокого Load Average и низкой загрузки процессора говорят о забитой очереди процессора.

Читайте также:  Windows 10 не открываются некоторые приложения

Часто в интернете советуют изменить параметр ядра Linux vm.swappiness . Узнать его текущее значение на вашей системе можно так:

Ответ будет 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, и предпочитаю не лезть в нее руками.

Команда swapon -s выведет список всех задействованных свопов с указанием их приоритета. Первым используется тот своп, у которого приоритет выше. Если у вас уже есть дисковый своп и включен zram, то в случае с описанным выше пакетом-автокофигуратором приоритеты из коробки будут правильными. Например, у дискового свопа будет -1, а все /dev/zramN — 5. Таким образом, сначала используется zram, и только потом — диск.

Кстати, zram часто применяется на смартфонах, какую-либо на глаз заметную нагрузку на процессор при дефолтном методе сжатия lz4 он не создает.

Также приоритет свопа можно указать в /etc/fstab . Покажу на примере, как это сделано на моем рабочем компьютере с 6 ГБ ОЗУ.

Опцией монтирования pri=X заданы приоритеты свопов. Если еще включить zram, то картинка будет такой:

В первую очередь будет свопиться в zram, то есть сжиматься внутри оперативной памяти без использования внешнего устройства для свопа, во вторую — использовать небольшой своп на SSD. Почти никогда не будет использоваться 6 ГБ свопа на HDD, однако они понадобятся, если я захочу отправить компьютер в спящий режим в условиях большой загрузки оперативной памяти. (На самом деле у меня отключен zram).

Читайте также:  Фильтр клавиатуры windows 10

На офисных ПК с 4 ГБ ОЗУ (Xubuntu 16.04, 17.10) всегда ставлю пакет zram-config . Chromium, по наблюдениям, на глаз, очень хорошо сжимается в оперативной памяти, в результате чего zram позволяет сделать работу намного более комфортной без модернизации железа.

Быстро вырубить программу, перегружающую ОЗУ. Запас ОЗУ для SSH

Бывает такое, что даже при vm.swappiness=60 какому-то черту, как правило, браузеру, требуется очень много оперативной памяти, и система подвисает. Решается очень просто: сочетание клавиш Alt+SysRq(PrintScreen)+F заставляет oom_killer принудительно включиться и вырубить процесс, который на момент вызова занимает больше всего памяти. Строго 1 процесс на 1 вызов, и строго обязательно что-то будет убито. Если много раз подряд нажмете, то, скорее всего, перезапустится графическая сессия. Событие убиения процесса отражается в dmesg красным цветом.

Однако эта штука, называющаяся Magic SysRq, из коробки отключена в большинстве дистрибутивов, потому что непривилегированный пользователь может убить абсолютно любой процесс. За это отчечает параметр ядра kernel.sysrq , узнать его текущее значение можно так:

Для работы 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

Прежде чем приступить к практике, сперва поговорим о буферизации и кэш памяти в операционных системах 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. Ссылки в шапки страницы.
Заранее всем спасибо.

Источник

Оцените статью