Prev Предыдущее сообщение   Следующее сообщение Next
Старый 22.02.2014, 19:18   #1
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию Оптимизация работы Linux+SSD с большим объёмом RAM

Cобрал большинство рекомендаций по продлению жизни SSD, и ускорению работы системы в целом, в один мануал.
эта инструкция вам НЕ подходит, если у вас <= 4 GB RAM (рекомендуемый объём - 8 GB и выше), не SSD и не Linux


1. Разделы диска (/etc/fstab)

1.1. Параметры монтирования разделов

Нужно отключить запись времени доступа к файлам и директориям (access time), для этого в /etc/fstab нужно добавить к нужным разделам параметр noatime.
Также нужно добавить параметр discard, чтобы работала функция контроллера TRIM.
Предварительно обязательно прогуглите особенности вашего SSD! я не активировал опцию discard у себя, т.к. встречал сообщения, что у Samsung 840 Pro (который я использую) функцию TRIM контроллер выполняет автоматически, а опция discard только добавляет лишнюю нагрузку - следовательно, с включённым discard конкретно этот SSD умрёт быстрее из-за большей нагрузки.
Если вы не уверены в своём SSD, лучше не добавлять опцию discard, а периодически запускать команду fstrim вручную или по крону.
Для запуска по крону создайте файл /etc/cron.daily/trim и пропишите в него:
Код:
#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG
Частоту запуска (daily или hourly) и необходимые разделы (/, /home, etc) настройте в зависимости от вашей системы и ваших предпочтений.
Нежелательно одновременно включать параметр discard и делать fstrim, выберите что-то одно, в зависимости от вашего SSD, лучше использовать параметр discard.

Помните, что для корректной работы параметра discard нужно ядро версии 2.6.33 и выше!

Примеры записей в /etc/fstab:
Код:
 /dev/sda1    /  ext4   defaults,noatime,discard  0       1
 /dev/system/home     /home                ext4       noatime,acl,user_xattr        1 2
(нижняя строчка используется у меня, без discard, потому что самсунг)

Если у вас используется файловая система BTRFS - добавьте еще параметр ssd, типа "defaults,noatime,discard,ssd"

Если вы обнаружили, что какой-то софт (например, почтовый клиент mutt, и некоторые софтины для бэкапов) стал косячно работать - замените параметр noatime на relatime (в этом случае будет записываться время доступа к файлу, но только если оно не новее, чем время изменения файла).

Также рекомендуется сделать выравнивание разделов http://blog.nuclex-games.com/2009/12...-ssd-on-linux/, но это опасно и может привести к потере данных, делайте на свой страх и риск.


1.2. Создание RAM-дисков

Рекомендуется монтировать /tmp, /var/log, и /var/tmp в оперативную память.
/tmp - желательно всегда,
/var/log - только если вам не нужны логи после перезагрузки компьютера,
/var/tmp - только если вам пофиг на кэш некоторого софта (например, браузера konqueror, и окружения KDE в целом).

Для монтирования этих разделов в RAM добавьте эти строки в /etc/fstab:
Код:
 tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
 tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
Если у вас есть systemd, то раздел /tmp в RAM лучше монтировать так:
Код:
 mkdir -p /etc/systemd/system/local-fs.target.wants
 ln -s /usr/lib/systemd/system/tmp.mount /etc/systemd/system/local-fs.target.wants/tmp.mount
Если у вас нет файла /etc/systemd/system/local-fs.target.wants/tmp.mount, или если нет systemd, то добавьте в /etc/fstab такую строку:
Код:
 tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
По умолчанию RAM-диски создаются с максимальным размером 50% от всей оперативной памяти, если вы хотите их сильнее ограничить (или наоборот, увеличить), то добавьте к параметрам монтирования параметр size, например, так:
Код:
 tmpfs /tmp tmpfs defaults,noatime,mode=1777,size=4096M 0 0
 tmpfs /var/tmp tmpfs defaults,noatime,mode=1777,size=512M 0 0
 tmpfs /var/log tmpfs defaults,noatime,mode=0755,size=1024M 0 0

2. Системные настройки

