Мини-HOWTO: "Linux и питание от батарей" |
---|
Пред. | | След. |
Изменение некоторых настроек системы
После установки Linux-а на своем лэптопе я обнаружил, что он обращается к жесткому диску каждые несколько секунд, даже если нет пользователей, вошедших в систему. Соответственно, жесткий диск не мог войти в режим ожидания. Снижение активности жесткого диска может намного увеличить время работы на батареях. Поэтому я собрал эту коллекцию рецептов.
Все они проверены на RedHat 4.1, в вашем дистрибутиве пути к файлам конфигурации могут отличаться. (если так, дайте мне знать.)
Демон crond и atrun
Проверьте файл /etc/crontab и убедитесь в том, что он запускается каждую минуту. Часто здесь можно найти atrun.
С помощью команды at реализуется отложенный запуск команд. Некоторые
системы Linux используют для этого выделенный демон atd, другие (например
RedHat) используют crond для запуска раз в минуту atrun.
На большинстве систем не требуется запуск команд at точно в определенное
время. Поэтому, если в вашем /etc/crontab есть строки
# Запускаем задания at каждую минуту
* * * * * root [ -x /usr/sbin/atrun ] && /usr/sbin/atrun |
то можно смело изменить их на
# Запускаем задания at каждый час
00 * * * * root [ -x /usr/sbin/atrun ] && /usr/sbin/atrun |
Для получения более подробной информации читайте man 5 crontab. Некоторые
могут нормально работать вообще без демона crond, так что, если вы знаете,
что делаете, то можете вообще его выключить.
Демон update / bdflush
Linux работает со множеством одновременно открытых файлов, поэтому система
должна быть уверена, что изменения, произведенные в них, будут сохранены на
жесткий диск, как можно быстрее. В случае аварии системы эти изменения
будут потеряны.
Этим занимается демон update / bdflush. (Это имена одной программы, для
запуска демона можно использовать и то, и другое.) По умолчанию flush
вызывается каждые 5 секунд и sync - каждые 30 секунд.
Это приводило к постоянному доступу к моему диску Fujitsu. (Похоже, этот
жесткий диск сбрасывает (записывает) свой кэш даже при отсутствии в нем
каких-либо изменений. Впрочем, это зависит от производителя - по сообщениям
других некоторые диски переходят в режим ожидания даже без нижеприведенных
изменений.)
Сбои Linux теперь - это не такое уж частое явление, поэтому я сменил оба
значения на 3600 секунд (= один час), что не вызвало никаких проблем и
остановило постоянный доступ к диску. (Но если сейчас моя система аварийно
завершит работу, то испорченных файлов будет, конечно, больше)
RedHat 4.1: B /etc/inittab, измените вызов update на:
ud::once:/sbin/update -s 3600 -f 3600 |
Suse 4.4.1: update вызывается из /sbin/init.d/boot.
Slackware: update вызывается из /etc/rc.d/rc.S.
Если хотите углубиться в подробности - читайте man update.
Демон syslogd
Демон syslogd отвечает за различные файлы системных журналов Linux,
находящихся в каталоге /var/log/. По умолчанию syslogd сбрасывает на диск
(sync) файлы журналов всякий раз после записи в них системного сообщения.
Вы можете отключить сброс, поставив перед именем файла в файле
/etc/syslog.conf знак "минус". Вот пример syslog.conf из моей системы:
# Ведем журнал всех сообщений (кроме почтовых) уровня info и выше.
# Не включаем в журнал сообщения об аутентификации!
*.info;mail.none;authpriv.none -/var/log/messages |
Опять таки, в случае аварии системы, сообщение о возникшей проблеме, скорее
всего, не будет записано на диск. Дилемма...
Команда init
Во время загрузки начальные процессы и демоны запускаются командой init.
Эта команда (опять таки) вызывает sync перед созданием любого нового
процесса.
Это можно изменить, убрав вызов sync() в
исходных текстах и перекомпилировав init.
Чтобы избежать проблемы с потерянными файловыми буферами, следует добавить в
скрипт /etc/rc.d/init.d/halt перед отключением файловых систем вызов sync.
Раздел подкачки
Раздел подкачки Linux используется для увеличения размера физической памяти
за счет виртуальной памяти, что, опять-таки, может послужить причиной
доступа к диску. Если на вашем лэптопе много памяти, или используемые вами
приложения довольно просты (подумайте о vi),то, возможно, вам стоит
подумать об отключении этого раздела.
Само собой, решение должно зависеть от того, что вы собираетесь делать. 4 - 8 Мб памяти однозначно недостаточно для работы без раздела подкачки. 8 - 16 Мб достаточно для работы текстовых консольных приложений, если вы, конечно, не используете активно многозадачность. Работа в X-Windows требует большого количества памяти - если размер памяти вашего компьютера не намного превышает 16 мб, то отключать раздел подкачки не следует.
(Отступление: Мой лэптоп с 16 мб и отключенным разделом подкачки
одновременно работал с emacs, четырьмя оболочками bash и компилировал ядро,
не испытывая недостатка в памяти. Этого для меня достаточно.)
Если вы уже установили раздел подкачки, то можете отключить его, поставив
символ решетки перед командой командой swapon, вызываемой из
/etc/rc.d/rc.sysinit. Если вы не хотите насовсем отключать раздел подкачки,
то можно заставить систему спрашивать вас во время загрузки, следует ли
использовать подкачку. В файле /etc/rc.d/rc.sysinit (RedHat 4.1) или
/sbin/init.d/boot (Suse 4.4.1):
echo "Должна ли система использовать подкачку?"
echo " 0: Нет."
echo " 1: Да."
/bin/echo "Ваш выбор: \c"
read SWAPCHOICE
case "$SWAPCHOICE" in
0)
# Ничего не делаем.
echo "(Разделы подкачки отключены)"
;;
*)
# Включаем подкачку.
echo "Подключение разделов подкачки"
swapon -a
esac |
В этом случае можно включать подкачку при работе от сети и не использовать при работе на батареях.
Демон apache httpd
Я использую мой лэптоп для написания и отладки cgi скриптов, поэтому на нем
работает локальный веб-сервер. В стандартной конфигурации он слишком велик,
если все, что вам нужно - просто проверять, работает ли скрипт или, иногда,
как выглядит страничка.
Просто смените в файле httpd.conf значения MinSpareServers и StartServers
на 1. Этого вполне достаточно для локального тестирования.
Если вы хотите выключить ведение веб-сервером журнала, то перекомпилируйте
демон httpd. За подробностями обращайтесь к документации.
Grant Taylor перекомпилировал ведение журнала и обнаружил, что от этого
apache не перестал "дергать" диск. Поэтому я нашел, как мне кажется, лучшее
решение - запуск apache не демоном, а через inetd." Читайте man inetd.
Пакет XFree86
Настройка XFree86 для лэптопов - это отдельная история. Я, опять таки,
отсылаю вас к Linux Laptop page, где можно найти помощь по этому вопросу.
Гашение экрана X консоли всего лишь очищает его (делает черным), но не выключает. Как было отмечено в
"Примечании о выключении консоли"
, для настройки гашения можно использовать опцию dpms команды xset
Впрочем, эта возможность зависит от графического адаптера и bios вашего лэптопа.
Grant Taylor использовал следующие настройки для выключения экрана своего
лэптопа, с помощью apmd и хранителя экрана:
# Запускаем xscreensaver, с помощью программы APM
xscreensaver -timeout 5 \
-xrm xscreensaver.programs:apm_standby \
-xrm xscreensaver.colorPrograms:apm_standby & |
где apm_standby - это suid perl скрипт, позволяющий лишь некоторым
пользователям запускать apm -S.
Редактор emacs
Ладно, emacs - это не редактор, а стиль жизни. Вот подсказка Florent
Chabaud: "Если вы использовали emacs, то, может быть, заметили, что этот
редактор кое-что сохраняет автоматически. Эта возможность, конечно, очень
полезна и не должна быть выключена, но ее параметры могут быть немного
подстроены под лэптоп.
Я добавил в файл
/usr/share/emacs/site-lisp/site-start.el
следующие две строки:
(setq auto-save-interval 2500)
(setq auto-save-timeout nil) |
При этом выключается автосохранение по времени, и включается автосохранение по количеству нажатий (2500) на клавиши. Если вы набираете текст, то можно уменьшить количество нажатий; для программирования же это в самый раз. Так как считается любое нажатие (вверх, вниз, влево, удаление символа, вставка из буфера, и т. д.), то лимит в 2500 нажатий достигается довольно быстро."
Как найти другие пути оптимизации
Если ваша система Linux все равно слишком часто обращается к диску, то с
помощью команды ps ax можно выяснить, что происходит внутри. Она выводит
список процессов с полным именем каждого, иногда даже хватает места для
аргументов командной строки.
После этого прочитайте руководство (man) по
каждому процессу, с целью найти способ, изменить его поведение. Так вы
наверняка обнаружите процесс, виновный в частом обращении к диску. Команда
strace также может пригодиться.
Пожалуйста, пошлите мне письмо, если найдете что-то новое.
Пред. | Начало | След. |
Улучшенное управление питанием (Advanced Power Management) | | Приложение |