Всем здравствуйте. На прошлой неделе я ничего не кодил в свободное время, но мутил разные оптимизации на моих компьютерах, поэтому расскажу про оптимизации
На моём рабочем ноутбуке сейчас имеется 16 гигабайт оперативной памяти на борту. Как оказалось, 16 ГБ в 2025 году - это уже мало. Docker, Electron и Intellij скушали всю память. Поэтому я задумался, как максимально оптимизировать память на Линуксе
ZSWAP
Считаю, что эта оптимизация максимально полезная, и держу её включённой постоянно. Суть оптимизации заключается в том, что файл подкачки хранится на диске в сжатом виде. Было бы удобно, если Linux сам включал эту оптимизацию по умолчанию на всех компах, удовлетворяющих минимальным системным требованиям, но такого нет.
ZRAM
Сомнительная оптимизация, мне не понравилась. Причины две:
- Во-первых, нужно отдать некоторый фиксированный объём памяти под ZRAM. Какой? Никто не знает. Можно 30%, или 50%, или 70%. А сколько? Получается, ZSWAP несколько уменьшает мой общий объём оперативной памяти.
- Во-вторых, если уже есть ZSWAP, то зачем ещё ZRAM к нему в придачу? К тому же, они конфликтуют, и показывается неверная статистика, когда они оба включены.
Kernel Same Page Merging, KSM
Очень хитрая оптимизация, которую настроить весьма сложно. Страницы памяти с одинаковым содержимым объединяются в одну. Мне показалось, что эта оптимизация должна быть очень полезной, ибо проги на Electron и вкладки браузера все едут на Webkit, так что, их бы всех объединить... Но на практике имеем 500 MB сжатие на 20 GB памяти. Это примерно 2.5%. С одной стороны, мало. А с другой стороны, свободная память приходит из ниоткуда - круто же. Пока держу эту оптимизацию включённой. Но в случае когда ноут работает от батарейки, эта оптимизация не имеет смысла, ибо она грузит CPU в фоне.
BTRFS
Есть автоматическое сжатие для файловой системы. К сожалению, нет простого способа её включить через GUI, а нужно копаться в терминале. (в Windows делается одним нажатием в свойствах диска). Включил сжатие на весь мой диск, и профит очень приличный.
Итоги:
- ZSWAP 🟢 всегда включаем, кроме самых старых немощных компьютеров
- ZRAM 🟡 можно, но нужно ли?
- KSM 🟡 можно, но только не в портативе
- BTRFS 🟢 всегда включаем сжатие, кроме самых старых немощных компьютеров, конечно же
На этом пока всё. На этой неделе планирую напрягаться в LeetCode 🥵💻 и дойти до задачи номер 200