среда, 12 августа 2009 г.

x200s. HDD Spin down.

(Продолжение. Начало статьи)


Вреден ли для HDD режим spin down?

В ThinkPad x200s используется HDD Hitachi Travelstar 5K320 HTS543225L9SA00.

Этот диск обеспечивает не менее 600 000 нормальных циклов load/unloads.

В среднем ноутбук работает от батареи до 6 часов в сутки. Если считать, что диск останавливается/раскручивается 1 раз в минуту, значит его ресурса хватит не менее, чем на
600 000/(1*60*6*365) = 4,57 года.

Нечего париться по поводу ограниченного ресурса HDD. Ведь никто же не возмущается, что ресурс батареи всего 250 циклов заряд/разряд. А это вообще меньше года.


Нужно ли останавливать диск?

Вопрос запутан. Разработчики и сопровожденцы Gnome Power Manager утверждают, что не нужно. Якобы современные диски имеют такой хороший режим powersave, что и останавливать их смысла нет.

Вот данные взятые из той же спецификации на Hitachi Travelstar 5K320.

Watts (RMS Typical)
Performance Idle average1,7
Active Idle average0,8
Low Power Idle average0,55
Read average1,8
Write average1,8
Seek average2,2
Standby0,2
Sleep0,1
Startup (maximum peak)5,0
Average from power on toready3,8


На основании приведенных данных видно, что разница между Low Power Idle average и Standby составляет 0,35 Вт.

Простой расчет показывает, что перевод диска в режим Standby начинает давать экономию энергии на 12-й секунде, что наглядно показано на графике:


Кто раскручивает диск?

Чтобы проверить какие программы обращаются к диску легче всего запустить программу iotop,
которая в реальном времени это покажет. Или собрать статистику в файл и проанализировать, кто чаще образался к диску:
$ iotop -bod 30 > /tmp/iodisk.log
В таблицу сведены основные источники, вызывающие регулярные раскрутки HDD, и методы борьбы борьбы с ними.
Запись в logПо умолчанию система постоянно пишет в log файлы, которые находятся в каталоге /var/log.

Ubuntu 9.04: Я перенёс каталоги /tmp и /var/tmp в RAM и отключил логгирование в режиме работы от батареи с помощью настройки laptop-mode

Ubuntu 10.04 и выше: Для логирования в этой версии применена программа rsyslog. При работе от батарей я просто отключаю (в скрипте pm-utils) все логирование командой $ service rsyslog stop

wpa_supplicantUbuntu 9.04: wpa_supplicant раз в минуту записывает диагностику в /var/log/wpa_supplicant.log

Этот драйвер пока не настраивается через /etc/syslog.conf. Как перенаправить вывод описано здесь.


Ubuntu 10.04: В этой версии Ubuntu ничего с wpa_supplicant делать не нужно.


firefoxС точки зрения powersaving одна из самых злобных программ.

Наиболее эффективный метод - перенос User Profile в оперативную память.

gnome-power-managerНе знаю что уж, что там она менеджирует. По моему она просто показывает сколько осталось батарейки и выводит график заряда/разряда. (Шютка) За это она раз в минуту обращается к диску.

Что с ней делать пока не придумал. Может кто подскажет?

Vetal1950 предложил элегантное решение. Добавить в /etc/fstab команду монтирования:
tmpfs /var/lib/upower tmpfs defaults,noatime,nodiratime 0 0


После применения указанных мер, диск в моем ноутбуке, когда он находится в состоянии idle, просыпается примерно 1 раз за 3 минуты.



x200s/x220. Powersave. Firefox.

(Продолжение. Начало статьи)

Update:
  • После перехода на Ubuntu 9.04 и firefox 3.5 Shiretoko внесены исправления в скрипт: изменено имя программы с firefox на firefox-3.5.
  • Проверено на Ubuntu 10.04
Если в компьютере установлен SSD накопитель, то ничего этого делать не нужно