2.1. Отключение readahead (упреждающего чтения данных в кэш)

На SSD эта функция не нужна, т.к. SSD имеют крайне низкое время поиска (seek time), по сравнению с HDD.

Если у вас есть systemd, отключите readahead так:
Код:
 systemctl disable systemd-readahead-collect.service
 systemctl disable systemd-readahead-replay.service
Если нет systemd, то добавьте эти строки в файл /etc/rc.d/boot.local (или его аналог в вашем дистрибутиве):

Код:
# turn drive caching on, turn readahead off
hdparm -W1a0A0 /dev/sda
вместо /dev/sda укажите обозначение вашего SSD, если оно другое.


2.2. Отключение свопа

Имея кучу гигабайт оперативы и SSD, своп становится бесполезен, всвязи с чем его рекомендуется отключать. Для этого добавьте в /etc/sysctl.conf (или его аналог в вашем дистрибутиве) строку
Код:
vm.swappiness=0
Если вы используете множество софта, требовательного к оперативе, то всей памяти может не хватить, для этого имеет смысл поднять значение swappiness до 1-5, например:
Код:
vm.swappiness=1
Если вы обычно не забиваете всю память софтом, и не пользуетесь гибернацией (я в принципе не рекомендую ей пользоваться, т.к. параноик) то имеет смысл вообще удалить раздел swap, чтобы освободить несколько драгоценных гигабайт места на SSD
И вообще не забивайте свой SSD, чем больше на нём свободного места, тем дольше он проживёт.


2.2. Изменение планировщика ввода-вывода

Обычно по-умолчанию в дистрибутивах используется планировщик CFQ, который неплохо ведёт себя с HDD, но не подходит для SSD. Для SSD лучше подходит планировщик Noop, работающий по простой схеме FIFO ("первый пришёл - первый вышел").

Если у вас в системе нет других дисков, кроме SSD, то нужно добавить параметр elevator=noop в параметры загрузки ядра (ищите в /boot/grub/menu.lst или /boot/grub2/grub.cfg строку с "kernel /vmlinuz-.... root=/.... " или "linuxefi /vmlinuz-.... root=/.... " и дописывайте elevator=noop в её конец. для загрузчика LILO инструкцию сами найдёте).

Если в системе есть другие диски, то добавьте в /etc/rc.d/boot.local (или его аналог) такие строки:
Код:
# noop scheduler for SSD
echo noop > /sys/block/sda/queue/scheduler
вместо sda укажите обозначение вашего SSD, если оно другое.


2.3. Logical Volume Management

если вы используете LVM, то измените в /etc/lvm/lvm.conf параметр issue_discards = 0 на issue_discards = 1
но помните про особенности работы discard в разных SSD (типа samsung 840)! Если вы не уверены в своём SSD, лучше оставить issue_discards = 0.


2.4. 12309

Если вы используете KDE и испытываете тормоза системы при копировании больших файлов, рекомендуется сделать такую настройку: создайте файл /etc/tmpfiles.d/local.conf и пропишите в него строки
Код:
w /sys/kernel/mm/transparent_hugepage/enabled - - - - madvise
w /sys/kernel/mm/transparent_hugepage/defrag - - - - madvise
w /sys/kernel/mm/transparent_hugepage/khugepaged/defrag - - - - 0

3. Настройки софта

3.1. Firefox

Фаерфокс можно настроить так, что он будет хранить свой кэш в RAM-диске (но конфиги, закладки, плагины и т.п. он все равно будет хранить на харде).
Для переноса кэш в рамдиск откройте в адресной строке адрес about:config,
найдите параметр browser.cache.disk.enable и измените на "false"
найдите параметр browser.cache.memory.enable и измените на "true"
найдите параметр browser.cache.memory.max_entry_size и пропишите объём оперативы (в килобайтах), который хотите выделить под кэш. Например, 1024000 для 1 GB, или -1 для автоматического выбора объёма.


Если вы знаете другой популярный софт, который может работать с рамдисками, или знаете другие крутые настройки системы для SSD - вэлкам в каменты.
12309 вне форума   Ответить с цитированием
 

Метки
linux, ssd

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot