Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Может быть, по той же причине, по которой Альфа-Банк использует Internet Explorer 6, а не Google Chrome? ;)
Больше я ничего не делал, так как считал, что компьютер должен служить пользователю, а не наоборот, и излишние пляски с бубном — неправильно.
ОС: Gentoo
tune2fs -o journal_data_writeback
©heroOfOurTime
2. Временные файлы
Постоянная запись временных данных на SSD не пойдет ему на пользу, поэтому добавляем в /etc/fstab следующие строки:
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
tmpfs /var/lock tmpfs defaults 0 0
tmpfs /var/spool/postfix tmpfs defaults 0 0
Наши временные файлы буту находиться в ОЗУ, которой на сегодня достаточно, и при перезагрузке удаляться - как и положенно порядочным временным файлам :-).
3. Время последнего доступа к файлам
По-умолчанию, каждый раз, когда мы обращаемся к какому-либо файлу, пишется информация, про время, когда мы его открывали. Понятно, что на SSD это не нужно, да и вообще негативно влияет на производительность дисковой подсистемы.
Нужно добавить опцию noatime к точке монтирования ФС на SSD в /etc/fstab, например у меня:
/dev/disk/by-id/ata-PATRIOT_MEMORY_64GB_SSD_DC0208400CDF00009-part1 / ext2 noatime 0 1
4. Отложенная запись
SSD может пребывать только в 2-х режимах - active и suspend. Когда он active - он кушает много энергии, когда в suspend - мало. Поэтому сейчас увеличиваем время нахождения SSD в suspend режиме:
Добавляем параметр vm.laptop_mode=5 в /etc/sysctl.conf.
Работая в таком режиме, ядро будет по возможности откладывать запись на диск, пока в этом не появится неотложная необходимость. Все буферы, требующие сброса себя на диск, будут терпеливо ожидать своей очереди.
Увеличить перерыв между записями на диск можно также с помощью поднятия таймаута между сбросом «грязных» буферов (части файлов, измененные программой или пользователем, но еще не записанные на диск). По умолчанию, таймаут равняется 5 секундам, увеличим его до 150. ВНИМАНИЕ: Внезапное выключение ноутбука в этот таймаут приведет к потере
незаписанных данных!
Добавляем в /etc/sysctl.conf строку:
vm.dirty_writeback_centisecs = 15000
Если вы используете kpowersaved в качестве программы, управляэщей
энергосбережением (я использую), то kpowersaved перекроет проведенные
изменения. Для предотвращения этого делаем следующее:
редактируем файл /etc/powersave/events
находим строки с
EVENT_ACADAPTER_ONLINE
EVENT_ACADAPTER_OFFLINE
Если они имеют значение "ignore", поменяйте его на
"set_dirty_writeback".
Создайте файл /usr/lib/powersave/scripts/set_dirty_writeback
С таким содержимым:
#!/bin/bash
#
# load helper functions
. ${0%/*}/helper_functions
# set vm parameter to required value
sleep 3
$LOGGER "set dirty_writeback_centisecs to 15000"
echo 15000 > /proc/sys/vm/dirty_writeback_centisecs
# exit in the required manner
$script_RETURN $EV_ID 0 "set_dirty_writeback complete"
EXIT 0
сделайте его исполняемым.
5. Свободное место
Увеличиваем свободное место на SSD(которого и так мало=)) на файловых системах ext2/ext3, путем уменьшения количества резервированных секторов:heroOfOurTime
tune2fs -m2 /dev/sda1
6. Логгирование
Постоянная записть журнала на SSD также не идет ему на пользу, поэтому комментируем все журналы в /etc/syslogd/syslogd.conf (/etc/syslog-ng/syslog-ng.conf)
7. I/O Scheduler
© heroOfOurTime
Для обычных жестких дисков по умолчанию используется логика, которая упорядочивает движение головки под диску, изменяя последовательность записываемых данных. Для SSD это не нужно, поэтому будет весьма разумно выбрать noop в качестве i/o scheduler'а. Это можно сделать выбрать непосредственно в конфиге ядра или передать опцию elevator=noop через груб на этапе загрузки ядра. Или даже через /sys.
В openSUSE это делается так:
yast->Система->Настройки ядра->параметры ядра->Общий I/O планировщик
Выводы
Таким образом мы довольно неплохо увеличим живучесть SSD и время автономной работы ноутбука.
Postscriptum:
Все делается на свой страх и риск.
Все описанные действия проводились на openSUSE 11.0. На других ОС GNU/Linux может быть немного по-другому.
Как я угробил SSD за два месяца