Firefox 3.x использует базу данных sqlite, которая генерирует очень много событий записи на диск.

Чтобы уменьшить обращения к диску, необходимо сделать следующее:

  1. Разместить firefox cache в оперативной памяти

    Для этого:
    1. Перенести в RAM директорию /tmp

    2. Перенести cache firefox в /tmp/firefox.
      В строке адреса пишем about:config
      Далее нажимем правуб кнопку мыши и добавляем строковую переменную:
      browser.cache.disk.parent_directory
      и присвоить ей значение:
      /tmp/firefox

  2. Размещаем весь профиль пользователя в RAM.

    Этот способ более радикальный, нежели предыдцщий, но и, соответственно, более сложный. Поэтому распечатайте эту инструкцию или скопируйте ее на диск и откройте в OO Writer.
    1. Перенести в RAM директорию /tmp

    2. Создать каталог для профиля пользователя в firefox
      $mkdir /tmp/firefox
    3. Создать новый профиль. Я назвал его RAM и разместил в каталоге /tmp/firefox
      $/usr/lib/firefox/firefox -ProfileManager

    4. Закрываем firefox.
    5. Скопировать текущий профиль в каталог /tmp/firefox
      $shopt -s dotglob $cp -a ~/.mozilla/firefox/40ev7h33.default/* /tmp/firefox
      Расположение текущего профиля указано в ~/.mozilla/firefox/profiles.ini
    6. Создаем скрипт /etc/init.d/ff-profile.sh:
      #! /bin/sh
      # This script copies the firefox user profile
      #  from the directory $DSK_PROFILE
      #  to the directory $RAM_PROFILE
      #  after the computer power up
      #  and back before power down
      # 
      #  v0.12 - minor changes for firefox control firefox cache
      #  v0.11 - minor changes for firefox 3.5 and Ubuntu 9.04
      #  v0.1 - initial in Ubuntu 8.04
      
      # define firefox name
      #FF=firefox-3.5
      FF=firefox
      
      # define how old cache in days
      OLDCACHE=2
      
      # where firefox profile
      RAM_PROFILE=/tmp/firefox
      DSK_PROFILE=/root/.mozilla/$FF/ram.profile
      
      FLG_DEBUG=1
      OUT_DEBUG=/var/log/ff-profile.tst
      
      shopt -s dotglob
      
      case "$1" in
        start)
          if [ $FLG_DEBUG -eq 1 ]
            then echo "$1: ff-profile.sh started" >> $OUT_DEBUG
          fi
          if ! [ -d $RAM_PROFILE ] 
            then 
              mkdir -p $RAM_PROFILE
              chmod 777 $RAM_PROFILE
                if [ $FLG_DEBUG -eq 1 ]
                  then echo "$1: creating  $RAM_PROFILE" >> $OUT_DEBUG
                fi
          fi
          if [ $FLG_DEBUG -eq 1 ]
            then echo "$1: copy $DSK_PROFILE/* $RAM_PROFILE " >> $OUT_DEBUG
          fi
          # remove old cache
          find $DSK_PROFILE/Cache* -mtime +$OLDCACHE -exec rm {} \;
      
          cp -a $DSK_PROFILE/* $RAM_PROFILE >> $OUT_DEBUG
          ;;
        stop)
          if [ $FLG_DEBUG -eq 1 ]
            then echo "$1: ff-profile.sh stoped" >> $OUT_DEBUG
          fi
          if ! [ -d $DSK_PROFILE ] 
            then 
              mkdir -p $DSK_PROFILE
              chown 777 $DSK_PROFILE
              if [ $FLG_DEBUG -eq 1 ]
                then echo "$1: creating  $DSK_PROFILE" >> $OUT_DEBUG
              fi
          fi
          if [ $FLG_DEBUG -eq 1 ]
            then echo "$1: copy $RAM_PROFILE/* $DSK_PROFILE " >> $OUT_DEBUG
          fi
          cp -a $RAM_PROFILE/* $DSK_PROFILE
          ;;
      esac
      
      shopt -u dotglob
      
      exit 0
    7. Назначаем ему права, пользователя, и делаем на него ссылку автозапуска и остановки
      cd /etc/init.d $sudo chmod 755 ff-profile.sh $sudo chown root:root ff-profile.sh $sudo update-rc.d ff-profile.sh defaults
    8. Открываем редактор меню (System->Preferences->Main Menu).
      Заменяем команду запуска firefox (Application->Internet->Firefox Web Browser->Properties) на /usr/lib/firefox/firefox -P RAM

      Перезагружаем компьютер. Проверяем работу.

  3. В Firefox в меню Правка -> Настройки -> Защита снять галку с пункта "Блокировать сайты, подозреваемые в имитации других сайтов"

  4. Динамические сайты с flash анимацией и java-script вносят большую долю в увеличение потребления энергии.

    Для блокировки на страницах java - установить в firefox adblock plus и заблокировать в нем показ соответствующих элементов http страниц.

    Для блокировки flash - установить Flashblock

    Это позволяет сэкономить до 1,5 Вт.

вторник, 11 августа 2009 г.

x200s. Управление вентилятором.

(Продолжение. Начало статьи)

Если установлена последняя версия BIOS 3.08 от 2009.09.07, то устанавливать tpfun нет необходимости.

Хотя я и писал, что не стоит трогать вентилятор, поскольку это жизненно важный элемент ноутбука, руки все равно чешутся.

Я установил ThinkPad Fan Control в соответствии с инструкцией указанной на домашней странице программы.

Создал файл конфигурации lenovo_74663tg:
# Fan profile for tpfand
# For Lenovo 7466-3TG
# created on  2009-08-10 21:28:17.152556
# by an http://axa-ru.blogspot.com
#
0. CPU = 0:0 47:2 63:3 71:5 75:255 
1. MiniPCI = 0:0 47:2 59:3 65:5 68:255
2. Sensor 2 = 0:0
3. GPU = 0:0 53:2 65:3 71:5 74:255
4. Bat0 = 0:0 43:2 52:3 57:5 60:255
5. Sensor 5 = 0:0 
6. Bat0 = 0:0 43:2 52:3 57:5 60:255
7. Sensor 7 = 0:0
8. Northbridge = 0:0 52:2 62:3 67:5 70:255
9. RAM? = 0:0 52:2 62:3 67:5 70:255

hysteresis = 2
interval_speed = 2
interval_duration = 500.000000
interval_delay = 5000.000000

и разместил его в каталоге /usr/share/tpfand/models/by-id.



Файл конфигурации зависит от модели ноута. У меня 7466-3TG
С большой вероятностью он подойдет для следующих моделей (собранных на той же системной плате):

7466- 3Tx, 3Ux
7469- 5Fx, 7Lx, 7Mx, 7Nx, 7Px, 7Rx, 7Sx, 7Tx, 7Ux, 7Vx, 7Xx
7470- 6Jx, 6Kx

Вот собственно и все. Экономия энергии от этого небольшая. По моим оценкам менее 0,1 Вт.

Для справки температурные режимы процессора:
Обычная температура в режиме Idle30-50°C
Рабочая, при полной утилизации процессора60-70°C
Максимальная температура100°C
Критическая температура 125°C



PS. TpFan собран для Ubuntu 9.04 и в Ubuntu 11.10 пакеты не устанавливаются.
Для экспериментаторов я переупаковал пакеты:

tpfan-admin_0.96-ubuntu1_all_patched.deb
tpfand_0.95-ubuntu1_all_patched.deb
tpfand-profiles_20090309-ubuntu1_all.deb

Если у кого появится желание попробовать, отпишитесь по результатам.

Updated 24/12/2011