Оптимизация Linux десктопа для SSD в 2K19! (Путь жлоба на примере Fedora)

IDE, SATA, SCSI, внешние USB-HDD, SSD, USB-Flash накопители

Модератор: Модераторы разделов

Ответить
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Оптимизация Linux десктопа для SSD в 2K19!

Сообщение kasak »

Приветствую!
Данное руководство есть объединение информации в интернетах с пояснениями простым языком что да как.

Итак, лично я использую на десктопе Fedora 29 поэтому все пояснения будут даны для федоры, но всё тоже самое будет справедливо для
любого дистрибутива с systemd на борту.

TRIM
Для начала нам нужно включить trim. Ранее вы скорее всего видели руководства что для этого нужно включить опцию discard в fstab.
Это устаревший метод, называемый online discard или continuous trim. Не рекомендуется его использовать, так как во-первых он может вызвать ошибки в файловой системе:
https://bugs.launchpad.net/ubuntu/+source/fstrim/+bug/1449005
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=790520
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/ata/libata-core.c#n4519
а во-вторых он создаёт лишнюю нагрузку с которой должен бороться.
Вместо этого следует включить таймер:

Код: Выделить всё

sudo systemctl enable fstrim.timer
Данный таймер запускает команду fstrim -av раз в неделю. Это рекомендованный мануалами оптимальный промежуток времени для очистки мусора.

scheduler
По умолчанию на большинстве дистрибутивов планировщик дисковых операций установлен в CFQ.
Проверить это можно так:

Код: Выделить всё

$ cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
Нет смысла в cfq при использовании ssd, так как он отдаёт преимущество операциям ближе к началу диска, где hdd работают быстрее.
Чтобы автоматически менять планировщик при загрузке создаём файлик

Код: Выделить всё

/etc/udev/rules.d/60-schedulers.rules
С содержимым:

Код: Выделить всё

ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="noop"
Вообще эта операция не сказать чтоб сильно повысила скорость. Ну во всяком случае так делать логично. Это всё разумеется имеет смысл для десткопа. Если речь о скромном сервере, лучше использовать deadline.

swapiness
В ядре есть замечательная опция swapiness, которая может принимать значение от 0 до 100. Чем выше значение, тем активнее ядро использует подкачку.
В федоре имеется файлик

Код: Выделить всё

/etc/sysctl.d/99-sysctl.conf 
в который можно внести

Код: Выделить всё

vm.swappiness=1
Подробнее об этой переменной можно почитать тут: https://help.ubuntu.ru/wiki/ubuntu_optimization#%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_swappiness

Супержлоб: Выключаем логи.
Вот за меня могут критиковать, однако лично я вообще на своём десктопе никогда в лог не смотрю. А если и смотрю, меня интересует исключительно лог уже работающей системы а не то что было до ребута.
Прежде всего нам нужно заставить journald писать лог не на диск а в оперативку. Для этого открываем

Код: Выделить всё

/etc/systemd/journald.conf
и в опции [Journal] меняем:

Код: Выделить всё

[Journal]
Storage=volatile
По умолчанию эта опция установлена в auto (то есть запись лога в /var/log/journal)
волатиль будет писать лог в /run/log/journal а /run живёт в оперативке.
Всё, теперь можно вписывать

Код: Выделить всё

tmpfs			/var/log		tmpfs		defaults	0 0
в конец файла fstab.
Отдельная нота о безопасности:
Spoiler
Рекомендуется монтировать tmpfs с опциями nodev,nosuid для безопасности. Лично я не заморачиваюсь, т.к. во первых в исходном виде там этих опций не было. var относится к / который смонтирован без этих опций. А /var/log в любом случае доступен на запись только руту. Если рассматривать опасность взлома например через httpd который имеет свою папку логов с правом на запись, так зловреду куда проще будет провести запись в /var/www который в большинстве случаев относится к /.
И теперь следует починить вещи которые сломаются. Например сломается sssd и auditd потому что при запуске они не обнаружат свою папку для логов. Чтобы её починить нужно создать файл

Код: Выделить всё

/etc/tmpfiles.d/varlog.conf
С содержимым:

Код: Выделить всё

d /var/log/audit
d /var/log/sssd
Но лично я просто снёс sssd вместе со всеми потрохами т.к. он мне на десктопе никогда не понадобится.
Таким же макаром можно "починить" самбу, которая требует директорию /var/log/samba
или например апач который иногда любит писать в /var/log/httpd
Подробнее о tmpfiles.d можно почитать тут: https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html

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

Кэш браузеров
Всякие браузеры очень любят писать всякий кэш на диск в виде кучи мелких файлов. Что между прочем очень засоряет диск.
Пример:

Код: Выделить всё

[kasak@kasak-pc .cache]$ du -hs *
429M	google-chrome
Лично у меня имеется кроме ssd ещё и hdd, который я смонтировал на /home/kasak/HDD. И просто перенёс кэш на него:

Код: Выделить всё

ln -sf /home/kasak/.cache /home/kasak/HDD/.cache
Альтернативно можно задать место для кеша через переменную, создав файлик .profile в домашней директории с содержимым:

Код: Выделить всё

export XDG_CACHE_HOME=~/HDD/.cache
Если отдельного HDD нету, то вполне допустимо отправлять всё это в /tmp. Но это необязательно.

Данный мануал может быть полезен так же тем кто пытается накатить систему на sd карту. Потому как sd и так медленные, а если ещё и писать на них кучу лишнего, всё становится только хуже.
Хотелось бы посоветовать читателю, что все эти меры хоть и приносят пользу, но на самом деле мизерную. Лучше всего напичкать компьютер огромным количеством оперативы. 8 Гб в наше время уже не так много. Лучше бы конечно иметь хотя бы 16. Тогда и диск будет меньше насиловаться. Да и слухи о том что ссд умирают от ресурса преувеличены. Linux в этом плане ведет себя в тысячу раз лучше вездесущей паршивой винды, которая насилует диски как только может, и диски живут, даже самые простенькие.
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: Оптимизация Linux десктопа для SSD в 2K19!

Сообщение Vascom »

Не хочешь добавить это в FAQ?
https://russianfedora.github.io/FAQ/
Спасибо сказали:
Аватара пользователя
chitatel
Сообщения: 2063

Re: Оптимизация Linux десктопа для SSD в 2K19!

Сообщение chitatel »

kasak писал:
29.01.2019 21:00
а во-вторых он создаёт лишнюю нагрузку с которой должен бороться.
Вместо этого следует включить таймер:

Код: Выделить всё

sudo systemctl enable fstrim.timer
Данный таймер запускает команду fstrim -av раз в неделю. Это рекомендованный мануалами оптимальный промежуток времени для очистки мусора.
Можно в /etc/cron.weekly добавить эту команду. ИМХО, это понятнее, чем вещь_в_себе_системди.
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: Оптимизация Linux десктопа для SSD в 2K19!

Сообщение Vascom »

Этот таймер уже есть. Достаточно его включить и ничего добавлять не надо.
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: Оптимизация Linux десктопа для SSD в 2K19!

Сообщение kasak »

Vascom писал:
30.01.2019 04:02
Не хочешь добавить это в FAQ?
https://russianfedora.github.io/FAQ/
Даже не знаю нужна ли им такая информация. Я по привычке все свои идеи пишу на родной юниксфорум где я вырос и провёл детство)
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: Оптимизация Linux десктопа для SSD в 2K19!

Сообщение Vascom »

Если там такой информации нет и она полезна, то конечно нам нужна.
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: Оптимизация Linux десктопа для SSD в 2K19!

Сообщение kasak »

Vascom писал:
30.01.2019 20:46
Если там такой информации нет и она полезна, то конечно нам нужна.
Если кому-то информация полезна я только за :)
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: Оптимизация Linux десктопа для SSD в 2K19!

Сообщение s.xbatob »

На самом деле толку от такой оптимизации мало.
Мои знакомые, поставившие SSD о причине высказались однозначно: работающий ноут уронить не страшно ;)
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: Оптимизация Linux десктопа для SSD в 2K19!

Сообщение Vascom »

Ну это причина для тех "кто не в теме".
А так - оптимизация нужна, если в системе её нет по умолчанию.
Спасибо сказали:
Ответить