В предыдущей статье, я объяснил зачем и как настроить работу Linux со swap файлом. И данные действия вполне оправданы, если Linux установлен на домашний ПК или ноутбук с относительно достаточным количеством памяти. То есть, память позволяет запустить все необходимые для работы программы одновременно, не испытывая явного недостатка В ОЗУ.
Логично не останавливаться на достигнутом, ведь Linux - дает великое поле для экспериментов и кастомизации системы под свои нужды.
Почему бы не подстроить политики работы с кэшем под свои нужды?
Эта идея показалась мне вполне разумной, и я закопался в поисках параметров, которые можно регулировать и опыта других людей в оптимизации работы кэша.
К моему великому удивлению оказалось, что большая часть рекомендаций и описаний влияния найденных параметров часто противоречит друг другу. Советчики чаще всего откровенно плохо владеют вопросом и дальше метода "спортивного тыка" дело, как правило" не доходит. А почти единственное подробное и доходчивое описание назначения параметров настройки кэша в Linux, внезапно, дала Microsoft, в статье о настройке кэша в Linux для Azure NetApp Files. Вот это поворот.
Я честно озаботился разобраться и попробовать все предложенное. И исходя из полученных результатов не буду вас грузить описанными там переменными, и даже часто рекомендуемую "советниками" переменную vfs_cache_pressure упомяну всего один раз. Сейчас, собственно.
В Linux действительно много различных кэшей и можно управлять их приоритетами относительно других и размерами. Можно, но реально требуется это для оптимизации работы с памятью серверов, которые выполняют вполне определенные и узкоспециализированные задачи. Там да, изменением нескольких переменных можно разительно изменить суммарную производительность и отзывчивость сервисов.
А с ПК пользователя или его ноутбуком ситуация совсем неоднозначная. Так уж вышло, что ПК используются очень во многих различных сценариях работы. Это и работа с текстами, и монтирование видео, и редактирование фото, и игры... Зачем я это сказал? Будем считать, что про игры я не упоминал. Так вот, сценариаев применения ПК в жизни масса. И затачивать политики кэширования Linux лишь под один-два из них неразумно.
Вы же не станете отламывать от швейцарского ножа (мультитул) несколько деталей, ради того, чтобы он стал легче? Он на то и мультитул, чтобы уметь шатко-валко выполнять множество различных операций, а не отлично, но одну. Вот ПК - примерно такой же мультитул.
При недостатке ОЗУ (RAM) все попытки настройки политик кэширования Linux приводят к улучшению поведения ОС в одном сценарии работы, и пропорциональному ухудшению работы в другом. Происходит постоянное перетягивания одеяла, которое, как известно, никогда ни к чему хорошему не приводит.
В результате тестов и экспериментов я пришел к единственному выводу:
Если вы желаете работать на ПК, или играть... Упс, я опять это сказал... Причем желаете это делать с комфортом. В вашем ПК должно быть достаточно оперативной памяти (ОЗУ или RAM). И других ресурсов тоже должно быть достаточно.
Тут хорошо подходит бородатый анекдот про решение в пятилетку проблематики производства из говна сливочного масла. Когда результатом было: "Форма и упаковка разработаны, но от вкуса, цвета и запаха пока избавиться не удалось."
Настройка кэша Linux - точно не та "серебряная пуля", что позволит изменить столь прискорбный факт.
Причем, когда вы хотите понять, а сколько же вашему ПК необходимо памяти для комфортного использования стоит следовать следующей логике:
Для начала следует в самый разгар творческой деятельности на ПК заглянуть в диспетчер задач и записать суммарное потребление оперативной памяти запущенными программами. Причем желательно проделать подобное несколько раз, выведя средние величины.
Предположим, что у вас получилось 17 гигабайт, как у меня. Тогда допускаем, что бибилиотеки, которые могут потребоваться данным программам тоже будут кешированы LInux и займет это примерно половину высчитанного - 9Гб. Суммарно: 26Гб.
И это еще не все. Для нормального функционирования ОС и кэша, необходимого ей желательно заложить еще 4Гб.
А теперь неожиданное: Надо просуммировать средний размер документов, с которыми работают ваши программы в разгар творческого процесса, и для верности умножить его на два. У меня вышло примерно 25ГБ.
Плюс-минус два лаптя по карте мне нужно 64Гб ОЗУ. Думаю, понятно, как я получил эту цифру. Это еще повезло, что я имею дело с небольшими роликами в 4К. Если бы монтировал полный метр, то 64ГБ ОЗУ обойтись не смог бы.
Проверил. Действительно, стоит установить в ПК меньше 64ГБ ОЗУ и комфортно работать уже не получается. И никакие настройки кэширования не помогают от слова совсем.
По секрету игроманам: Вам в качестве документа можно учитывать тот файл игры, в котором расположены текстуры и прочие увесистые плюшки, что делают игру потрясающей в плане визуала. Еменно его компьютер должен позволять закэшировать в пямять полностью помимо необходимой памяти для самой игры.
Вот тогда можно будет забыть о многих фризах и длительных загрузках между локациями.
На памяти лучше не экономить, если вы дорожите своим комфортом.
_______________________________________________________________________________
Если статья оказалась полезной, то возможно и другие статьи моего цикла оптимизаций производительности системы вам пригодятся: