Здравствуйте. У меня в ноутбуке с linux установлено 16 гб ОЗУ. Когда запускаю несколько программ, редактор кода, 40 вкладок в хроме, то всё начинает тормозить и новые программы просто не могут открыться, и в сведениях об использовании памяти написано свободно около 150 - 200 мб. При этом кэш дисков никогда меньше чем 60% от общего количества не занимает, всегда только больше (смотрю это в там же).
Из той информации, что я нашел - дисковый кэш должен отдавать часть памяти каждый раз, когда программам памяти не хватает. Но повторюсь меньше 60% он не занимает, т.е. как я понял ничего он не отдаёт. Кто шарит, подскажите, я этот момент правильно понял?
Хочется уменьшить размер памяти, который дисковый кэш может занимать, но не могу найти инфы как это сделать. Установлен SSD диск, конечно не такой быстрый как RAM, но при таком раскладе лучше пусть с диска читает инфу, чем оперативку занимает.
Александр, не ругается. На несколько секунд появляется иконка программы и исчезает. Если что-нибудь из запущенных программ закрыть, то новая программа откроется
tehnazavr, запустите программу не с рабочего стола или ярлыка, а в консоли. А по выводу в консоли будет понятно, куда смотреть и чего программе не хватает.
Видимо как таковой проблемы не было. Всё решилось само собой, повторить эти зависания пока не получилось. После перезагрузки ноутбук больше не тормозил
для начала убедитесь что проблема действительно в дисковом кеше(не swap), попробуйте его сбросить когда всё начинает тормозить: sync && echo 1 > /proc/sys/vm/drop_caches
запуск от суперпользователя
еще с кешем можно сразу почистить inode и dentrie sync && echo 3 > /proc/sys/vm/drop_caches
(данная команда включает в себя и команду приведенную выше)
п.с.
если проблема действительно окажется в дисковом кеше, то можно настроить систему так чтобы она более агрессивно его очищала установив параметр vfs_cache_pressure больше 100(по дефолту), например: echo 500 > /proc/sys/vm/vfs_cache_pressure
(будет действовать до перезагрузки)
чтобы зафиксировать данный параметр в системе и после перезагрузки создайте, например, файл /etc/sysctl.d/60-sysctl.conf с таким содержимым: vm.vfs_cache_pressure=500
затем перезагрузите систему или просто перезагрузите сам файл конфигурации: sudo sysctl -p /etc/sysctl.d/60-sysctl.conf
Чтобы убедиться что изменения вступили в силу посмотрите вывод команды: sudo sysctl -a | grep vfs_cache_pressure