Скорость вентилятора на Lenovo ThinkPad T61 (при автоматическом управлении (встроенным контроллером))

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
Аватара пользователя
sgfault
Сообщения: 586
Статус: -
Контактная информация:

Скорость вентилятора на Lenovo ThinkPad T61

Сообщение sgfault »

Здравствуйте.

Когда я пользовался Debian Squeeze, вентилятор работал тихо (видимо, это было 2.5к оборотов), и включался на 3к оборотов только, например, когда Фаерфокс начинал расходовать 100% процессора. Потом я поставил Wheezy и примерно в то же время второй жесткий диск (utlra bay). И теперь вентилятор почти всегда работает на 3к. Причем температуры, как я теперь понял, очень низкие (процессор ~39, видео ~54, остальное в районе 45, диск ~40 (по смарту)), но он обороты не снижает, как было раньше. Но если выключить питание (те питание от батареи), то вентилятор либо вообще останавливается, либо снижает обороты и появляется писк. Писк я заметил давно и первый раз в винде (если не включено что-то в usb). Как я понял, это как-то связано с понижением частоты то ли процесора, то ли еще чего-то. Одним словом, если писк есть - вентилятор всегда работал (да и сейчас работает) медленно и тихо. Под линуксом, как я уже написал, писк есть только при питании от батареи.

Сейчас, случайно заглянув в linux-kernel-doc/Documentation/laptops/thinkpad-acpi.txt, я увидел, что, например, для X40 вентилятор включался при cpu 56 и hdd 46, а выключался при cpu 49 и hdd 41. У меня же он работает даже при cpu 40, а где-то при cpu 40-45 включается на максимум - 3к оборотов. Если я откл/вкл питание, то он сбрасывает обороты на какое-то время.

Под виндой во-прежнему все работает как раньше, но там установлен Ленововский Power Manager, и, возможно, он сам всем управляет. Настраивать под линуксом ручное управление вентилятором (через fancontrol, кажется?) я не хочу. Собственно, я хотел спросить, может кто-нибудь знает, почему автоматическое управление при включенном питании может работать некорректно (неправильные значения повышения скорости)?

ЗЫ. Да и еще: когда я переключаю на питание от батареи на Wheezy, кто-то изменяет apm дисков (они начинают постоянно парковать головки). Может это имеет какое-то отношение и к вентилятору?

UPD.
Вот пример:
Включаю вручную скорость 2.5к:

Код: Выделить всё

# echo 'level 2' >| /proc/acpi/ibm/fan


Вот показания датчиков:

Код: Выделить всё

# sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +48.0°C  (crit = +127.0°C)
temp2:        +40.0°C  (crit = +100.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +39.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:       +39.0°C  (high = +105.0°C, crit = +105.0°C)

thinkpad-isa-0000
Adapter: ISA adapter
fan1:        2524 RPM
temp1:        +48.0°C
temp2:        +45.0°C
temp3:        +34.0°C
temp4:        +52.0°C
temp5:        +50.0°C
temp6:            N/A
temp7:        +33.0°C
temp8:            N/A
temp9:        +38.0°C
temp10:       +46.0°C
temp11:       +43.0°C
temp12:           N/A
temp13:           N/A
temp14:           N/A
temp15:           N/A
temp16:           N/A

nouveau-pci-0100
Adapter: PCI adapter
temp1:        +55.0°C  (high = +100.0°C, crit = +110.0°C)

# smartctl -A /dev/sda
smartctl 5.41 2011-06-09 r3365 [i686-linux-3.2.0-4-686-pae] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0027   186   179   021    Pre-fail  Always       -       1675
  4 Start_Stop_Count        0x0032   098   098   000    Old_age   Always       -       2252
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   088   088   000    Old_age   Always       -       8800
 10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   100   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   098   098   000    Old_age   Always       -       2123
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       188
193 Load_Cycle_Count        0x0032   186   186   000    Old_age   Always       -       43320
194 Temperature_Celsius     0x0022   111   094   000    Old_age   Always       -       36
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       2
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline      -       0

# smartctl -A /dev/sdb
smartctl 5.41 2011-06-09 r3365 [i686-linux-3.2.0-4-686-pae] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   200   200   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0003   191   185   021    Pre-fail  Always       -       1441
  4 Start_Stop_Count        0x0032   097   097   000    Old_age   Always       -       3021
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   200   200   051    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   087   087   000    Old_age   Always       -       10108
 10 Spin_Retry_Count        0x0013   100   100   051    Pre-fail  Always       -       0
 11 Calibration_Retry_Count 0x0012   100   100   051    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   098   098   000    Old_age   Always       -       2105
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       454
193 Load_Cycle_Count        0x0032   040   040   000    Old_age   Always       -       480238
194 Temperature_Celsius     0x0022   111   088   000    Old_age   Always       -       36
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0012   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   200   200   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       17
200 Multi_Zone_Error_Rate   0x0009   200   200   051    Pre-fail  Offline      -       0


Включаю автоматическое управление

Код: Выделить всё

# echo 'level auto' >| /proc/acpi/ibm/fan


И результат - вертолет взлетает:

Код: Выделить всё

# sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +48.0°C  (crit = +127.0°C)
temp2:        +39.0°C  (crit = +100.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +39.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:       +39.0°C  (high = +105.0°C, crit = +105.0°C)

thinkpad-isa-0000
Adapter: ISA adapter
fan1:        3170 RPM
temp1:        +48.0°C
temp2:        +45.0°C
temp3:        +34.0°C
temp4:        +52.0°C
temp5:        +50.0°C
temp6:            N/A
temp7:        +33.0°C
temp8:            N/A
temp9:        +38.0°C
temp10:       +46.0°C
temp11:       +43.0°C
temp12:           N/A
temp13:           N/A
temp14:           N/A
temp15:           N/A
temp16:           N/A

nouveau-pci-0100
Adapter: PCI adapter
temp1:        +55.0°C  (high = +100.0°C, crit = +110.0°C)


Upd2.
А если отключить питание, то вертолет снова приземляется:

Код: Выделить всё

# sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +48.0°C  (crit = +127.0°C)
temp2:        +40.0°C  (crit = +100.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +41.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:       +41.0°C  (high = +105.0°C, crit = +105.0°C)

thinkpad-isa-0000
Adapter: ISA adapter
fan1:        2432 RPM
temp1:        +48.0°C
temp2:        +44.0°C
temp3:        +34.0°C
temp4:        +52.0°C
temp5:        +50.0°C
temp6:            N/A
temp7:        +33.0°C
temp8:            N/A
temp9:        +38.0°C
temp10:       +46.0°C
temp11:       +43.0°C
temp12:           N/A
temp13:           N/A
temp14:           N/A
temp15:           N/A
temp16:           N/A

nouveau-pci-0100
Adapter: PCI adapter
temp1:        +55.0°C  (high = +100.0°C, crit = +110.0°C)

И кто-то снижает APM дисков:

Код: Выделить всё

# hdparm -B /dev/sda

/dev/sda:
 APM_level      = 127
# hdparm -B /dev/sdb

/dev/sdb:
 APM_level      = 127
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 876
ОС: gentoo

Re: Скорость вентилятора на Lenovo ThinkPad T61

Сообщение vr13 »

sgfault писал(а):
13.04.2013 15:24
Когда я пользовался Debian Squeeze, вентилятор работал тихо (видимо, это было 2.5к оборотов), и включался на 3к оборотов только, например, когда Фаерфокс начинал расходовать 100% процессора. Потом я поставил Wheezy и примерно в то же время второй жесткий диск (utlra bay). И теперь вентилятор почти всегда работает на 3к

для thinkpad есть маленькая утилита, называемая thinkfan (должен быть одноименный пакет), которая несложно настраивается и призвана решать проблему с переменной скоростью вентилятора в зависимости от температуры внутри лэптопа

для t420 в моей текущей инсталляции (windows, правда, не установлена) без thinkfan вентилятор работает в двух режимах: ~1800rpm при температуре tCPU < 40C и ~3500rpm - в противном случае. thinkfan регулирует более плавно, что задается конфигурацией: от 0rpm до ~6000rpm при экстремальной перегрузке процессора. однако был замечен глюк - иногда (не смог выявить закономерности) после выхода из suspend, вентилятор перестает крутиться вообще, в результате, ноутбук перегревается и виснет. поскольку ошибка спонтанная, багрепорта писать не стал, и теперь по умолчанию thinkfan не работает, а когда интенсивно и долго работает процессор, я его руками включаю и стараюсь не забыть потом выключить :)

ЗЫ. Да и еще: когда я переключаю на питание от батареи на Wheezy, кто-то изменяет apm дисков (они начинают постоянно парковать головки). Может это имеет какое-то отношение и к вентилятору?

скорее всего это отдельная фича thinkpad: называется hdaps (hard drive active protection system). мониторится и управляется ядром (есть одноименный модуль), также есть несколько userspace-утилит, которые графически отображают состояние. я не придумал, надо мне это или нет, поэтому не пользуюсь и привык к тому, что при батареечной работе диск паркуется, когда ничего не делает
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -
Контактная информация:

Re: Скорость вентилятора на Lenovo ThinkPad T61

Сообщение sgfault »

vr13 писал(а):
13.04.2013 16:45
sgfault писал(а):
13.04.2013 15:24
Когда я пользовался Debian Squeeze, вентилятор работал тихо (видимо, это было 2.5к оборотов), и включался на 3к оборотов только, например, когда Фаерфокс начинал расходовать 100% процессора. Потом я поставил Wheezy и примерно в то же время второй жесткий диск (utlra bay). И теперь вентилятор почти всегда работает на 3к

для thinkpad есть маленькая утилита, называемая thinkfan (должен быть одноименный пакет), которая несложно настраивается и призвана решать проблему с переменной скоростью вентилятора в зависимости от температуры внутри лэптопа

для t420 в моей текущей инсталляции (windows, правда, не установлена) без thinkfan вентилятор работает в двух режимах: ~1800rpm при температуре tCPU < 40C и ~3500rpm - в противном случае. thinkfan регулирует более плавно, что задается конфигурацией: от 0rpm до ~6000rpm при экстремальной перегрузке процессора. однако был замечен глюк - иногда (не смог выявить закономерности) после выхода из suspend, вентилятор перестает крутиться вообще, в результате, ноутбук перегревается и виснет. поскольку ошибка спонтанная, багрепорта писать не стал, и теперь по умолчанию thinkfan не работает, а когда интенсивно и долго работает процессор, я его руками включаю и стараюсь не забыть потом выключить :)


Спасибо за совет. Видимо, придется попробовать в качестве временного решения, но тем не менее: ведь в squeeze такого не было. На той же самой (ээ.. кажется) версии БИОСа и EC. Значит что-то изменилось в линуксе? Видимо, в ядре? Я просто не знаю, как работает ACPI, и поэтому не могу даже предположить.

По поводу глюка: как я понимаю, thinkfan требует ручного управления вентилятором (fan_control=1 для thinkpad_acpi и 'level' не 'auto' в /proc/acpi/ibm/fan)? Если так, то вы не пробовали во время resume сначала включать 'auto' режим ('echo level auto' > /proc/acpi/ibm/fan), а потом возвращать в ручной? Или даже ставить auto перед suspend-ом, и отключать после успешного resume. Может, в auto режиме EC сможет правильно перезапустить вентилятор, а потом уже у него можно и забрать управление.

vr13 писал(а):
13.04.2013 16:45
ЗЫ. Да и еще: когда я переключаю на питание от батареи на Wheezy, кто-то изменяет apm дисков (они начинают постоянно парковать головки). Может это имеет какое-то отношение и к вентилятору?

скорее всего это отдельная фича thinkpad: называется hdaps (hard drive active protection system). мониторится и управляется ядром (есть одноименный модуль), также есть несколько userspace-утилит, которые графически отображают состояние. я не придумал, надо мне это или нет, поэтому не пользуюсь и привык к тому, что при батареечной работе диск паркуется, когда ничего не делает

Ээ.. я думаю, это не он. Я им действительно пользуюсь, но, как я понимаю, он предназначен для парковки головок, когда акселерометр показывает ускорение по какой-либо из осей (те ноут падает). И делает он это не через APM, а отправляя диску команду IDLE_IMMEDIATE. Вот, смотрите:

hdaps запущен и AC подключен:

Код: Выделить всё

# cat /sys/devices/platform/smapi/ac_connected
1
# ps -ef | grep hdaps
root      8099     1  0 17:36 ?        00:00:00 /usr/sbin/hdapsd -p/var/run/hdapsd.pid -d sda -s 30 -b -d sdb -l -v -a
root      8150  4050  0 17:37 pts/1    00:00:00 grep hdaps
# lsmod | grep hdaps
hdaps                  13376  1
thinkpad_ec            12753  2 tp_smapi,hdaps
# hdparm -B /dev/sda

/dev/sda:
 APM_level      = 254
# hdparm -B /dev/sdb

/dev/sdb:
 APM_level      = 254


выключаю hdaps:

Код: Выделить всё

# /etc/init.d/hdapsd stop
# modprobe -r hdaps
# ps -ef | grep hdaps
root      8168  4050  0 17:38 pts/1    00:00:00 grep hdaps
# lsmod | grep hdaps


и проверяю APM - он 254:

Код: Выделить всё

# hdparm -B /dev/sda

/dev/sda:
 APM_level      = 254
# hdparm -B /dev/sdb

/dev/sdb:
 APM_level      = 254


А теперь отключаю питание - APM уже 127:

Код: Выделить всё

# cat /sys/devices/platform/smapi/ac_connected
0
# hdparm -B /dev/sda

/dev/sda:
 APM_level      = 127
# hdparm -B /dev/sdb

/dev/sdb:
 APM_level      = 127


включаю назад - APM вернулся на 254:

Код: Выделить всё

# cat /sys/devices/platform/smapi/ac_connected
1
# hdparm -B /dev/sda

/dev/sda:
 APM_level      = 254
# hdparm -B /dev/sdb

/dev/sdb:
 APM_level      = 254


hdpas не был запущен во время вкл/откл питания.

Более того, я абсолютно уверен, что в squeeze такого не было, хотя hdaps-ом я пользовался и там.

Upd.
ЗЫ. Предположительно с hdaps-ом есть тоже один глюк: если он припаркует головки во время входа в suspend, то выход из suspend-а придется делать по SysRq-B. Точнее, ноут зависнет намертво, так и не уйдя в suspend. Я не проверял окончательно, но у меня такое было несколько раз. Собственно, скорей всего, для проверки даже не нужен hdaps: достаточно припарковать в нужный момент вручную, написав время (кажется, в милисекундах) в /sys/class/block/sda/device/unload_heads.

Кроме того, я заметил, что иногда hdaps паркует просто ни с того, ни с сего: ноут просто стоит на столе, и тут бац - припарковал головки. Впрочем, это не имеет большого значение, тк это не мешает и бывает достаточно редко. С другой стороны, если это происхдит из-за какой-то ошибки в вычислении ускорения, то есть вероятность, что из-за этой ошибки он может не припарковать, когда будет действительно нужно. Но с этим я тоже подробно не разбирался..
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 876
ОС: gentoo

Re: Скорость вентилятора на Lenovo ThinkPad T61

Сообщение vr13 »

sgfault писал(а):
13.04.2013 17:55
Спасибо за совет

и вам спасибо за совет и спасибо за объяснение о hdaps. теперь я точно понимаю, что пользоваться этим не буду

По поводу глюка: как я понимаю, thinkfan требует ручного управления вентилятором (fan_control=1 для thinkpad_acpi и 'level' не 'auto' в /proc/acpi/ibm/fan)? Если так, то вы не пробовали во время resume сначала включать 'auto' режим ('echo level auto' > /proc/acpi/ibm/fan), а потом возвращать в ручной? Или даже ставить auto перед suspend-ом, и отключать после успешного resume. Может, в auto режиме EC сможет правильно перезапустить вентилятор, а потом уже у него можно и забрать управление.

про pm quirks я и забыл: хорошая идея. поэкспериментирую на досуге
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4455
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Скорость вентилятора на Lenovo ThinkPad T61

Сообщение Rootlexx »

Вероятно, APM жёстких дисков изменяет скрипт /usr/lib/pm-utils/power.d/95hdparm-apm, вызываемый при подключении/отключении питания.
("man pm-powersave") писал(а):FILES
/etc/pm/power.d/, /usr/lib/pm-utils/power.d/
When you run pm-powersave it combines the scripts in these two
directories and executes them in sorted order. If both directories
contain a script with the same name, the one in /etc/pm/power.d/
has a higher precedence and only this one will be executed.

Therefore to disable a script from /usr/lib/pm-utils/power.d/
simply create an empty file in /etc/pm/power.d/ with the same name
and without the executable bit set.
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -
Контактная информация:

Re: Скорость вентилятора на Lenovo ThinkPad T61

Сообщение sgfault »

Rootlexx писал(а):
13.04.2013 19:26
Вероятно, APM жёстких дисков изменяет скрипт /usr/lib/pm-utils/power.d/95hdparm-apm, вызываемый при подключении/отключении питания.

Да, вы правы. Спасибо.

Надо проверить, может он и до вентиляторов дотянулся. Хотя не очень понятно как, если thinkpad_acpi по дефолту грузится без fan_control.
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4455
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Скорость вентилятора на Lenovo ThinkPad T61

Сообщение Rootlexx »

Может, найдёте что-нибудь полезное: http://thinkwiki.org/wiki/Problem_with_fan_noise .
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -
Контактная информация:

Re: Скорость вентилятора на Lenovo ThinkPad T61

Сообщение sgfault »

Rootlexx писал(а):
13.04.2013 21:33
Может, найдёте что-нибудь полезное: http://thinkwiki.org/wiki/Problem_with_fan_noise .

Спасибо за ссылку.


Тем не менее, прежде чем продолжать с чем-либо (thinkfan или что-то другое), я решил попробовать определить точные значения температуры, когда EC увеличивает скорость вентилятора (желательно, конечно, это было бы сделать и для винды с Ленововским Power Manager-ом).

Для этого я хотел использовать munin, но что-то никак не могу найти, как увеличить частоту сбора данных: раньше она, видимо, всегда была 5 минут, но теперь баг munin/ticket-5 закрыт, а как сделать все равно непонятно. В любом случае, вопрос не в этом.

Я думаю, что для определения более-менее правильных пороговых значений температуры нужна частота обновления где-то секунды 3-5. И, хоть и не совсем по теме, но я бы хотел спросить: какую программу вы бы посоветовали использовать для этого (сбора данных с датчиков (видимо, понадобится еще и SMART для температуры диска) с очень маленьким интервалом (2-5с) и построения графиков, как munin) ?

Или может.. просто пару шелл-скриптов, один из которых запускает sensors и smartctl в цикле и собирает статистику, а другой определяет по этой статистике, какое значение вызвало повышение скорости вентилятора? (но окажутся ли они и правда такими уж простенькими, или все будет "как всегда".. но это уже не вопрос, впрочем :huh: )

Upd. Ааа, munin-async.. кажется, я начинаю понимать.
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 876
ОС: gentoo

Re: Скорость вентилятора на Lenovo ThinkPad T61

Сообщение vr13 »

sgfault писал(а):
13.04.2013 17:55
По поводу глюка: как я понимаю, thinkfan требует ручного управления вентилятором (fan_control=1 для thinkpad_acpi и 'level' не 'auto' в /proc/acpi/ibm/fan)? Если так, то вы не пробовали во время resume сначала включать 'auto' режим ('echo level auto' > /proc/acpi/ibm/fan), а потом возвращать в ручной? Или даже ставить auto перед suspend-ом, и отключать после успешного resume. Может, в auto режиме EC сможет правильно перезапустить вентилятор, а потом уже у него можно и забрать управление.

так и сделал. в течение двух недель проблем не было

спасибо
Спасибо сказали:
Ответить