Старый 22.02.2014, 20: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 вне форума   Ответить с цитированием
Старый 23.02.2014, 09:57   #2
julpierto
 
Аватар для julpierto
 
Регистрация: 13.09.2011
Сообщений: 18
Репутация: 2
По умолчанию

Мне понравилась вот эта статья, настраивал по ней.
julpierto вне форума   Ответить с цитированием
Старый 23.02.2014, 10:23   #3
SynQ
 
Регистрация: 11.07.2010
Сообщений: 953
Репутация: 352
По умолчанию

Добавлю, user_xattr для ext4 включен по дефолту где-то с версии 3.0.

PS И самое важное, эти настройки не обязательны, и наверно даже не "желательны для всех", а нужны тем, кто понимает, зачем они ему.
ssd будет работать и без оптимизаций, и наверняка не сломается.
Берите хорошие, на проверенных временем контроллерах (sandforce, marvell, самсунг), от производителей, которые сами память делают, а не покупают с рынка. Что-то вроде plextor (они память не делают сами, но по отзывам вполне норм) / sandisk / samsung / toshiba.
SynQ вне форума   Ответить с цитированием
Старый 23.02.2014, 16:11   #4
b3
 
Аватар для b3
 
Регистрация: 18.08.2010
Сообщений: 353
Репутация: 105
По умолчанию

Цитата:
И вообще не забивайте свой SSD, чем больше на нём свободного места, тем дольше он проживёт.
Вот чисто моё имхо но мне статья напоминает бомжа) Не покупайте вообще SSD и ваш простой винт проживет еще дольше... Вам мало тех 2-3 лет что заявлены?) Не забивать винт, какие еще будут рекомендации? Может сократить своё прибывание за компом?)
b3 вне форума   Ответить с цитированием
Старый 23.02.2014, 16:39   #5
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

забыл добавить.
Важно: не напрягайте SSD частыми записями! Компилируйте сорцы в рамдиске!


> Вам мало тех 2-3 лет что заявлены?)

мой corsair force gt на 480 гб сдох за 3 месяца использования. если бы я пользовался всеми вышеуказанными советами, он с большой вероятностью прожил бы намного дольше.

> Не забивать винт, какие еще будут рекомендации?
не забивать винт рекомендуется для того, чтобы контроллер мог перемещать данные из поюзанных секторов в свободные, тем самым продляя срок службы SSD.

> Может сократить своё прибывание за компом?)

вспомни три основных правила информационной безопасности
1. Не покупайте компьютер.
2. Если вы купили компьютер, не включайте его.
3. Если вы включили компьютер, не пользуйтесь им.
12309 вне форума   Ответить с цитированием
Старый 27.02.2014, 12:43   #6
AiR0
 
Регистрация: 23.09.2013
Сообщений: 37
Репутация: 0
По умолчанию

из всего рекомендованного использовал только atime, работаю во freebsd
с разницей в год умерло уже 2 ssd, 1 - kingston, 2 - ocz, после смерти первого, делаю регулярные бэкапы, сейчас взял intel
AiR0 вне форума   Ответить с цитированием
Старый 24.01.2017, 20:49   #7
CfK
 
Аватар для CfK
 
Регистрация: 07.05.2015
Сообщений: 5
Репутация: 0
По умолчанию

1. Использовать F2FS для SSD, EMMC, etc
2. Почти все, что написано можно опровергнуть, за исключением ramdisk и noatime.
3. ZRAM (опция ядра CONFIG_ZRAM + ZPOOL + CONFIG_ZBUD + CONFIG_Z3FOLD).
4. ZSWAP (опция ядра CONFIG_ZSWAP)
5. ZSMALLOC for SLAB (опция ядра CONFIG_ZSMALLOC + CONFIG_SLAB) (@arm only!, x86 - amd64 - use SLUB!)
4. KSM (опция ядра CONFIG_KSM не совсем по топику, но тоже хорошо).
5. Для генты есть https://wiki.gentoo.org/wiki/Zram.
С сжатием lz4 получаем 3х кратное увеличение объма рамдиска. итого на 16гб имеею:
Цитата:
# /tmp ; 2G used, expanded to 6G with lz4
# If you use this, you should put zram-init into the boot runlevel,
# and services using /tmp should be in the default runlevel and/or have
# rc_need=zram-init in their /etc/conf.d/... file
type0=/tmp
flag0=ext4
size0=6144
opts0="nodev,nouser,noatime"
mode0=1777
owgr0= # No reason to change the default "root:root"
notr0= # keep the default on linux-3.15 or newer
maxs0=2
algo0=lz4

# /var/tmp ; 4G used, expanded to 12G with lz4
type1=/var/tmp
flag1=ext4
size1=12880
opts1="nodev,nouser,noatime"
mode1=1777
owgr1= # No reason to change the default "root:root"
notr1= # keep the default on linux-3.15 or newer
maxs1=2
algo1=lz4
, остается еще 10. Вполне достаточно.
6. Остальные нюансы можно прочесть https://wiki.archlinux.org/index.php/ZRAM
__________________
BTW - LAVABIT RETURNS 20 Jan 2k17! so, i believe, i can restore my old acc =)

Последний раз редактировалось CfK; 24.01.2017 в 21:08..
CfK вне форума   Ответить с цитированием
Ответ

Метки
linux, ssd

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

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

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

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

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



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