- Как освободить память Linux
- Как освободить кэш память в Linux
- Виды кэша в Linux
- Нужно ли очищать кэш вообще?
- Автоматическая очистка кэша
- Настройка размера кэша памяти
- Как очистить память подкачки
- Как освободить память занимаемую процессами
- Выводы
- [KDE][Fedora] Много оперативной памяти.
- [KDE][Fedora] Много оперативной памяти.
- Hardware Overview
- Minimum System Configuration
- Recommended System Configuration
Как освободить память Linux
Как и любая другая операционная система, Linux очень эффективно работает с оперативной памятью. Доступная память свободно распространяется между процессами, неиспользуемые страницы сбрасываются в раздел подкачки на диске, а в случае переполнения памяти, срабатывает специальный механизм, встроенный в ядро, который анализирует все процессы и уничтожает виновника.
Когда любой процесс пишет данные на диск, они сохраняются ядром в отдельном кэше. Очень часто этот кэш занимает достаточно много места. В этой статье мы рассмотрим как освободить память в Linux, а точнее, как очистить созданный программами кэш, а также как вычислить и завершить процессы, которые потребляют больше всего памяти.
Как освободить кэш память в Linux
В каждом дистрибутиве Linux можно использовать три команды чтобы очистить кэш памяти linux. Причем вам не придется завершать никаких процессов. Сначала войдите в консоль от имени суперпользователя:
Затем выполните одну из команд. Очистка кэша PageCache:
sync; echo 1 > /proc/sys/vm/drop_caches
sync; echo 2 > /proc/sys/vm/drop_caches
Очистка inode и dentrie и PageCache:
sync; echo 3 > /proc/sys/vm/drop_caches
А теперь давайте рассмотрим что происходит при выполнении этих команд.
Утилита sync заставляет систему записать все кэшированные, но еще не записанные данные на диск. Это нужно чтобы освободить как можно больше памяти. По умолчанию данные после записи на диск не удаляются из кэша, это нужно для того, чтобы программа могла быстрее их считать при необходимости.
Если не выполнить команду sync мы тоже освободим немного места, но после ее выполнения результат будет лучше.
Символ разделения ; дает знать оболочке, что перед тем как выполнить другую команду, нужно дождаться завершения работы первой. Последняя команда echo 1 > /proc/sys/vm/drop_caches записывает значение 1 в файл /proc/sys/vm/drop_caches. Это дает сигнал ядру, что нужно очистить выбранный нами вид кэша.
Виды кэша в Linux
А теперь давайте рассмотрим виды кэша, которые позволяют очищать эти команды, а также как все это работает.
PageCache или страничный кэш — это место, куда ядро складывает все данные, которые вы записывали или читали из диска. Это очень сильно ускоряет работу системы, так как если программе во второй раз понадобятся те же данные, они просто будут взяты из оперативной памяти. Но по этой причине этот кэш занимает больше всего места.
Посмотреть размер страничного кэша можно с помощью утилиты free. Здесь он показан в последней колонке — cached:
Такой кэш чистить эффективнее и безопаснее всего.
Кэш inode и dentrie тоже относится к файловой системе. Только в него записываются не сами данные, а структура файловой системы, расположение файлов и папок. При запросе расположения файла или содержимого папки ядро формирует специальные структуры, в которых есть вся эта информация. При следующем запросе структуры будут уже сохранены в памяти. Для каждой файловой системы существует свой кэш inode и общий кэш dentrie.
Этот кэш занимает очень мало памяти. Данные представлены в байтах, и как видите, это очень мало. Посмотреть его можно командой:
cat /proc/slabinfo | egrep dentry\|inode
Очищать его чтобы освободить память linux не рекомендуется, так как памяти потребляется немного, а на новое сканирование файловой системы идет относительно много времени.
Нужно ли очищать кэш вообще?
Во-первых, если занято очень много памяти, вы можете очистить страничный кэш, особенно если это он занимает много памяти. Во-вторых, очистить кэш памяти linux может понадобиться, если вы изменяли какие-либо настройки файловой системы или ядра, а теперь хотите проверить как это отразилось на скорости операций чтения/записи. В таком случае можно очистить все кэши и сделать это без перезагрузки, что очень удобно.
Операционная система Linux разработана таким образом, что перед тем как обратиться к диску, будет просмотрен кэш диска, и если там есть нужные данные, к диску обращений не будет. Если очистить кэш Linux то операционная система будет работать немного медленнее, поскольку ей придется искать данные на диске.
Автоматическая очистка кэша
Давайте рассмотрим как автоматически очистить кэш памяти ежедневно в два часа ночи с помощью планировщика заданий cron.
Сначала создадим bash скрипт со следующим содержимым:
sudo vi /usr/local/bin/clearcache.sh
#!/bin/bash
sync ; echo 1 > /proc/sys/vm/drop_caches
Очищать будем только страничный кэш, так как он занимает больше всего. Другие виды трогать не будем, чтобы зря не понижать производительность системы.
Дальше сделайте скрипт исполняемым:
sudo chmod 755 /usr/local/bin/clearcache.sh
Осталось добавить задание в планировщик cron. Для этого выполните команду:
И в открывшемся редакторе добавьте строчку:
0 2 * * * /usr/local/bin/clearcache.sh
Теперь этот скрипт будет выполняться каждую ночь и выполнять очистку памяти, чтобы сервер мог работать нормально.
Настройка размера кэша памяти
Куда удобнее не очищать кэш каждый раз, а настроить ограничение, при превышении которого система сама будет удалять лишние страницы. Вы не можете явно ограничить сколько мегабайт может система использовать под кэш. Будет использоваться вся доступная память по мере необходимости, но можно настроить скорость удаления просроченных страниц из кэша.
За это отвечает файл /proc/sys/vm/vfs_cache_pressure. Он содержит относительный показатель, насколько агрессивно нужно удалять страницы из кэша. По умолчанию установлен параметр 100. Если его уменьшить ядро будет реже удалять страницы и это приведет к очень быстрому увеличению кэша. При нуле страницы вообще не будут удаляться. Если значение больше 100, размер кэша будет увеличиваться медленнее и неиспользуемые страницы будут сразу удаляться.
Например, сделаем минимальный размер кэша:
echo 1000 > /proc/sys/vm/vfs_cache_pressure
Не забудьте, что это очень сильно снизит производительность вашей системы, потому что вместо кэша данные будут читаться из диска.
Как очистить память подкачки
Пространство подкачки очистить очень просто. Для этого выполните:
Имейте в виду, что при очистке swap, все данные будут перенесены обратно в оперативную память.
Как освободить память занимаемую процессами
Если в вашей системе нет памяти и кэш здесь ни при чём, следует завершить несколько процессов, потребляющих больше всего памяти. Для этого сначала надо вычислить такие процессы. Чтобы это сделать можно воспользоваться утилитой ps:
ps -e -o pid,user,%mem,command —sort %mem
Как видите, больше всего здесь памяти занимает chromium. Теперь вам надо его завершить. Идентификатор процесса, по которому его можно завершить отображается в первой колонке. Поэтому:
Более подробно о том как завершить процесс читайте в этой статье. Таким образом, вы можете освободить память от процессов, которые занимают больше всего памяти, а потом уже настроить zram или swap для того, чтобы память не переполнялась.
Выводы
Вот и все. Вы уже знаете очистить кэш linux и освободить память. Не забудьте, что все команды, приведенные в этой статье нужно выполнять от имени суперпользователя, иначе ничего работать не будет. Если остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
[KDE][Fedora] Много оперативной памяти.
Не нравится что после старта, с выключенным nepomuk, вот столько памяти уходит:
Может я отвык, у кого сколько fedora в такой же конфигурации кушает памяти?
И что с этим можно сделать?
Я так и знал, что первый комментарий, как всегда будет блестать неадекватностью.
> неадекватностью.
? очен даже адекватно. fedora разжирнела.
Хорошо, другие доводы будут?
Fedora 15 много просит при установке, для работы анаконды, а KDE там обычный, как везде.
> Fedora 15 много просит при установке,
. вспомнил про yam и его ~500MiB RAM.
> Хорошо, другие доводы будут?
x86_64. Попробуй prelink, strip, поковыряй список демонов . автостарт.
Не надо ориентироваться на ничем не подтвержденные слухи. Обсудили же уже, 500 Мб там не было, была какая-то неизвестная виртуалка с непонятно какими процессами, на которой одному из процессов не хватило памяти. Вариантов «почему» — тьма.
[KDE][Fedora] Много оперативной памяти.
Вопрос не читал, но не поможет.
2ТС:
Выпиливай всякие аконади, хлам в автозапуске, юзай prelink.
Ты бы хоть показал что у тебя там в процессах… Тем временем тут сейчас тебе нагадают. Ну и + x86_64.
автостарт поправь.
установил наверное сквид и мускул.
chkconfig —list
Там уже итак всё отстрипано.
fedora 15 amd64 с gnome 3:
> -/+ buffers/cache: 1184 1833
linux скатывается в 7ёрочку максимальную.
linux скатывается в 7ёрочку максимальную.
Скорее в неё скатываются DE. Сам линукс почти ничего не жрёт по современным меркам.
Странная у вас федорка. Вот кривая мандурива без говнокед на 11-й день аптайма:
free -m total used free shared buffers cached Mem: 2016 1178 838 0 109 387 -/+ buffers/cache: 681 1335 Swap: 4102 327 3774 uptime 09:37:03 up 11 days, 16:55, 14 users, load average: 0.10, 0.10, 0.05
> Сам линукс почти ничего не жрёт по современным меркам.
Действительно напутал.
PS 14MiB в tty1. 24MiB с xmonad + xmobar.(~x86)
сейчас на работе установлена ubuntu c unity, браузер и прочее запущено, вот сколько потребляет:
убрал, осталось prelink использовать
как ни странно, ничего подозрительного, позже покажу. Ну x86_64 не настолько сильно влияет.
> Ну x86_64 не настолько сильно влияет.
с 21MiB до 16MiB в tty1.(~amd64 -> ~x86)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2402 ivan.mir 20 0 1224m 209m 42m S 0.3 6.9 1:55.66 chromium-browse 1906 ivan.mir 20 0 1344m 128m 28m S 3.0 4.3 2:35.64 gnome-shell 2240 ivan.mir 20 0 259m 75m 4124 S 1.0 2.5 1:01.40 skype 5388 ivan.mir 20 0 1709m 66m 21m S 6.0 2.2 2:59.33 rhythmbox 2426 ivan.mir 20 0 1274m 53m 25m S 1.7 1.8 1:13.16 chromium-browse 6185 ivan.mir 20 0 707m 50m 36m S 0.0 1.7 0:02.00 chromium-browse 2239 ivan.mir 20 0 701m 49m 15m S 0.0 1.6 0:06.08 pidgin 6347 ivan.mir 20 0 1274m 48m 26m S 1.3 1.6 0:03.67 chromium-browse 2234 ivan.mir 39 19 987m 46m 5032 S 0.0 1.5 11:02.01 tracker-miner-f 2435 ivan.mir 20 0 1266m 44m 23m S 1.0 1.5 1:07.66 chromium-browse 2429 ivan.mir 20 0 1267m 43m 23m S 1.3 1.4 1:07.07 chromium-browse 2432 ivan.mir 20 0 1267m 43m 23m S 1.3 1.4 1:07.27 chromium-browse 2438 ivan.mir 20 0 1264m 38m 22m S 1.3 1.3 1:06.86 chromium-browse 2232 ivan.mir 20 0 404m 30m 4336 S 0.0 1.0 1:33.64 tracker-store
Если запустить еволюшен, цундербёрд или симанки, то в топе по памяти окажется ещё один процесс, откушавший 40%-50% памяти 8).
вон оно что, у меня то сразу после загрузки системы, без запущенных приложений, типо хрома и прочее.
Hardware Overview
Fedora 38 provides software to suit a wide variety of applications. The storage, memory and processing requirements vary depending on usage. For example, a high traffic database server requires much more memory and storage than a business desktop, which in turn has higher requirements than a single-purpose virtual machine.
Minimum System Configuration
The figures below are a recommended minimum for the default installation. Your requirements may differ, and most applications will benefit from more than the minimum resources.
- 2GHz dual core processor or faster
- 2GB System Memory
- 15GB unallocated drive space
Users of system equipped with the minimum memory of 2GB may want to consider Fedora Spins with less resource intense Desktop Environments
Fedora 38 can be installed and used on systems with limited resources for some applications. Text, VNC, or kickstart installations are advised over graphical installation for systems with very low memory. Larger package sets require more memory during installation, so users with less than 768MB of system memory may have better results performing a minimal install and adding to it afterward.
For best results on systems with less than 1GB of memory, use the DVD installation image.
Recommended System Configuration
The figures below are recommended for the default x86_64 Workstation installation featuring the Gnome desktop . Your requirements may differ, depending on Desktop Environment and use case.
Fedora 38 can be installed and used on systems with limited resources for some applications. Text, VNC, or kickstart installations are advised over graphical installation for systems with very low memory. Larger package sets require more memory during installation, so users with less than 768MB of system memory may have better results preforming a minimal install and adding to it afterward.
For best results on systems with less than 1GB of memory, use the DVD installation image.